diff options
author | Philip Sargent <philip.sargent@klebos.com> | 2022-07-06 15:38:53 +0300 |
---|---|---|
committer | Philip Sargent <philip.sargent@klebos.com> | 2022-07-06 15:38:53 +0300 |
commit | 7dc3cc3b91e0c8dff87ccc09a73421ab64c2a919 (patch) | |
tree | d9e2526ba9af54687a18c3bf9b0858f9b63ba368 /core/views/caves.py | |
parent | ee4237b14cd831114f8a3a787fc908f62e72f4a4 (diff) | |
download | troggle-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.py | 50 |
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. |