Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions auction/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
'profiles',
'tags',
'livestream',
'browse',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
Expand Down
1 change: 1 addition & 0 deletions auction/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
path('livestream/', include('livestream.urls')),
path('admin/', admin.site.urls),
path('profile/', include('profiles.urls')),
path('browse/', include('browse.urls')),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

urlpatterns += [
Expand Down
Empty file added browse/__init__.py
Empty file.
3 changes: 3 additions & 0 deletions browse/admin.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from django.contrib import admin

# Register your models here.
5 changes: 5 additions & 0 deletions browse/apps.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
from django.apps import AppConfig


class BrowseConfig(AppConfig):
name = 'browse'
Empty file added browse/migrations/__init__.py
Empty file.
3 changes: 3 additions & 0 deletions browse/models.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from django.db import models

# Create your models here.
3 changes: 3 additions & 0 deletions browse/tests.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from django.test import TestCase

# Create your tests here.
9 changes: 9 additions & 0 deletions browse/urls.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
from django.contrib import admin
from django.urls import path, include

from . import views

app_name = 'browse'
urlpatterns = [
path('', views.BrowseView.as_view(), name='search'),
]
47 changes: 47 additions & 0 deletions browse/views.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import json
from profiles.models import Profile
from django.http import HttpResponse
from django.views.generic import View
from django.db.models import Q


class BrowseView(View):
def post(self, request):
print(request.POST)
query_name = request.POST.get('browseQuery', None)
query_filter = request.POST.get('browseFilter', None)
query_set = Profile.objects.all()

print(query_name)
print(query_filter)
if query_filter and not query_name:
print("not query_filter and query_name")
query_set = query_set.filter(
tags__name__contains=query_filter).distinct()
elif not query_filter and query_name:
print("query_filter and not query_name")
query_set = query_set.filter(
Q(user__first_name__contains=query_name) |
Q(user__last_name__contains=query_name)).distinct()
else:
print("all")
query_set = query_set.filter(
Q(user__first_name__contains=query_name) |
Q(user__last_name__contains=query_name),
tags__name__contains=query_filter).distinct()

context = []
for obj in query_set:
tags = list(obj.tags_set.values_list('name', flat=True))
context.append({
'pk': obj.user.pk,
'username': obj.user.username,
'last_name': obj.user.last_name,
'first_name': obj.user.first_name,
'description': obj.biography,
'contact_number': obj.contact_number,
'isAuctioneer': obj.isAuctioneer,
'tags': tags,
})

return HttpResponse(json.dumps(context))
5 changes: 3 additions & 2 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,19 @@
</head>
<body>
<script type="text/javascript">

window.__INITIAL_STATE__ = {
'isAuthenticated' : false,
'username' : '',
'isAuctioneer': false
'isAuctioneer': false,
'credits': ''
}

{% if user.is_authenticated %}
window.__INITIAL_STATE__.isAuthenticated = true;
window.__INITIAL_STATE__.username = "{{ user.username }}";
condition = "{{user.profile.isAuctioneer}}"
window.__INITIAL_STATE__.isAuctioneer = (condition.toLowerCase() == 'true')
window.__INITIAL_STATE__.credits = "{{ user.profile.total_credits }}"
{% endif %}
</script>
{% csrf_token %}
Expand Down
51 changes: 50 additions & 1 deletion livestream/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,59 @@ class Session(models.Model):
def __str__(self):
return self.session_id


# Stores newly generated arhive id
class Archive(models.Model):
archive_id = models.CharField(max_length=1000)

def __str__(self):
return self.archive_id


class Product(models.Model):
owner = models.OneToOneField(User,
on_delete=models.CASCADE,
related_name='product')

name = models.CharField(max_length=30)
description = models.CharField(max_length=500)
date_sold = models.DateTimeField()
price = models.PositiveIntegerField()
winning_bid = models.PositiveIntegerField()
minimum_price = models.PositiveIntegerField()


class Bid(models.Model):
owner = models.OneToOneField(User,
on_delete=models.CASCADE)
credits = models.PositiveIntegerField()


# Stores newly generated session id
class Session(models.Model):
auctioneer = models.OneToOneField(User,
on_delete=models.CASCADE,
related_name='current_auctioneer')

# not sure
attendees = models.ForeignKey(User,
on_delete=models.CASCADE,
related_name='attendee')

products = models.ForeignKey(Product,
on_delete=models.CASCADE,
related_name='product')

bid = models.OneToOneField(Bid,
on_delete=models.CASCADE,
related_name='bid')

session_id = models.CharField(max_length=1000)
Copy link
Member

@aldnav aldnav Jun 4, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems to be too much for a session id length. Find out the format first. Is it UUID? If it is, what variant of UUID (1 ... 4) ? These are standards and have fixed lengths.

name = models.CharField(max_length=30)
description = models.CharField(max_length=500)
date_when = models.DateTimeField()
date_live = models.DateTimeField()
isOngoing = models.BooleanField(default=False)

def __str__(self):
return self.session_id
4 changes: 3 additions & 1 deletion login/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,11 @@ def post(self, request):
if user is not None:
auth.login(request, user)
isAuctioneer = user.profile.isAuctioneer
credits = user.profile.total_credits

return JsonResponse({'isValid': True,
'isAuctioneer': isAuctioneer})
'isAuctioneer': isAuctioneer,
'credits': credits})
else:
return HttpResponseBadRequest()

Expand Down
19 changes: 19 additions & 0 deletions profiles/migrations/0005_auto_20180604_0901.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Generated by Django 2.0.4 on 2018-06-04 09:01

from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

dependencies = [
('profiles', '0004_auto_20180604_0820'),
]

operations = [
migrations.AlterField(
model_name='product',
name='bid',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='bid', to='profiles.Bid'),
),
]
23 changes: 21 additions & 2 deletions profiles/models.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from django.db import models
from django.contrib.auth.models import User
from django.db.models import Sum


class Bid(models.Model):
Expand Down Expand Up @@ -29,8 +30,14 @@ def countSubscribers(self):
"""Returns how many subscribers are currently subscribed to a user"""
return self.user.auctioneer.count()

@property
def total_credits(self):
total_credits = self.credit_profile.aggregate(
Sum('credit_amount'))
return total_credits['credit_amount__sum']

def __str__(self):
return str(self.user.username)
return '{}'.format(self.user.username)


class Credit(models.Model):
Expand All @@ -40,12 +47,17 @@ class Credit(models.Model):
on_delete=models.CASCADE,
null=True)

def __str__(self):
return '{} {}'.format(self.profile.user.username,
self.credit_amount)


class Product(models.Model):
bid = models.ForeignKey(Bid,
related_name='bid',
on_delete=models.CASCADE,
null=True)
null=True,
blank=True)

profile = models.ForeignKey(Profile,
related_name='product_profile',
Expand All @@ -71,3 +83,10 @@ class Subscribed(models.Model):
bidder = models.ForeignKey(User,
on_delete=models.CASCADE,
related_name='bidder')


class Credits(models.Model):
owner = models.OneToOneField(User,
on_delete=models.CASCADE,
related_name='credits')
credits = models.PositiveIntegerField()
3 changes: 2 additions & 1 deletion profiles/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,6 @@
path('edit_profile_details/', views.EditProfile.as_view()),
path('edit_password/', views.EditPassword.as_view()),
path('remove_tag/', views.TagRemoval.as_view()),
path('subscribe/', views.Subscribe.as_view())
path('subscribe/', views.Subscribe.as_view()),
path('update_credits/', views.UpdateCredits.as_view())
]
18 changes: 16 additions & 2 deletions profiles/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
from django.views.generic import View
from django.http import HttpResponse
from tags.models import Tags
from profiles.models import Subscribed
from profiles.models import Subscribed, Credit
from django.db.models import Sum


class ProfileView(View):
Expand All @@ -26,7 +27,7 @@ def post(self, request):
'isAuctioneer': user_profile.isAuctioneer,
'subscribers': user_profile.countSubscribers,
'hasSubscribed': hasSubscribed,
'contact_number': user.profile.contact_number
'contact_number': user.profile.contact_number,
}

return JsonResponse(context)
Expand Down Expand Up @@ -113,3 +114,16 @@ def post(self, request):
subscribed_user.profile.save()

return HttpResponse(res)


class UpdateCredits(View):
def post(self, request):
current_user = request.user
amount = request.POST.get('amount', '')
credit = Credit.objects.create(credit_amount=amount,
profile=current_user.profile)
total_credit = Credit.objects.filter(
profile=current_user.profile
).aggregate(Sum('credit_amount'))

return JsonResponse({'total_credit': total_credit})
2 changes: 1 addition & 1 deletion src/assets/js/Request.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,6 @@ export default class Request {
}

get(url, callback){
this.send('get',baseurl, url, callback);
this.send('get', url, {}, callback);
}
}
Loading