diff --git a/src/gameservers/models.py b/src/gameservers/models.py index db78ecb..a9b274a 100644 --- a/src/gameservers/models.py +++ b/src/gameservers/models.py @@ -1,5 +1,6 @@ from datetime import timedelta +import calendar from django.db import models from django.utils import timezone @@ -41,6 +42,23 @@ class Server(models.Model): models.Max('players'), ) + def weekday_averages(self): + weekdays = [] + for i, day in enumerate(calendar.day_name): + # HACK: do some number juggling to convert from calendar to django, + # because SOMEONE didn't bother to follow THE FUCKING STANDARD + # + # calendar is zero indexed, first day of week defaults to monday + # (monday = 0, tuesday = 1 etc.) + # + # django isn't zero indexed, first day of week defaults to sunday + # (sunday = 1, monday = 2 etc.) + i += 2 + if i > 7: i = 1 + tmp = ServerHistory.objects.filter(server=self, created__week_day=i) + avg = tmp.aggregate(models.Avg('players'))['players__avg'] + weekdays.append((day, int(avg))) + return weekdays class ServerHistory(models.Model): server = models.ForeignKey(Server) diff --git a/src/gameservers/views.py b/src/gameservers/views.py index 77fb8a6..df15a7c 100644 --- a/src/gameservers/views.py +++ b/src/gameservers/views.py @@ -2,7 +2,7 @@ from django.shortcuts import render from django.views import generic -from .models import Server, ServerHistory +from .models import Server class ServerListView(generic.ListView): model = Server @@ -29,5 +29,7 @@ class ServerDetailView(generic.DetailView): context['monthly_average'] = stats['players__avg'] context['monthly_min'] = stats['players__min'] context['monthly_max'] = stats['players__max'] + + context['weekday_averages'] = server.weekday_averages() return context diff --git a/src/static/css/style.css b/src/static/css/style.css index 5f3cadd..d7d72fe 100644 --- a/src/static/css/style.css +++ b/src/static/css/style.css @@ -68,6 +68,11 @@ body { height:200px; } +#weekday_averages { + width:800px; + height:200px; +} + #tooltip { position: absolute; display: none; diff --git a/src/templates/gameservers/server_detail.html b/src/templates/gameservers/server_detail.html index 3052ced..ddcb8aa 100644 --- a/src/templates/gameservers/server_detail.html +++ b/src/templates/gameservers/server_detail.html @@ -56,6 +56,7 @@ +

Players, last week

@@ -102,5 +103,48 @@ }); }); + + +

Players, average per day

+
+ + {% endblock %}