Improved views and tags

This commit is contained in:
teras
2017-10-08 03:11:04 +03:00
parent 2e3b30a462
commit 6f7028d6cf
11 changed files with 246 additions and 383 deletions

View File

@@ -26,7 +26,7 @@ urlpatterns = [
url(r'^logout/', views.logout_view),
url(r'^register/', views.register),
url(r'^challenge/(?P<id>[0-9]+)', views.challenge),
url(r'^challenges/', views.dashboard),
url(r'^challenges/', views.challenges),
url(r'^halloffame/', views.hall_of_fame),
url(r'^profile/(?P<username>[\w.-]+)', views.profile)
] + static(settings.STATIC_URL, document_root=settings.STATICFILES_DIRS) + \

View File

@@ -10,6 +10,7 @@ def index(request):
if request.method == 'GET':
return render(request, 'index.html')
@csrf_protect
def register(request):
if request.method == 'GET':
@@ -61,27 +62,32 @@ def logout_view(request):
def challenge(request, id):
if request.method == 'GET':
return render(request, 'challenge.html')
data = {
'challenge': Challenge.objects.get(id=id)
}
return render(request, 'challenge.html', data)
elif 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()
new_challenge = Challenge(creator=request.user, name=challenge_name, description=challenge_description, tags=tags)
new_challenge.save()
def dashboard(request):
def challenges(request):
if request.method == 'GET':
data = {'challenges': Challenge.objects.all()}
return render(request, 'dashboard.html', data)
data = {
'challenges': Challenge.objects.all()
}
return render(request, 'challenges.html', data)
def hall_of_fame(request):
if request.method == 'GET':
data = {
'users': User.objects.all()
'users': sorted(User.objects.all(), key=lambda x: len(UserChallenge.objects.filter(user=x)), reverse=True)
}
return render(request, 'hall_of_fame.html', data)
@@ -89,9 +95,9 @@ def hall_of_fame(request):
def profile(request, username=''):
if request.method == 'GET':
user = User.objects.get(username=username)
challenges = UserChallenge.objects.filter(user=user)
user_challenges = UserChallenge.objects.filter(user=user)
data = {
'user': user,
'challenges': challenges
'challenges': user_challenges
}
return render(request, 'profile.html', data)