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.utils import timezone
|
||||
|
||||
@ -25,6 +27,18 @@ class Server(models.Model):
|
||||
if delta.days >= 7:
|
||||
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):
|
||||
server = models.ForeignKey(Server)
|
||||
|
||||
@ -1,9 +1,6 @@
|
||||
|
||||
from datetime import timedelta
|
||||
|
||||
from django.shortcuts import render
|
||||
from django.views import generic
|
||||
from django.utils import timezone
|
||||
|
||||
from .models import Server, ServerHistory
|
||||
|
||||
@ -16,24 +13,16 @@ class ServerDetailView(generic.DetailView):
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super(ServerDetailView, self).get_context_data(**kwargs)
|
||||
server = context['server']
|
||||
context['weekly_history'] = server.get_history_stats(days=7)
|
||||
|
||||
weekly_history = ServerHistory.objects.filter(
|
||||
server=server,
|
||||
created__gte=timezone.now() - timedelta(days=7),
|
||||
)
|
||||
context['weekly_history'] = weekly_history
|
||||
avg, min, max = server.calc_player_stats(days=1)
|
||||
context['daily_average'] = avg
|
||||
context['daily_min'] = min
|
||||
context['daily_max'] = max
|
||||
|
||||
# Moving average for the last day
|
||||
tmp = [tmp.players for tmp in ServerHistory.objects.filter(
|
||||
server=server,
|
||||
created__gte=timezone.now() - timedelta(days=1))]
|
||||
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)
|
||||
avg, min, max = server.calc_player_stats(days=7)
|
||||
context['weekly_average'] = avg
|
||||
context['weekly_min'] = min
|
||||
context['weekly_max'] = max
|
||||
return context
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user