From 480924763226925d5a204a013f221d25e78a29d5 Mon Sep 17 00:00:00 2001 From: "Brian S. Stephan" Date: Fri, 13 May 2016 21:55:54 -0500 Subject: [PATCH 1/4] karma: display all karma keys in index page this kind of sucks from a performance standpoint, i'd like to make it better --- dr_botzo/karma/templates/karma/index.html | 47 +++++++++++++++++++++++ dr_botzo/karma/urls.py | 5 +-- dr_botzo/karma/views.py | 8 ++++ 3 files changed, 57 insertions(+), 3 deletions(-) create mode 100644 dr_botzo/karma/templates/karma/index.html diff --git a/dr_botzo/karma/templates/karma/index.html b/dr_botzo/karma/templates/karma/index.html new file mode 100644 index 0000000..04d9d66 --- /dev/null +++ b/dr_botzo/karma/templates/karma/index.html @@ -0,0 +1,47 @@ +{% extends 'base.html' %} +{% load static %} + +{% block extra_media %} + + +{% endblock %} + +{% block title %}karma{% endblock %} + +{% block content %} +
+ + + + + + + + + + + + + + + + + {% for entry in entries %} + + + + + + {% endfor %} + +
KeyScoreRank
KeyScoreRank
{{ entry.key }}{{ entry.score }}{{ entry.rank }}
+
+ +{% endblock %} diff --git a/dr_botzo/karma/urls.py b/dr_botzo/karma/urls.py index 7ebad65..c1d4908 100644 --- a/dr_botzo/karma/urls.py +++ b/dr_botzo/karma/urls.py @@ -1,11 +1,10 @@ """URL patterns for the karma views.""" from django.conf.urls import patterns, url -from django.views.generic import TemplateView -from karma.views import key_detail +from karma.views import key_detail, index urlpatterns = patterns('races.views', - url(r'^$', TemplateView.as_view(template_name='index.html'), name='karma_index'), + url(r'^$', index, name='karma_index'), url(r'^key/(?P.+)/', key_detail, name='karma_key_detail'), ) diff --git a/dr_botzo/karma/views.py b/dr_botzo/karma/views.py index 667b943..74d23d2 100644 --- a/dr_botzo/karma/views.py +++ b/dr_botzo/karma/views.py @@ -9,6 +9,14 @@ from karma.models import KarmaKey log = logging.getLogger('karma.views') +def index(request): + """Display all karma keys.""" + + entries = KarmaKey.objects.all().order_by('key') + + return render(request, 'karma/index.html', {'entries': entries}) + + def key_detail(request, karma_key): """Display the requested karma key.""" From 26f06049224d873310ea03737c247b1b054c1989 Mon Sep 17 00:00:00 2001 From: "Brian S. Stephan" Date: Fri, 13 May 2016 22:19:38 -0500 Subject: [PATCH 2/4] karma: add django rest framework i tried to use this for datatables, but it was taking too long to get a response, so i'm abandoning this for the moment, but the support's there for the future --- dr_botzo/karma/serializers.py | 12 ++++++++++++ dr_botzo/karma/urls.py | 10 ++++++++-- dr_botzo/karma/views.py | 10 ++++++++++ 3 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 dr_botzo/karma/serializers.py diff --git a/dr_botzo/karma/serializers.py b/dr_botzo/karma/serializers.py new file mode 100644 index 0000000..3b8a6be --- /dev/null +++ b/dr_botzo/karma/serializers.py @@ -0,0 +1,12 @@ +"""Serializers for the karma objects.""" + +from rest_framework import serializers + +from karma.models import KarmaKey + + +class KarmaKeySerializer(serializers.ModelSerializer): + + class Meta: + model = KarmaKey + fields = ('id', 'key', 'score', 'rank') diff --git a/dr_botzo/karma/urls.py b/dr_botzo/karma/urls.py index c1d4908..9d73ffe 100644 --- a/dr_botzo/karma/urls.py +++ b/dr_botzo/karma/urls.py @@ -1,10 +1,16 @@ """URL patterns for the karma views.""" -from django.conf.urls import patterns, url +from django.conf.urls import patterns, url, include +from rest_framework.routers import DefaultRouter -from karma.views import key_detail, index +from karma.views import key_detail, index, KarmaKeyViewSet + +router = DefaultRouter() +router.register(r'keys', KarmaKeyViewSet) urlpatterns = patterns('races.views', url(r'^$', index, name='karma_index'), url(r'^key/(?P.+)/', key_detail, name='karma_key_detail'), + + url(r'^api/', include(router.urls)), ) diff --git a/dr_botzo/karma/views.py b/dr_botzo/karma/views.py index 74d23d2..9654f2c 100644 --- a/dr_botzo/karma/views.py +++ b/dr_botzo/karma/views.py @@ -3,8 +3,10 @@ import logging from django.shortcuts import get_object_or_404, render +from rest_framework import viewsets from karma.models import KarmaKey +from karma.serializers import KarmaKeySerializer log = logging.getLogger('karma.views') @@ -23,3 +25,11 @@ def key_detail(request, karma_key): entry = get_object_or_404(KarmaKey, key=karma_key.lower()) return render(request, 'karma/karma_key.html', {'entry': entry, 'entry_history': entry.history(mode='date')}) + + +class KarmaKeyViewSet(viewsets.ReadOnlyModelViewSet): + + """Provide list and detail actions for karma keys.""" + + queryset = KarmaKey.objects.all() + serializer_class = KarmaKeySerializer From 46ffe7a72d501cbdd19e5b659c83cc2b9cd40c8a Mon Sep 17 00:00:00 2001 From: "Brian S. Stephan" Date: Fri, 13 May 2016 22:30:59 -0500 Subject: [PATCH 3/4] karma: remove the rank from the index table it's kind of redundant anyway, since we include the score --- dr_botzo/karma/templates/karma/index.html | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/dr_botzo/karma/templates/karma/index.html b/dr_botzo/karma/templates/karma/index.html index 04d9d66..e6a0f47 100644 --- a/dr_botzo/karma/templates/karma/index.html +++ b/dr_botzo/karma/templates/karma/index.html @@ -15,14 +15,12 @@ Key Score - Rank Key Score - Rank @@ -30,7 +28,6 @@ {{ entry.key }} {{ entry.score }} - {{ entry.rank }} {% endfor %} @@ -39,8 +36,8 @@ From 18ff814bc8313eb1bbeb3a190ced5f457c0b7909 Mon Sep 17 00:00:00 2001 From: "Brian S. Stephan" Date: Fri, 13 May 2016 22:41:13 -0500 Subject: [PATCH 4/4] karma: add a pagination default of 10 --- dr_botzo/karma/templates/karma/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dr_botzo/karma/templates/karma/index.html b/dr_botzo/karma/templates/karma/index.html index e6a0f47..2fd70f1 100644 --- a/dr_botzo/karma/templates/karma/index.html +++ b/dr_botzo/karma/templates/karma/index.html @@ -37,7 +37,7 @@ $(document).ready(function() { $('#karma').DataTable( { "order": [[ 1, "desc" ]], - "lengthMenu": [[25, 50, -1], [25, 50, "All"]] + "lengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]] } ); } );