troggle-unchained/core/views_statistics.py
2020-06-24 14:10:13 +01:00

112 lines
4.3 KiB
Python

import datetime
import os.path
import re
import django.db.models
from django.db.models import Min, Max
from django.shortcuts import render, render_to_response
from django.template import Context, loader
from django.template.defaultfilters import slugify
from django.utils import timezone
from django.views.generic.list import ListView
from troggle.core.models import Expedition, Person, PersonExpedition
from troggle.core.models_caves import Cave, LogbookEntry
from troggle.core.models_survex import SurvexBlock
import troggle.settings as settings
def pathsreport(request):
pathsdict={
"CAVEDESCRIPTIONS" : settings.CAVEDESCRIPTIONS,
"DIR_ROOT" : settings.DIR_ROOT,
"ENTRANCEDESCRIPTIONS" : settings.ENTRANCEDESCRIPTIONS,
"EXPOUSER_EMAIL" : settings.EXPOUSER_EMAIL,
"EXPOUSERPASS" :"<redacted>",
"EXPOUSER" : settings.EXPOUSER,
"EXPOWEB" : settings.EXPOWEB,
"EXPOWEB_URL" : settings.EXPOWEB_URL,
"FILES" : settings.FILES,
"JSLIB_URL" : settings.JSLIB_URL,
"LOGFILE" : settings.LOGFILE,
"LOGIN_REDIRECT_URL" : settings.LOGIN_REDIRECT_URL,
"MEDIA_ROOT" : settings.MEDIA_ROOT,
"MEDIA_URL" : settings.MEDIA_URL,
"PHOTOS_URL" : settings.PHOTOS_URL,
"PYTHON_PATH" : settings.PYTHON_PATH,
"REPOS_ROOT_PATH" : settings.REPOS_ROOT_PATH,
"ROOT_URLCONF" : settings.ROOT_URLCONF,
"STATIC_URL" : settings.STATIC_URL,
"SURVEX_DATA" : settings.SURVEX_DATA,
"SURVEY_SCANS" : settings.SURVEY_SCANS,
"SURVEYS" : settings.SURVEYS,
"SURVEYS_URL" : settings.SURVEYS_URL,
"SVX_URL" : settings.SVX_URL,
"THREEDCACHEDIR" : settings.THREEDCACHEDIR,
"TUNNEL_DATA" : settings.TUNNEL_DATA,
"URL_ROOT" : settings.URL_ROOT
}
# settings are unique by paths are not
ncodes = len(pathsdict)
bycodeslist = sorted(pathsdict.items())
# create a temporary list
bypathslist = []
# iterate through the dictionary and append each tuple into the temporary list
for key, value in pathsdict.items():
tmptuple = (key, value)
bypathslist.append(tmptuple)
# bypathslist = sorted(bypathslist)
return render(request, 'pathsreport.html', {
"pathsdict":pathsdict,
"bycodeslist":bycodeslist,
"bypathslist":bypathslist,
"ncodes":ncodes})
def stats(request):
statsDict={}
statsDict['expoCount'] = "{:,}".format(Expedition.objects.count())
statsDict['caveCount'] = "{:,}".format(Cave.objects.count())
statsDict['personCount'] = "{:,}".format(Person.objects.count())
statsDict['logbookEntryCount'] = "{:,}".format(LogbookEntry.objects.count())
try:
blockroots = SurvexBlock.objects.filter(name="rootblock")
if len(blockroots)>1:
print(" ! more than one root survexblock {}".format(len(blockroots)))
for sbr in blockroots:
print("{} {} {} {}".format(sbr.id, sbr.name, sbr.legsall, sbr.date))
sbr = blockroots[0]
totalsurvexlength = sbr.totalleglength
nimportlegs = sbr.legsall
except:
# if no files yet imported into database
#survexfile = models_survex.SurvexFile(path=settings.SURVEX_TOPNAME, cave=None)
#survexblockdummy = models_survex.SurvexBlock(name="dummy", survexpath="", cave=None, survexfile=survexfile,
#legsall=0, legssplay=0, legssurfc=0, totalleglength=0.0)
#sbr = survexblockdummy
totalsurvexlength = 0.0
nimportlegs = -1
print("{} {} {} {}".format(sbr.id, sbr.name, sbr.legsall, sbr.date))
legsbyexpo = [ ]
addupsurvexlength = 0
for expedition in Expedition.objects.all():
survexblocks = expedition.survexblock_set.all()
legsyear=0
survexleglength = 0.0
for survexblock in survexblocks:
survexleglength += survexblock.totalleglength
try:
legsyear += int(survexblock.legsall)
except:
pass
addupsurvexlength += survexleglength
legsbyexpo.append((expedition, {"nsurvexlegs": "{:,}".format(legsyear),
"survexleglength":"{:,.0f}".format(survexleglength)}))
legsbyexpo.reverse()
renderDict = {**statsDict, **{ "nsurvexlegs": "{:,}".format(nimportlegs), "totalsurvexlength":totalsurvexlength/1000, "addupsurvexlength":addupsurvexlength/1000, "legsbyexpo":legsbyexpo }} # new syntax
return render(request,'statistics.html', renderDict)