troggle-unchained/core/views_statistics.py

124 lines
4.6 KiB
Python
Raw Normal View History

2020-06-12 18:10:07 +01:00
import datetime
import os.path
import re
import django.db.models
from django.db.models import Min, Max
from django.core.urlresolvers import reverse
from django.http import HttpResponse, HttpResponseRedirect
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 SurvexLeg, SurvexBlock
import troggle.settings as settings
from settings import *
def pathsreport(request):
pathsdict={
"ADMIN_MEDIA_PREFIX" : ADMIN_MEDIA_PREFIX,
"ADMIN_MEDIA_PREFIX" : ADMIN_MEDIA_PREFIX,
"CAVEDESCRIPTIONSX" : CAVEDESCRIPTIONS,
"DIR_ROOT" : DIR_ROOT,
"ENTRANCEDESCRIPTIONS" : ENTRANCEDESCRIPTIONS,
"EXPOUSER_EMAIL" : EXPOUSER_EMAIL,
"EXPOUSERPASS" :"<redacted>",
"EXPOUSER" : EXPOUSER,
"EXPOWEB" : EXPOWEB,
"EXPOWEB_URL" : EXPOWEB_URL,
"FILES" : FILES,
"JSLIB_URL" : JSLIB_URL,
"LOGFILE" : LOGFILE,
"LOGIN_REDIRECT_URL" : LOGIN_REDIRECT_URL,
"MEDIA_ADMIN_DIR" : MEDIA_ADMIN_DIR,
"MEDIA_ROOT" : MEDIA_ROOT,
"MEDIA_URL" : MEDIA_URL,
#"PHOTOS_ROOT" : PHOTOS_ROOT,
"PHOTOS_URL" : PHOTOS_URL,
"PYTHON_PATH" : PYTHON_PATH,
"REPOS_ROOT_PATH" : REPOS_ROOT_PATH,
"ROOT_URLCONF" : ROOT_URLCONF,
"STATIC_ROOT" : STATIC_ROOT,
"STATIC_URL" : STATIC_URL,
"SURVEX_DATA" : SURVEX_DATA,
"SURVEY_SCANS" : SURVEY_SCANS,
"SURVEYS" : SURVEYS,
"SURVEYS_URL" : SURVEYS_URL,
"SVX_URL" : SVX_URL,
2020-06-17 21:27:01 +01:00
# "TEMPLATE_DIRS" : TEMPLATE_DIRS,
2020-06-12 18:10:07 +01:00
"THREEDCACHEDIR" : THREEDCACHEDIR,
2020-06-14 10:05:25 +01:00
# "TINY_MCE_MEDIA_ROOT" : TINY_MCE_MEDIA_ROOT,
# "TINY_MCE_MEDIA_URL" : TINY_MCE_MEDIA_URL,
2020-06-12 18:10:07 +01:00
"TUNNEL_DATA" : TUNNEL_DATA,
"URL_ROOT" : URL_ROOT
}
2020-06-14 10:05:25 +01:00
# settings are unique by paths are not
2020-06-12 18:10:07 +01:00
ncodes = len(pathsdict)
bycodeslist = sorted(pathsdict.items())
2020-06-14 10:05:25 +01:00
# 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)
2020-06-12 18:10:07 +01:00
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:
2020-06-16 19:27:32 +01:00
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
2020-06-12 18:10:07 +01:00
except:
2020-06-16 19:27:32 +01:00
# 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
2020-06-12 18:10:07 +01:00
nimportlegs = -1
2020-06-16 19:27:32 +01:00
print("{} {} {} {}".format(sbr.id, sbr.name, sbr.legsall, sbr.date))
2020-06-12 18:10:07 +01:00
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:
2020-06-16 19:27:32 +01:00
legsyear += int(survexblock.legsall)
2020-06-12 18:10:07 +01:00
except:
pass
addupsurvexlength += survexleglength
legsbyexpo.append((expedition, {"nsurvexlegs": "{:,}".format(legsyear),
"survexleglength":"{:,.0f}".format(survexleglength)}))
legsbyexpo.reverse()
2020-06-16 19:27:32 +01:00
#survexlegs = SurvexLeg.objects.all()
2020-06-12 18:10:07 +01:00
renderDict = {**statsDict, **{ "nsurvexlegs": "{:,}".format(nimportlegs), "totalsurvexlength":totalsurvexlength/1000, "addupsurvexlength":addupsurvexlength/1000, "legsbyexpo":legsbyexpo }} # new syntax
return render(request,'statistics.html', renderDict)