Added a stats page.

This commit is contained in:
A. Svensson 2015-05-25 18:15:40 +02:00
parent 881ca6fe4d
commit 8d95ac2cac
3 changed files with 85 additions and 1 deletions

View File

@ -1,8 +1,9 @@
from django.conf.urls import patterns, url
from .views import AboutView
from .views import AboutView, StatsView
urlpatterns = patterns('',
url(r'^$', AboutView.as_view(), name='index'),
url(r'^stats/$', StatsView.as_view(), name='stats'),
)

View File

@ -1,7 +1,11 @@
from datetime import timedelta
from django.utils import timezone
from django.views import generic
from .utils import load_readme
from gameservers.models import Server, ServerHistory
class AboutView(generic.TemplateView):
@ -14,4 +18,46 @@ class AboutView(generic.TemplateView):
context['about_md'] = self.readme_md
return context
class StatsView(generic.TemplateView):
template_name = 'about/stats.html'
delta_hour = timedelta(hours=1)
delta_day = timedelta(days=1)
def get_context_data(self, **kwargs):
context = super(StatsView, self).get_context_data(**kwargs)
now = timezone.now()
last_update = now - self.delta_day
total_players = 0
servers_total = 0
servers_with_players = 0
servers_online = 0
servers_warning = 0
servers_offline = 0
for server in Server.objects.all():
servers_total += 1
last_update = max(last_update, server.last_updated)
if server.players_current > 0:
total_players += server.players_current
servers_with_players += 1
delta = now - server.last_updated
if delta < self.delta_hour:
servers_online += 1
elif delta < self.delta_day:
servers_warning += 1
else:
servers_offline += 1
context['last_update'] = last_update
context['total_players'] = total_players
context['servers_with_players'] = servers_with_players
context['servers_total'] = servers_total
context['servers_online'] = servers_online
context['servers_warning'] = servers_warning
context['servers_offline'] = servers_offline
return context

View File

@ -0,0 +1,37 @@
{% extends "base_site.html" %}
{% block title %}
Stats
{% endblock %}
{% block content %}
<h1>Statistics</h1>
Database was last updated <span class="bold" title="{{last_update|date:'r'}} GMT">
{{last_update|timesince}}
</span> ago.
<h3>Players</h3>
<p>There are currently <span class="bold">
{{total_players}} players
</span> online, spread out on <span class="bold">
{{servers_with_players}} active servers.
</span></p>
<h3>Servers</h3>
<p>In total there are <span class="bold">
{{servers_total}} servers
</span> in the database.</p>
<p>Within the last hour, <span class="glyphicon glyphicon-ok-sign"></span><span class="bold status_online">
{{servers_online}} ({% widthratio servers_online servers_total 100 %}%) servers</span>
has been updated.</p>
<p><span class="glyphicon glyphicon-question-sign"></span><span class="bold status_unknown">
{{servers_warning}} ({% widthratio servers_warning servers_total 100 %}%) servers</span>
has not been updated for over an hour and are currently in an unknown state.</p>
<p>Lasty there are <span class="glyphicon glyphicon-remove-sign"></span><span class="bold status_offline">
{{servers_offline}} ({% widthratio servers_offline servers_total 100 %}%) servers</span>
that has not been updated for over a day and will be removed automatically after a week of inactivity.</p>
{% endblock %}