summaryrefslogtreecommitdiffstats
path: root/core/views/caves.py
diff options
context:
space:
mode:
authorPhilip Sargent <philip.sargent@klebos.com>2022-07-06 15:38:53 +0300
committerPhilip Sargent <philip.sargent@klebos.com>2022-07-06 15:38:53 +0300
commit7dc3cc3b91e0c8dff87ccc09a73421ab64c2a919 (patch)
treed9e2526ba9af54687a18c3bf9b0858f9b63ba368 /core/views/caves.py
parentee4237b14cd831114f8a3a787fc908f62e72f4a4 (diff)
downloadtroggle-7dc3cc3b91e0c8dff87ccc09a73421ab64c2a919.tar.gz
troggle-7dc3cc3b91e0c8dff87ccc09a73421ab64c2a919.tar.bz2
troggle-7dc3cc3b91e0c8dff87ccc09a73421ab64c2a919.zip
fix for individual QM display from survex
Diffstat (limited to 'core/views/caves.py')
-rw-r--r--core/views/caves.py50
1 files changed, 36 insertions, 14 deletions
diff --git a/core/views/caves.py b/core/views/caves.py
index 1b47c39..616e69f 100644
--- a/core/views/caves.py
+++ b/core/views/caves.py
@@ -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.