summaryrefslogtreecommitdiffstats
path: root/core/views_statistics.py
blob: 98e0fde253331f8febb0b2283df7351a926bc758 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
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("<redacted>"),
        "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 string constant in troggle/settings"

    # settings are unique by paths are not
    ncodes = len(pathsdict)
    bycodeslist = sorted(pathsdict.items()) # a list of tuples
    bypaths = sorted(pathsdict.values()) # a list 
    
    bypathslist = []
    
    for p in bypaths:
        for k in pathsdict.keys():
            if pathsdict[k] == p:
                bypathslist.append((p, k))
                del pathsdict[k]
                break
    #bypaths = sorted(bycodeslist, key=bycodeslist[1])
    # iterate through the dictionary and append each tuple into the temporary list 
    #f#=or w in bypaths:
     #   bypathslist[w] = pathsdict[w]

    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())

    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)