diff options
Diffstat (limited to 'core/views/caves.py')
-rw-r--r-- | core/views/caves.py | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/core/views/caves.py b/core/views/caves.py index 3fbc934..1b47c39 100644 --- a/core/views/caves.py +++ b/core/views/caves.py @@ -481,31 +481,31 @@ def caveQMs(request, slug): else: return render(request,'cave_qms.html', {'cave': cave}) -def qm(request,cave_id,qm_id,year,grade=None): +def qm(request,cave_id,qm_id,year,grade=None, blockname=""): '''Reports on one specific QM Fixed and working July 2022, for both CSV imported QMs and for survex-imported QMs, - need refactoring though. + needs refactoring though. ''' year=int(year) - try: - qm=getCave(cave_id).get_QMs().get(number=qm_id,found_by__date__year=year) - return render(request,'qm.html',locals()) - except Cave.MultipleObjectsReturned: # entirely the wrong action, REPLACE with the right display - caves = Cave.objects.filter(kataster_number=cave_id) - return render(request, 'svxcaveseveral.html', {'settings': settings, "caves":caves }) + 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=}'}) - - # Ouch, this does not look like what we want to do. We need to replace this with something better. - url=urllib.parse.urljoin(settings.URL_ROOT, r'/admin/core/qm/add/'+'?'+ r'number=' + qm_id) - if grade: - url += r'&grade=' + grade - return HttpResponseRedirect(url) - + 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: + return render(request,'qm.html', {'qm': qm}) + else: + 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. Used internally by the JSON export code? Archeology required.. + cf get_entrances() above ''' try: cave = Cave.objects.get(caveslug__slug = caveslug) |