Added shortcut functions for getting server stats.
This commit is contained in:
parent
72ece1b1f4
commit
a64f842b83
@ -1,4 +1,6 @@
|
|||||||
|
|
||||||
|
from datetime import timedelta
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
|
|
||||||
@ -25,6 +27,18 @@ class Server(models.Model):
|
|||||||
if delta.days >= 7:
|
if delta.days >= 7:
|
||||||
server.delete()
|
server.delete()
|
||||||
|
|
||||||
|
def get_history_stats(self, days=7):
|
||||||
|
return ServerHistory.objects.filter(
|
||||||
|
server=self,
|
||||||
|
created__gte=timezone.now() - timedelta(days=days)
|
||||||
|
)
|
||||||
|
|
||||||
|
def calc_player_stats(self, days=7):
|
||||||
|
history = self.get_history_stats(days=days)
|
||||||
|
stats = [tmp.players for tmp in history]
|
||||||
|
average = sum(stats) / float(len(stats)) # Moving average
|
||||||
|
return average, min(stats), max(stats)
|
||||||
|
|
||||||
|
|
||||||
class ServerHistory(models.Model):
|
class ServerHistory(models.Model):
|
||||||
server = models.ForeignKey(Server)
|
server = models.ForeignKey(Server)
|
||||||
|
|||||||
@ -1,9 +1,6 @@
|
|||||||
|
|
||||||
from datetime import timedelta
|
|
||||||
|
|
||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
from django.views import generic
|
from django.views import generic
|
||||||
from django.utils import timezone
|
|
||||||
|
|
||||||
from .models import Server, ServerHistory
|
from .models import Server, ServerHistory
|
||||||
|
|
||||||
@ -16,24 +13,16 @@ class ServerDetailView(generic.DetailView):
|
|||||||
def get_context_data(self, **kwargs):
|
def get_context_data(self, **kwargs):
|
||||||
context = super(ServerDetailView, self).get_context_data(**kwargs)
|
context = super(ServerDetailView, self).get_context_data(**kwargs)
|
||||||
server = context['server']
|
server = context['server']
|
||||||
|
context['weekly_history'] = server.get_history_stats(days=7)
|
||||||
|
|
||||||
weekly_history = ServerHistory.objects.filter(
|
avg, min, max = server.calc_player_stats(days=1)
|
||||||
server=server,
|
context['daily_average'] = avg
|
||||||
created__gte=timezone.now() - timedelta(days=7),
|
context['daily_min'] = min
|
||||||
)
|
context['daily_max'] = max
|
||||||
context['weekly_history'] = weekly_history
|
|
||||||
|
|
||||||
# Moving average for the last day
|
avg, min, max = server.calc_player_stats(days=7)
|
||||||
tmp = [tmp.players for tmp in ServerHistory.objects.filter(
|
context['weekly_average'] = avg
|
||||||
server=server,
|
context['weekly_min'] = min
|
||||||
created__gte=timezone.now() - timedelta(days=1))]
|
context['weekly_max'] = max
|
||||||
context['daily_average'] = sum(tmp) / float(len(tmp))
|
|
||||||
context['daily_min'] = min(tmp)
|
|
||||||
context['daily_max'] = max(tmp)
|
|
||||||
|
|
||||||
tmp = [tmp.players for tmp in weekly_history]
|
|
||||||
context['weekly_average'] = sum(tmp) / float(len(tmp))
|
|
||||||
context['weekly_min'] = min(tmp)
|
|
||||||
context['weekly_max'] = max(tmp)
|
|
||||||
return context
|
return context
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user