Merge branch 'karma-graphs' into 'master'

Show list of keys in the karma index

Nothing too crazy here, just lists the karma keys on the Django karma index page. Might be really slow, haven't tried it on a huge dataset yet.

See merge request !8
This commit is contained in:
Brian S. Stephan 2016-06-23 14:58:35 -05:00
commit 8b36f2c56b
4 changed files with 83 additions and 4 deletions

View File

@ -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')

View File

@ -0,0 +1,44 @@
{% extends 'base.html' %}
{% load static %}
{% block extra_media %}
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/t/bs/jqc-1.12.0,dt-1.10.11/datatables.min.css"/>
<script type="text/javascript" src="https://cdn.datatables.net/t/bs/jqc-1.12.0,dt-1.10.11/datatables.min.js"></script>
{% endblock %}
{% block title %}karma{% endblock %}
{% block content %}
<div style="width: 75%; margin-left: auto; margin-right: auto;">
<table id="karma" class="display table table-striped table-bordered" cellspacing="0" width="100%">
<thead>
<tr>
<th>Key</th>
<th>Score</th>
</tr>
</thead>
<tfoot>
<tr>
<th>Key</th>
<th>Score</th>
</tr>
</tfoot>
<tbody>
{% for entry in entries %}
<tr>
<td><a href="{% url 'karma_key_detail' entry.key %}">{{ entry.key }}</a></td>
<td>{{ entry.score }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
<script type="text/javascript">
$(document).ready(function() {
$('#karma').DataTable( {
"order": [[ 1, "desc" ]],
"lengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]]
} );
} );
</script>
{% endblock %}

View File

@ -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<karma_key>.+)/', key_detail, name='karma_key_detail'),
url(r'^api/', include(router.urls)),
)

View File

@ -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