import datetime import os.path import re from collections import OrderedDict 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 = OrderedDict() try: pathsdict = { # "BOGUS" : str( settings.BOGUS), "JSLIB_URL" : str( settings.JSLIB_URL), # "CSSLIB_URL" : str( settings.CSSLIB_URL), "CAVEDESCRIPTIONS" : str( settings.CAVEDESCRIPTIONS), "DIR_ROOT" : str( settings.DIR_ROOT), "ENTRANCEDESCRIPTIONS" : str( settings.ENTRANCEDESCRIPTIONS), "EXPOUSER_EMAIL" : str( settings.EXPOUSER_EMAIL), "EXPOUSERPASS" : str(""), "EXPOUSER" : str( settings.EXPOUSER), "EXPOWEB" : str( settings.EXPOWEB), "EXPOWEB_URL" : str( settings.EXPOWEB_URL), "FILES" : str( settings.FILES), "LOGFILE" : str( settings.LOGFILE), "LOGIN_REDIRECT_URL" : str( settings.LOGIN_REDIRECT_URL), "MEDIA_ROOT" : str( settings.MEDIA_ROOT), "MEDIA_URL" : str( settings.MEDIA_URL), "PHOTOS_URL" : str( settings.PHOTOS_URL), "PYTHON_PATH" : str( settings.PYTHON_PATH), "REPOS_ROOT_PATH" : str( settings.REPOS_ROOT_PATH), "ROOT_URLCONF" : str( settings.ROOT_URLCONF), "STATIC_URL" : str( settings.STATIC_URL), "SURVEX_DATA" : str( settings.SURVEX_DATA), "SURVEY_SCANS" : str( settings.SURVEY_SCANS), "SURVEYS" : str( settings.SURVEYS), "SURVEYS_URL" : str( settings.SURVEYS_URL), "SURVEXPORT" : str( settings.SURVEXPORT), "THREEDCACHEDIR" : str( settings.THREEDCACHEDIR), "TUNNEL_DATA" : str( settings.TUNNEL_DATA), "URL_ROOT" : str( settings.URL_ROOT) } except: pathsdict["! EXCEPTION !"] = "missing or exta string constant in troggle/settings" pathstype = OrderedDict() try: pathstype = { # "BOGUS" : type(settings.BOGUS), "JSLIB_URL" : type(settings.JSLIB_URL), # "CSSLIB_URL" : type(settings.CSSLIB_URL), "CAVEDESCRIPTIONS" : type(settings.CAVEDESCRIPTIONS), "DIR_ROOT" : type(settings.DIR_ROOT), "ENTRANCEDESCRIPTIONS" : type(settings.ENTRANCEDESCRIPTIONS), "EXPOUSER_EMAIL" : type(settings.EXPOUSER_EMAIL), "EXPOUSERPASS" : type(settings.EXPOUSERPASS), "EXPOUSER" : type(settings.EXPOUSER), "EXPOWEB" : type(settings.EXPOWEB), "EXPOWEB_URL" : type(settings.EXPOWEB_URL), "FILES" : type(settings.FILES), "LOGFILE" : type(settings.LOGFILE), "LOGIN_REDIRECT_URL" : type(settings.LOGIN_REDIRECT_URL), "MEDIA_ROOT" : type(settings.MEDIA_ROOT), "MEDIA_URL" : type(settings.MEDIA_URL), "PHOTOS_URL" : type(settings.PHOTOS_URL), "PYTHON_PATH" : type(settings.PYTHON_PATH), "REPOS_ROOT_PATH" : type(settings.REPOS_ROOT_PATH), "ROOT_URLCONF" : type(settings.ROOT_URLCONF), "STATIC_URL" : type(settings.STATIC_URL), "SURVEX_DATA" : type(settings.SURVEX_DATA), "SURVEY_SCANS" : type(settings.SURVEY_SCANS), "SURVEYS" : type(settings.SURVEYS), "SURVEYS_URL" : type(settings.SURVEYS_URL), "SURVEXPORT" : type(settings.SURVEXPORT), "THREEDCACHEDIR" : type(settings.THREEDCACHEDIR), "TUNNEL_DATA" : type(settings.TUNNEL_DATA), "URL_ROOT" : type(settings.URL_ROOT) } except: pathstype["! EXCEPTION !"] = "missing or exta string constant in troggle/settings" # settings are unique by paths are not ncodes = len(pathsdict) bycodeslist = sorted(pathsdict.items()) # a list of tuples bycodeslist2 = [] for k, p in bycodeslist: bycodeslist2.append((k, p, str(pathstype[k]))) bypaths = sorted(pathsdict.values()) # a list bypathslist = [] for p in bypaths: for k in pathsdict.keys(): if pathsdict[k] == p: bypathslist.append((p, k, str(pathstype[k]))) del pathsdict[k] break return render(request, 'pathsreport.html', { "pathsdict":pathsdict, "bycodeslist":bycodeslist2, "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()) 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.legslength try: legsyear += int(survexblock.legsall) except: pass addupsurvexlength += survexleglength legsbyexpo.append((expedition, {"nsurvexlegs": "{:,}".format(legsyear), "survexleglength":"{:,.0f}".format(survexleglength)})) legsbyexpo.reverse() renderDict = {**statsDict, **{ "addupsurvexlength":addupsurvexlength/1000, "legsbyexpo":legsbyexpo }} # new syntax return render(request,'statistics.html', renderDict)