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/templates/karma/index.html b/dr_botzo/karma/templates/karma/index.html new file mode 100644 index 0000000..2fd70f1 --- /dev/null +++ b/dr_botzo/karma/templates/karma/index.html @@ -0,0 +1,44 @@ +{% extends 'base.html' %} +{% load static %} + +{% block extra_media %} + + +{% endblock %} + +{% block title %}karma{% endblock %} + +{% block content %} +
+ + + + + + + + + + + + + + + {% for entry in entries %} + + + + + {% endfor %} + +
KeyScore
KeyScore
{{ entry.key }}{{ entry.score }}
+
+ +{% endblock %} diff --git a/dr_botzo/karma/urls.py b/dr_botzo/karma/urls.py index 7ebad65..9d73ffe 100644 --- a/dr_botzo/karma/urls.py +++ b/dr_botzo/karma/urls.py @@ -1,11 +1,16 @@ """URL patterns for the karma views.""" -from django.conf.urls import patterns, url -from django.views.generic import TemplateView +from django.conf.urls import patterns, url, include +from rest_framework.routers import DefaultRouter -from karma.views import key_detail +from karma.views import key_detail, index, KarmaKeyViewSet + +router = DefaultRouter() +router.register(r'keys', KarmaKeyViewSet) 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'), + + url(r'^api/', include(router.urls)), ) diff --git a/dr_botzo/karma/views.py b/dr_botzo/karma/views.py index 667b943..9654f2c 100644 --- a/dr_botzo/karma/views.py +++ b/dr_botzo/karma/views.py @@ -3,15 +3,33 @@ 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') +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.""" 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