From eed35d01a86a365d464a6b1584d12b9cb40652f6 Mon Sep 17 00:00:00 2001 From: Philip Sargent <philip.sargent@klebos.com> Date: Mon, 1 Aug 2022 15:55:20 +0300 Subject: [PATCH] tick lists now on 3 wallets reports --- core/views/scans.py | 147 ++++++++++++++--------------------- templates/base.html | 17 ++-- templates/cavewallets.html | 5 +- templates/personwallets.html | 43 +--------- templates/wallet_table.html | 40 ++++++++++ templates/yearwallets.html | 5 +- 6 files changed, 115 insertions(+), 142 deletions(-) create mode 100644 templates/wallet_table.html diff --git a/core/views/scans.py b/core/views/scans.py index 94fb560..0ffdb22 100644 --- a/core/views/scans.py +++ b/core/views/scans.py @@ -31,14 +31,6 @@ manywallets dict. def populatewallet(w): '''Copy survex data here just for display, not permanently ''' - # {% for personrole in wallet.survexblock.survexpersonrole_set.all %} - # {% if personrole.personexpedition %} - # <a href="{{personrole.personexpedition.get_absolute_url}}">{{personrole.personname}}</a> - # {% else %} - # {{personrole.personname}} - # {% endif %} - # {% endfor %} - survexpeople = [] blocks = SurvexBlock.objects.filter(scanswallet = w) for b in blocks: @@ -60,11 +52,34 @@ def datewallet(w, earliest): w.date = first def caveifywallet(w): + '''Gets the cave from the list of survex files, + only selects one of them though. Only used for display. + ''' blocks = SurvexBlock.objects.filter(scanswallet = w) for b in blocks: # NB b.cave is not populated by parser. Use b.survexfile.cave instead, or we could parse b.survexpath if b.survexfile.cave: - w.cave = b.survexfile.cave # just gets the last one, randomly + w.cave = b.survexfile.cave # just gets the last one, randomly. SHould make this a list or many:many ideally + +def fillblankpeople(w): + wp = w.people() + if not wp: # an -empty list + populatewallet(w) + else: + if len(wp) == 1: + nobody = wp[0].lower() + if nobody == 'unknown' or nobody == 'nobody' or nobody == ' ': + populatewallet(w) + +def fillblankothers(w): + earliest = datetime.datetime.now().date() + if not w.date(): + datewallet(w, earliest) + + c = w.cave() + if not c: + caveifywallet(w) + def walletslistperson(request, first_name, last_name): '''Page which displays a list of all the wallets for a specific person @@ -72,6 +87,18 @@ def walletslistperson(request, first_name, last_name): ''' # This is where we face having to re-do everything to do with names properly, rather than the horrible series of hacks over 20 years.. #GetPersonExpeditionNameLookup + def tickspersonwallet(p): + manywallets = [] + wallets = Wallet.objects.all() + for w in wallets: + w.persons = w.people() # ephemeral attribute for web page + fillblankpeople(w) + if w.persons: + if p.fullname in w.persons: + manywallets.append(w) + fillblankothers(w) + w.ticks = w.get_ticks() # the complaints in colour form + return manywallets try: if last_name: @@ -82,79 +109,37 @@ def walletslistperson(request, first_name, last_name): except: #raise return render(request, 'errors/generic.html', {'message': f'Unrecognised name of a expo person: "{first_name} {last_name}"'}) - - #personyear = GetPersonExpeditionNameLookup(expedition).get(tripperson.lower()) - earliest = datetime.datetime.now().date() - - manywallets = [] - wallets = Wallet.objects.all() - for w in wallets: - w.persons = w.people() # ephemeral attribute for web page - w.ticks = {} # ephemeral tick boxes display - # check if there is a json - if not w.get_json(): - populatewallet(w) - else: - wp = w.people() - if not wp: # an -empty list - populatewallet(w) - else: - if len(wp) == 1: - nobody = wp[0].lower() - if nobody == 'unknown' or nobody == 'nobody' or nobody == ' ': - populatewallet(w) - if w.persons: - if p.fullname in w.persons: - #found person - manywallets.append(w) - - if not w.date(): - datewallet(w, earliest) - - c = w.cave() - if not c: - caveifywallet(w) - - w.ticks = w.get_ticks() # the complaints in colour form + manywallets = tickspersonwallet(p) return render(request, 'personwallets.html', { 'manywallets':manywallets, 'settings': settings, 'person': p}) + def walletslistyear(request, year): '''Page which displays a list of all the wallets in a specific year ''' + def ticksyearwallet(year): + manywallets = [] + wallets = Wallet.objects.all() + for w in wallets: + + if year == w.year(): + manywallets.append(w) + fillblankpeople(w) + fillblankothers(w) + w.ticks = w.get_ticks() # the complaints in colour form + else: + continue + + return manywallets + if year < 1976 or year > 2050: return render(request, 'errors/generic.html', {'message': 'Year out of range. Must be between 1976 and 2050'}) else: year = str(year) #return render(request, 'errors/generic.html', {'message': 'This page logic not implemented yet'}) - earliest = datetime.datetime.now().date() - manywallets = [] - wallets = Wallet.objects.all() - for w in wallets: - - if year == w.year(): - print(w.year(), w) - manywallets.append(w) - else: - continue - - wp = w.people() - if not wp: # an -empty list - populatewallet(w) - else: - if len(wp) == 1: - nobody = wp[0].lower() - if nobody == 'unknown' or nobody == 'nobody' or nobody == ' ': - populatewallet(w) - - if not w.date(): - datewallet(w, earliest) - - c = w.cave() - if not c: - caveifywallet(w) + manywallets = ticksyearwallet(year) return render(request, 'yearwallets.html', { 'manywallets':manywallets, 'settings': settings, 'year': year}) @@ -163,39 +148,23 @@ def walletslistyear(request, year): def cavewallets(request, caveid): '''Returns all the wallets for just one cave ''' - Gcavelookup = GetCaveLookup() if caveid in Gcavelookup: cave = Gcavelookup[caveid] else: return render(request,'errors/badslug.html', {'badslug': caveid}) - earliest = datetime.datetime.now().date() - # remove duplication. SOrting is done in the template wallets = set(Wallet.objects.filter(survexblock__survexfile__cave=cave)) # NB a filtered set manywallets = list(wallets) - for w in manywallets: - wp = w.people() - if not wp: # an -empty list - populatewallet(w) - else: - if len(wp) == 1: - nobody = wp[0].lower() - if nobody == 'unknown' or nobody == 'nobody' or nobody == ' ': - populatewallet(w) - - if not w.date(): - datewallet(w, earliest) - - c = w.cave() - if not c: - caveifywallet(w) - + fillblankpeople(w) + fillblankothers(w) + w.ticks = w.get_ticks() # the complaints in colour form return render(request, 'cavewallets.html', { 'manywallets':manywallets, 'settings': settings, 'cave': cave}) + def oldwallet(request, path): '''Now called only for non-standard wallet structures for pre-2000 wallets ''' diff --git a/templates/base.html b/templates/base.html index 6d43e63..a25e13c 100644 --- a/templates/base.html +++ b/templates/base.html @@ -56,7 +56,7 @@ <div id="nav"> {% block nav %} - <!-- Use id="nav" for the left side menu --> + <!-- Not used any more? --> {% endblock %} </div> @@ -65,16 +65,15 @@ {% block contentheader %} {% endblock %} -<div id="related"> -{% block related %} - -{% endblock %} -</div> + <div id="related"> + {% block related %} + {% endblock %} + </div> {% block content %} REPLACE : The content {% endblock %} - </div> - <div class="footer"> - </div> +</div> +<div class="footer"> +</div> </body> </html> diff --git a/templates/cavewallets.html b/templates/cavewallets.html index 8fd5d83..8ce1da1 100644 --- a/templates/cavewallets.html +++ b/templates/cavewallets.html @@ -14,8 +14,9 @@ traced to produce Tunnel or Therion drawings and eventually the final complete c <ul> <li>per year, e.g. <a href="/wallets/year/2019">2019</a> <li>per person, e.g. <a href="/wallets/person/MichaelSargent">Michael Sargent</a> - </ul> +{% include 'wallet_table.html' %} +<br /> <table width=95%> <tr><th>Wallet</th><th width=8%>Wallet Date</th><th>Wallet Name</th><th>People</th><th>Scans</th><th>Survex blocks</th><th>Drawings using these scans</th></tr> {% for wallet in manywallets|dictsort:"walletname" %} @@ -33,7 +34,7 @@ traced to produce Tunnel or Therion drawings and eventually the final complete c {% endfor %} </td> - <td style="padding:2px"> + <td style="padding:2px; font-size: 70%;"> {% for drawing in wallet.drawingfile_set.all %} <a href="{% url "dwgfilesingle" drawing.dwgpath %}">{{drawing.dwgpath}}</a><br> {% empty %} diff --git a/templates/personwallets.html b/templates/personwallets.html index 5586485..f513e20 100644 --- a/templates/personwallets.html +++ b/templates/personwallets.html @@ -15,46 +15,7 @@ traced to produce Tunnel or Therion drawings and eventually the final complete c <li>per cave, e.g. <a href="/cave/scans/1623-161">1623/161</a> </ul> - -<table width=95%> -<tr><th>Wallet</th><th width=8%>Wallet Date</th><th>Cave</th><th>Wallet Name</th> - -<!-- survex file--> -<th style="font-family: monospace; font-size: 150%;" title="Survex data">S</th> -<th style="font-family: monospace; font-size: 150%;" title="Survex Cave Description">C</th> -<th style="font-family: monospace; font-size: 150%;" title="Survex QMs">Q</th> - - -<!-- scanned--> -<th style="font-family: monospace; font-size: 150%;" title="Notes">N</th> -<th style="font-family: monospace; font-size: 150%;" title="Plan">P</th> -<th style="font-family: monospace; font-size: 150%;" title="Elevation">E</th> - -<th style="font-family: monospace; font-size: 150%;" title="Tunnel or Therion">T</th> -<th style="font-family: monospace; font-size: 150%;" title="Website updated">W</th> - -</tr> -{% for wallet in manywallets|dictsort:"walletname" %} - <tr> - <td style="padding:2px"><a href="{{wallet.get_absolute_url}}">{{wallet.walletname}}</a></td> - - <td style="padding:2px" >{{wallet.date}}</td> - <td style="padding:2px">{{wallet.cave}}</td> - <td style="padding:2px">{{wallet.name}}</td> - - <td style="padding:1px; background-color:{{wallet.ticks.S}}"> </td> - <td style="padding:1px; background-color:{{wallet.ticks.C}}"> </td> - <td style="padding:1px; background-color:{{wallet.ticks.Q}}"> </td> - - <td style="padding:1px; background-color:{{wallet.ticks.N}}"> </td> - <td style="padding:1px; background-color:{{wallet.ticks.P}}"> </td> - <td style="padding:1px; background-color:{{wallet.ticks.E}}"> </td> - - <td style="padding:1px; background-color:{{wallet.ticks.T}}"> </td> - <td style="padding:1px; background-color:{{wallet.ticks.W}}"> </td> - </tr> -{% endfor %} -</table> +{% include 'wallet_table.html' %} <br /> <table width=95%> <tr><th>Wallet</th><th width=8%>Wallet Date</th><th>Wallet Name</th><th width=15%>Other People</th><th>Cave</th><th>Scans</th><th>Survex blocks</th><th>Drawings using these scans</th></tr> @@ -74,7 +35,7 @@ traced to produce Tunnel or Therion drawings and eventually the final complete c {% endfor %} </td> - <td style="padding:2px"> + <td style="padding:2px; font-size: 70%;"> {% for drawing in wallet.drawingfile_set.all %} <a href="{% url "dwgfilesingle" drawing.dwgpath %}">{{drawing.dwgpath}}</a><br> {% empty %} diff --git a/templates/wallet_table.html b/templates/wallet_table.html new file mode 100644 index 0000000..b239e91 --- /dev/null +++ b/templates/wallet_table.html @@ -0,0 +1,40 @@ + +<table width=95%> +<tr><th>Wallet</th><th width=8%>Wallet Date</th><th>Cave</th><th>Wallet Name</th> + +<!-- survex file--> +<th style="font-family: monospace; font-size: 150%;" title="Survex data">S</th> +<th style="font-family: monospace; font-size: 150%;" title="Survex Cave Description">C</th> +<th style="font-family: monospace; font-size: 150%;" title="Survex QMs">Q</th> + + +<!-- scanned--> +<th style="font-family: monospace; font-size: 150%;" title="Notes">N</th> +<th style="font-family: monospace; font-size: 150%;" title="Plan">P</th> +<th style="font-family: monospace; font-size: 150%;" title="Elevation">E</th> + +<th style="font-family: monospace; font-size: 150%;" title="Tunnel or Therion">T</th> +<th style="font-family: monospace; font-size: 150%;" title="Website updated">W</th> + +</tr> +{% for wallet in manywallets|dictsort:"walletname" %} + <tr> + <td style="padding:2px"><a href="{{wallet.get_absolute_url}}">{{wallet.walletname}}</a></td> + + <td style="padding:2px" >{{wallet.date}}</td> + <td style="padding:2px">{{wallet.cave}}</td> + <td style="padding:2px">{{wallet.name}}</td> + + <td style="padding:1px; background-color:{{wallet.ticks.S}}"> </td> + <td style="padding:1px; background-color:{{wallet.ticks.C}}"> </td> + <td style="padding:1px; background-color:{{wallet.ticks.Q}}"> </td> + + <td style="padding:1px; background-color:{{wallet.ticks.N}}"> </td> + <td style="padding:1px; background-color:{{wallet.ticks.P}}"> </td> + <td style="padding:1px; background-color:{{wallet.ticks.E}}"> </td> + + <td style="padding:1px; background-color:{{wallet.ticks.T}}"> </td> + <td style="padding:1px; background-color:{{wallet.ticks.W}}"> </td> + </tr> +{% endfor %} +</table> diff --git a/templates/yearwallets.html b/templates/yearwallets.html index ce061c0..33b86ef 100644 --- a/templates/yearwallets.html +++ b/templates/yearwallets.html @@ -14,6 +14,9 @@ traced to produce Tunnel or Therion drawings and eventually the final complete c <li>per cave, e.g. <a href="/cave/scans/1623-161">1623/161</a> <li>per person, e.g. <a href="/wallets/person/MichaelSargent">Michael Sargent</a> </ul> + +{% include 'wallet_table.html' %} +<br /> <table width=95%> <tr><th>Wallet</th><th width=8%>Wallet Date</th><th>Wallet Name</th><th>People</th><th>Cave</th><th>Scans</th><th>Survex blocks</th><th>Drawings using these scans</th></tr> {% for wallet in manywallets|dictsort:"walletname" %} @@ -32,7 +35,7 @@ traced to produce Tunnel or Therion drawings and eventually the final complete c {% endfor %} </td> - <td style="padding:2px"> + <td style="padding:2px; font-size: 70%;"> {% for drawing in wallet.drawingfile_set.all %} <a href="{% url "dwgfilesingle" drawing.dwgpath %}">{{drawing.dwgpath}}</a><br> {% empty %}