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" :"", "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)