Hall of fame

This commit is contained in:
teras
2017-10-07 17:08:17 +03:00
parent 01cded8763
commit 2feeb35209
10 changed files with 209 additions and 9 deletions

View File

@@ -3,4 +3,5 @@ from challenges.models import *
admin.site.register(Challenge)
admin.site.register(ChallengeTag)
admin.site.register(UserChallenge)
admin.site.register(UserChallenge)
admin.site.register(Profile)

View File

@@ -1,5 +1,31 @@
from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver
import os
def get_image_path(instance, filename):
return os.path.join('icons', str(instance.id), filename)
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
icon = models.ImageField(upload_to=get_image_path, default='default_icon.png')
def __str__(self):
return self.user.username
@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
instance.profile.save()
class ChallengeTag(models.Model):
@@ -13,6 +39,7 @@ class ChallengeTag(models.Model):
class Challenge(models.Model):
id = models.AutoField(primary_key=True)
creator = models.ForeignKey(User)
name = models.CharField(max_length=256)
description = models.TextField(blank=True)
tags = models.ManyToManyField(ChallengeTag, blank=True)

View File

@@ -124,3 +124,7 @@ STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
]
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

View File

@@ -25,4 +25,5 @@ urlpatterns = [
url(r'^login/', views.login_view),
url(r'^logout/', views.logout_view),
url(r'^register/', views.register),
] + static(settings.STATIC_URL, document_root=settings.STATICFILES_DIRS)
] + static(settings.STATIC_URL, document_root=settings.STATICFILES_DIRS) + \
static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

View File

@@ -14,15 +14,24 @@ def index(request):
challenges = Challenge.objects.all()
challenge_pair = UserChallenge.objects.all()
users = User.objects.all()
user_data = []
print(challenge_pair)
for u in users:
data = {
'user': u,
'total_challenges': len(UserChallenge.objects.filter(user=u))
}
user_data.append(data)
for item in challenge_pair:
print(item.user.username)
template_dict = {
'logged_in': user,
'challenges': challenges,
'challenge_pair': challenge_pair,
'users': user_data
}
return render(request, 'index.html', {'logged_in': user,
'challenges': challenges,
'challenge_pair': challenge_pair})
return render(request, 'landing.html', template_dict)
@csrf_protect
@@ -72,3 +81,14 @@ def login_view(request):
def logout_view(request):
logout(request)
return HttpResponse('logged out')
def challenge(request):
if request.method == 'POST':
if not request.user.is_authenticated:
return HttpResponse('not logged in')
challenge_name = request.POST['challenge_name']
challenge_description = request.POST['challenge_discription']
tags = []
challenge = Challenge(creator=request.user, name=challenge_name, description=challenge_description, tags=tags)
challenge.save()