2
0
mirror of https://expo.survex.com/repositories/troggle/.git synced 2025-12-15 07:57:09 +00:00

Populate blank wallet fields with survex data

This commit is contained in:
Philip Sargent
2022-07-29 20:55:19 +03:00
parent bc3da1182b
commit 724234949f
3 changed files with 69 additions and 10 deletions

View File

@@ -1,5 +1,6 @@
import os, stat
import re
import datetime
from pathlib import Path
from urllib.parse import urljoin, unquote as urlunquote
from urllib.request import urlopen
@@ -8,7 +9,7 @@ from django.conf import settings
from django.shortcuts import render
from django.http import HttpResponse
from troggle.core.models.survex import Wallet, SingleScan
from troggle.core.models.survex import Wallet, SingleScan, SurvexBlock
from troggle.core.models.caves import GetCaveLookup
from troggle.core.views.expo import getmimetype
#import parsers.surveys
@@ -21,9 +22,43 @@ need to check if inavlid query string is invalid, or produces multiple replies
and render a user-friendly error page.
'''
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:
for personrole in b.survexpersonrole_set.all():
survexpeople.append(personrole.personname)
w.people = list(set(survexpeople)) # remove duplicates
def datewallet(w, earliest):
blocks = SurvexBlock.objects.filter(scanswallet = w)
for b in blocks:
if b.date < earliest:
earliest = b.date
w.date = earliest
def caveifywallet(w):
print('*')
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
print(w.cave)
def walletslistyear(request, year):
'''Page which displays a list of all the wallets in a specific year
'''Page which displays a list of all the wallets in a specific year - TO BE WRITTEN
'''
if year < 1976 or year > 2050:
return render(request, 'errors/generic.html', {'message': 'Year out of range. Must be between 1976 and 2050'})
@@ -35,16 +70,38 @@ 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)
return render(request, 'cavewallets.html', { 'manywallets':manywallets, 'settings': settings, 'cave': cave})
def oldwallet(request, path):