summaryrefslogtreecommitdiffstats
path: root/core/views/caves.py
diff options
context:
space:
mode:
authorPhilip Sargent <philip.sargent@gmail.com>2023-03-17 20:01:52 +0000
committerPhilip Sargent <philip.sargent@gmail.com>2023-03-17 20:01:52 +0000
commit7345e3a3286ebf2771a7c7800c83632cc9930fa1 (patch)
treeff58cd35a20dc382dfa696d2edcf82664fbeba0d /core/views/caves.py
parentde54576d1131c0f2020dca082499f837ad6c672e (diff)
downloadtroggle-7345e3a3286ebf2771a7c7800c83632cc9930fa1.tar.gz
troggle-7345e3a3286ebf2771a7c7800c83632cc9930fa1.tar.bz2
troggle-7345e3a3286ebf2771a7c7800c83632cc9930fa1.zip
Much QM re-engineering
Diffstat (limited to 'core/views/caves.py')
-rw-r--r--core/views/caves.py14
1 files changed, 8 insertions, 6 deletions
diff --git a/core/views/caves.py b/core/views/caves.py
index fa5e7ef..c866718 100644
--- a/core/views/caves.py
+++ b/core/views/caves.py
@@ -536,9 +536,11 @@ def caveQMs(request, slug):
def qm(request, cave_id, qm_id, year, grade=None, blockname=None):
"""Reports on one specific QM
Fixed and working July 2022, for both CSV imported QMs
- needs refactoring though.
+
+ Needs refactoring though! Uses extremely baroque way of getting the QMs instead of querying for QM objects
+ directly, presumably as a result of a baroque history.
- 290 has several QMS with the same number, grade, year (2108) and first 8 chars of the survexblock. This crashes things.
+ Many caves have several QMS with the same number, grade, year (2018) and first 8 chars of the survexblock. This crashes things, so the terminal char of the survexblock name was added
"""
year = int(year)
@@ -547,7 +549,7 @@ def qm(request, cave_id, qm_id, year, grade=None, blockname=None):
# CSV import QMs, use old technique
try:
c = getCave(cave_id)
- manyqms = c.get_QMs()
+ manyqms = c.get_open_QMs() | c.get_ticked_QMs() # set union operation
qm = manyqms.get(number=qm_id, expoyear=year)
return render(request, "qm.html", {"qm": qm})
except QM.DoesNotExist:
@@ -565,12 +567,12 @@ def qm(request, cave_id, qm_id, year, grade=None, blockname=None):
qmslug = f"{cave_id}-{year}-{blockname=}{qm_id}{grade}"
print(f"{qmslug=}")
c = getCave(cave_id)
- manyqms = c.get_QMs()
+ manyqms = c.get_open_QMs() | c.get_ticked_QMs() # set union operation
qmqs = manyqms.filter(expoyear=year, blockname=blockname, number=qm_id, grade=grade)
if len(qmqs) > 1:
for q in qmqs:
print(qmqs)
- message = f"Multiple QMs with the same cave, year, number, grade AND first 8 chars of the survexblock name. (Could be caused by incomplete databasereset). Fix this in the survex file(s). {cave_id=} {year=} {qm_id=} {blockname=}"
+ message = f"Multiple QMs with the same cave, year, number, grade AND first-several+terminal chars of the survexblock name. (Could be caused by incomplete databasereset). Fix this in the survex file(s). {cave_id=} {year=} {qm_id=} {blockname=}"
return render(request, "errors/generic.html", {"message": message})
else:
qm = qmqs.get(expoyear=year, blockname=blockname, number=qm_id, grade=grade)
@@ -588,7 +590,7 @@ def qm(request, cave_id, qm_id, year, grade=None, blockname=None):
{"badslug": f"Failed get {cave_id=} {year=} {qm_id=} {grade=} {blockname=}"},
)
except MultipleObjectsReturned:
- message = f"Multiple QMs with the same cave, year, number, grade AND first 8 chars of the survexblock name. (Could be caused by incomplete databasereset). Fix this in the survex file(s). {cave_id=} {year=} {qm_id=} {blockname=}"
+ message = f"Multiple QMs with the same cave, year, number, grade AND first-several+terminal chars of the survexblock name. (Could be caused by incomplete databasereset). Fix this in the survex file(s). {cave_id=} {year=} {qm_id=} {blockname=}"
return render(request, "errors/generic.html", {"message": message})
except QM.DoesNotExist:
# raise