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 .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'),
|
||||
)
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
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