summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhilip Sargent <philip.sargent@klebos.com>2022-07-29 20:55:19 +0300
committerPhilip Sargent <philip.sargent@klebos.com>2022-07-29 20:55:19 +0300
commit724234949f1770645b0f8c34221ae16b0615daf3 (patch)
tree993925a8f13becd0a4acbd1ed3abda679973c959
parentbc3da1182bf82ce59b0195ea0496ca123c544438 (diff)
downloadtroggle-724234949f1770645b0f8c34221ae16b0615daf3.tar.gz
troggle-724234949f1770645b0f8c34221ae16b0615daf3.tar.bz2
troggle-724234949f1770645b0f8c34221ae16b0615daf3.zip
Populate blank wallet fields with survex data
-rw-r--r--core/models/survex.py7
-rw-r--r--core/views/scans.py63
-rw-r--r--templates/cavewallets.html9
3 files changed, 69 insertions, 10 deletions
diff --git a/core/models/survex.py b/core/models/survex.py
index d8a5fb5..79a645e 100644
--- a/core/models/survex.py
+++ b/core/models/survex.py
@@ -191,6 +191,7 @@ class Wallet(models.Model):
return waldata
+ # Yes this is horribly, horribly inefficient, esp. for a page that have date, people and cave in it
def date(self):
jsondata = self.get_json()
return jsondata["date"]
@@ -199,12 +200,16 @@ class Wallet(models.Model):
jsondata = self.get_json()
return jsondata["people"]
+ def cave(self):
+ jsondata = self.get_json()
+ return jsondata["cave"]
+
def name(self):
jsondata = self.get_json()
return jsondata["name"]
def __str__(self):
- return str(self.walletname) + " (Wallet)"
+ return "[" + str(self.walletname) + " (Wallet)]"
class SingleScan(models.Model):
ffile = models.CharField(max_length=200)
diff --git a/core/views/scans.py b/core/views/scans.py
index 7d933c7..fda3d6d 100644
--- a/core/views/scans.py
+++ b/core/views/scans.py
@@ -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):
diff --git a/templates/cavewallets.html b/templates/cavewallets.html
index 49a36e3..51e5d76 100644
--- a/templates/cavewallets.html
+++ b/templates/cavewallets.html
@@ -12,7 +12,7 @@ traced to produce Tunnel or Therion drawings and eventually the final complete c
<p>This lists all the files in a wallet, some of which may not be for this specific cave.
<table width=95%>
-<tr><th>Wallet</th><th>Wallet Date</th><th>Wallet Name</th><th>People</th><th>Scans</th><th>Survex blocks</th><th>Survex dates</th><th>Drawings using these scans</th></tr>
+<tr><th>Wallet</th><th>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" %}
<tr>
<td style="padding:2px"><a href="{{wallet.get_absolute_url}}">{{wallet.walletname}}</a></td>
@@ -20,6 +20,7 @@ traced to produce Tunnel or Therion drawings and eventually the final complete c
<td style="padding:2px">{{wallet.date}}</td>
<td style="padding:2px">{{wallet.name}}</td>
<td style="padding:2px">{{wallet.people}}</td>
+ <td style="padding:2px">{{wallet.cave}}</td>
<td align="right" style="padding:2px">{{wallet.singlescan_set.all|length}}</td>
<td style="padding:2px">
@@ -27,11 +28,7 @@ traced to produce Tunnel or Therion drawings and eventually the final complete c
<a href="{% url "svx" survexblock.survexfile.path %}">{{survexblock}}</a>
{% endfor %}
</td>
- <td style="padding:2px">
- {% for survexblock in wallet.survexblock_set.all %}
- {{survexblock.date}}&nbsp;&nbsp;
- {% endfor %}
- </td>
+
<td style="padding:2px">
{% for drawing in wallet.drawingfile_set.all %}
<a href="{% url "dwgfilesingle" drawing.dwgpath %}">{{drawing.dwgpath}}</a><br>