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 %}
+
+
+
+
+ Key |
+ Score |
+
+
+
+
+ Key |
+ Score |
+
+
+
+ {% for entry in entries %}
+
+ {{ entry.key }} |
+ {{ entry.score }} |
+
+ {% endfor %}
+
+
+
+
+{% 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