mirror of
https://expo.survex.com/repositories/troggle/.git
synced 2025-12-17 17:57:06 +00:00
Much QM re-engineering
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user