53 lines
1.8 KiB
Python
53 lines
1.8 KiB
Python
import os
|
|
import json
|
|
from django.conf import settings
|
|
from minecraft_manager.models import Application, Player, Ticket, Warning, IP
|
|
|
|
|
|
def overview_data():
|
|
data = {}
|
|
|
|
# Setup
|
|
with open(os.path.join(settings.MINECRAFT_BASE_DIR, 'banned-players.json'), encoding='utf-8') as f:
|
|
bans = json.load(f)
|
|
|
|
|
|
# Totals
|
|
data['total'] = {
|
|
'application': {
|
|
'accepted': Application.objects.filter(accepted=True).count(),
|
|
'denied': Application.objects.filter(accepted=False).count(),
|
|
'all': Application.objects.count()
|
|
},
|
|
'player': {
|
|
'banned': len(bans),
|
|
'unbanned': Player.objects.count() - len(bans),
|
|
'all': Player.objects.count()
|
|
},
|
|
'ticket': {
|
|
'claimed': Ticket.objects.filter(staff__isnull=False).count(),
|
|
'unclaimed': Ticket.objects.filter(staff__isnull=True).count(),
|
|
'resolved': Ticket.objects.filter(resolved=True).count(),
|
|
'unresolved': Ticket.objects.filter(resolved=False).count(),
|
|
'all': Ticket.objects.count()
|
|
},
|
|
'warning': Warning.objects.count(),
|
|
'ip': IP.objects.count()
|
|
}
|
|
|
|
# Averages
|
|
data['average'] = {
|
|
'age': sum([application.age for application in Application.objects.all()]) /
|
|
data['total']['application']['all'] if data['total']['application']['all'] != 0 else 1
|
|
}
|
|
|
|
# Ratios
|
|
data['ratio'] = {
|
|
'accepted': (data['total']['application']['accepted'] /
|
|
data['total']['application']['denied'] if data['total']['application']['denied'] != 0 else 1) * 100,
|
|
'banned': (data['total']['player']['banned'] /
|
|
data['total']['player']['unbanned'] if data['total']['player']['unbanned'] != 0 else 1) * 100
|
|
}
|
|
|
|
return data
|