Added a stats page.
This commit is contained in:
parent
881ca6fe4d
commit
8d95ac2cac
@ -1,8 +1,9 @@
|
|||||||
|
|
||||||
from django.conf.urls import patterns, url
|
from django.conf.urls import patterns, url
|
||||||
|
|
||||||
from .views import AboutView
|
from .views import AboutView, StatsView
|
||||||
|
|
||||||
urlpatterns = patterns('',
|
urlpatterns = patterns('',
|
||||||
url(r'^$', AboutView.as_view(), name='index'),
|
url(r'^$', AboutView.as_view(), name='index'),
|
||||||
|
url(r'^stats/$', StatsView.as_view(), name='stats'),
|
||||||
)
|
)
|
||||||
|
|||||||
@ -1,7 +1,11 @@
|
|||||||
|
|
||||||
|
from datetime import timedelta
|
||||||
|
from django.utils import timezone
|
||||||
|
|
||||||
from django.views import generic
|
from django.views import generic
|
||||||
|
|
||||||
from .utils import load_readme
|
from .utils import load_readme
|
||||||
|
from gameservers.models import Server, ServerHistory
|
||||||
|
|
||||||
|
|
||||||
class AboutView(generic.TemplateView):
|
class AboutView(generic.TemplateView):
|
||||||
@ -14,4 +18,46 @@ class AboutView(generic.TemplateView):
|
|||||||
context['about_md'] = self.readme_md
|
context['about_md'] = self.readme_md
|
||||||
return context
|
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
|
||||||
|
|
||||||
|
|||||||
37
src/templates/about/stats.html
Normal file
37
src/templates/about/stats.html
Normal 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 %}
|
||||||
Loading…
x
Reference in New Issue
Block a user