forked from expo/troggle
113 lines
4.4 KiB
Python
113 lines
4.4 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 SurvexLeg, 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()
|
|
#survexlegs = SurvexLeg.objects.all()
|
|
|
|
renderDict = {**statsDict, **{ "nsurvexlegs": "{:,}".format(nimportlegs), "totalsurvexlength":totalsurvexlength/1000, "addupsurvexlength":addupsurvexlength/1000, "legsbyexpo":legsbyexpo }} # new syntax
|
|
return render(request,'statistics.html', renderDict)
|