forked from expo/troggle
fix for individual QM display from survex
This commit is contained in:
@@ -481,26 +481,48 @@ def caveQMs(request, slug):
|
||||
else:
|
||||
return render(request,'cave_qms.html', {'cave': cave})
|
||||
|
||||
def qm(request,cave_id,qm_id,year,grade=None, blockname=""):
|
||||
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 and for survex-imported QMs,
|
||||
Fixed and working July 2022, for both CSV imported QMs
|
||||
needs refactoring though.
|
||||
For survex-imported QMs we are not getting unique objects returned, so the query needs fixing.
|
||||
'''
|
||||
year=int(year)
|
||||
|
||||
try:
|
||||
c=getCave(cave_id)
|
||||
manyqms=c.get_QMs()
|
||||
qm=manyqms.get(number=qm_id,found_by__date__year=year, found_by__cave_slug=c.slug())
|
||||
return render(request,'qm.html', {'qm': qm})
|
||||
except QM.DoesNotExist:
|
||||
return render(request,'errors/badslug.html', {'badslug': f'{cave_id=} {year=} {qm_id=} {blockname=}'})
|
||||
except MultipleObjectsReturned:
|
||||
qm = manyqms.filter(blockname = blockname) # we could still get multiple objects..
|
||||
if qm:
|
||||
|
||||
if blockname == 'None':
|
||||
# CSV import QMs, use old technique
|
||||
try:
|
||||
c=getCave(cave_id)
|
||||
manyqms=c.get_QMs()
|
||||
qm=manyqms.get(number=qm_id,found_by__date__year=year, found_by__cave_slug=c.slug())
|
||||
return render(request,'qm.html', {'qm': qm})
|
||||
else:
|
||||
except QM.DoesNotExist:
|
||||
return render(request,'errors/badslug.html', {'badslug': f'{cave_id=} {year=} {qm_id=} {blockname=}'})
|
||||
|
||||
else:
|
||||
# survex import QMs, need to disambiguate with blockname
|
||||
# slug = f'{str(self.cave)}-{self.found_by.date.year}-{self.blockname}{self.number}{self.grade}'
|
||||
|
||||
try:
|
||||
qmslug = f'{cave_id}-{year}-{blockname=}{qm_id}{grade}'
|
||||
c=getCave(cave_id)
|
||||
manyqms=c.get_QMs()
|
||||
qm=manyqms.get(found_by__date__year=year, blockname=blockname, number=qm_id, grade=grade)
|
||||
if qm:
|
||||
print(qm, f'{qmslug=}:{cave_id=} {year=} {qm_id=} {blockname=} {qm.expoyear=}')
|
||||
return render(request,'qm.html', {'qm': qm})
|
||||
else:
|
||||
return render(request,'errors/badslug.html', {'badslug': f'{cave_id=} {year=} {qm_id=} {blockname=}'})
|
||||
except MultipleObjectsReturned:
|
||||
if len(qm) > 1:
|
||||
for q in qm:
|
||||
print(qm)
|
||||
return render(request,'qm.html', {'qm': qm[0]})
|
||||
else:
|
||||
return render(request,'qm.html', {'qm': qm})
|
||||
except QM.DoesNotExist:
|
||||
return render(request,'errors/badslug.html', {'badslug': f'{cave_id=} {year=} {qm_id=} {blockname=}'})
|
||||
|
||||
|
||||
def get_qms(request, caveslug):
|
||||
'''Does not crash, but just returns a text list of the entrances for a cave.
|
||||
|
||||
Reference in New Issue
Block a user