diff --git a/marietje/marietje/settings.py b/marietje/marietje/settings.py index 9f6e391..51f05c9 100644 --- a/marietje/marietje/settings.py +++ b/marietje/marietje/settings.py @@ -39,7 +39,8 @@ INSTALLED_APPS = [ 'django.contrib.staticfiles', 'marietje', 'queues', - 'songs' + 'songs', + 'stats' ] MIDDLEWARE = [ diff --git a/marietje/marietje/templates/base.html b/marietje/marietje/templates/base.html index 9949285..23bab7e 100644 --- a/marietje/marietje/templates/base.html +++ b/marietje/marietje/templates/base.html @@ -33,6 +33,8 @@ Upload {% url 'songs:manage' as url %} Manage + {% url 'stats:stats' as url %} + Stats {% if user.is_superuser %} {% url 'admin:index' as url %}
  • Admin
  • diff --git a/marietje/marietje/urls.py b/marietje/marietje/urls.py index 4a7deff..60ae0ad 100644 --- a/marietje/marietje/urls.py +++ b/marietje/marietje/urls.py @@ -33,4 +33,5 @@ urlpatterns = [ url(r'^songs/', include('songs.urls')), url(r'^api/', include('api.urls')), url(r'^playerapi/', include('playerapi.urls')), + url(r'^stats/', include('stats.urls')), ] diff --git a/marietje/stats/__init__.py b/marietje/stats/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/marietje/stats/admin.py b/marietje/stats/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/marietje/stats/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/marietje/stats/apps.py b/marietje/stats/apps.py new file mode 100644 index 0000000..2d09b92 --- /dev/null +++ b/marietje/stats/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class StatsConfig(AppConfig): + name = 'stats' diff --git a/marietje/stats/migrations/__init__.py b/marietje/stats/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/marietje/stats/models.py b/marietje/stats/models.py new file mode 100644 index 0000000..71a8362 --- /dev/null +++ b/marietje/stats/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/marietje/stats/templates/stats/stats.html b/marietje/stats/templates/stats/stats.html new file mode 100644 index 0000000..b66deba --- /dev/null +++ b/marietje/stats/templates/stats/stats.html @@ -0,0 +1,46 @@ +{% extends 'base.html' %} +{% load static %} + +{% block title %}Stats{% endblock %} + +{% block content %} +

    Statistics

    +

    Uploads

    +
    + + + + + + + + + {% for stat in upload_stats %} + + + + + {% endfor %} + +
    User# Songs
    {{ stat.user__name }}{{ stat.total }}
    +
    +

    Requests

    +
    + + + + + + + + + {% for stat in request_stats %} + + + + + {% endfor %} + +
    User# Requests
    {{ stat.user__name }}{{ stat.total }}
    +
    +{% endblock %} diff --git a/marietje/stats/tests.py b/marietje/stats/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/marietje/stats/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/marietje/stats/urls.py b/marietje/stats/urls.py new file mode 100644 index 0000000..d4a86b9 --- /dev/null +++ b/marietje/stats/urls.py @@ -0,0 +1,9 @@ +from django.conf.urls import url + +from . import views + +app_name = 'stats' + +urlpatterns = [ + url(r'^$', views.stats, name='stats'), +] diff --git a/marietje/stats/views.py b/marietje/stats/views.py new file mode 100644 index 0000000..0b4b27d --- /dev/null +++ b/marietje/stats/views.py @@ -0,0 +1,10 @@ +from django.shortcuts import render +from django.db.models import Count +from songs.models import Song +from queues.models import PlaylistSong + + +def stats(request): + upload_stats = Song.objects.all().exclude(user_id=None).values('user__name').annotate(total=Count('id')).order_by('-total') + request_stats = PlaylistSong.objects.all().exclude(user_id=None).values('user__name').annotate(total=Count('id')).order_by('-total') + return render(request, 'stats/stats.html', {'upload_stats': upload_stats, 'request_stats': request_stats})