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
+
+
+
+
+ | User |
+ # Songs |
+
+
+
+ {% for stat in upload_stats %}
+
+ | {{ stat.user__name }} |
+ {{ stat.total }} |
+
+ {% endfor %}
+
+
+
+Requests
+
+
+
+
+ | User |
+ # Requests |
+
+
+
+ {% for stat in request_stats %}
+
+ | {{ stat.user__name }} |
+ {{ stat.total }} |
+
+ {% endfor %}
+
+
+
+{% 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})