summaryrefslogtreecommitdiffstats
path: root/core/views_statistics.py
blob: 889eb30e21c18f4073e42640c6b625abb3a062c7 (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
108
109
110
111
112
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)