From 2c5ebde308b77d5a38b576957d15926836c735bf Mon Sep 17 00:00:00 2001 From: Philip Sargent Date: Thu, 7 Sep 2023 00:01:03 +0300 Subject: Survex directories report tidied --- core/views/caves.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'core/views/caves.py') diff --git a/core/views/caves.py b/core/views/caves.py index 09e1f7d..a002a0e 100644 --- a/core/views/caves.py +++ b/core/views/caves.py @@ -297,14 +297,14 @@ def rendercave(request, cave, slug, cave_id=""): return r -def cavepage(request, karea, subpath): +def cavepage(request, karea=None, subpath=None, slug=None): """Displays a cave description page accessed by kataster area number specifically OR accessed by cave.url specifically set in data, e.g. "1623/000/000" <= cave-data/1623-000.html "1623/41/115.htm" <= cave-data/1623-115.html - so we have to query the database to fine the URL as we cannot rely on the url actually telling us the cave by inspection. + so we have to query the database to find the URL as we cannot rely on the url actually telling us the cave by inspection. NOTE that old caves have ".html" (or ".htm") in the URL as they used to be actual files. But since 2006 these URLs refer to virtual pages generated on the fly by troggle, so the".html" is confusing and redundant. @@ -312,9 +312,17 @@ def cavepage(request, karea, subpath): There are also A LOT OF URLS to e.g. /1623/161/l/rl89a.htm which are IMAGES and real html files in cave descriptions. These need to be handled HERE too (accident of history). """ + if slug: + Gcavelookup = GetCaveLookup() + if slug in Gcavelookup: + cave = Gcavelookup[slug] + return rendercave(request, cave, slug) + else: + message = f"Failed to find cave from identifier given: {slug}." + return render(request, "errors/generic.html", {"message": message}) + kpath = karea + subpath # print(f" ! cavepage:'{kpath}' kataster area:'{karea}' rest of path:'{subpath}'") - try: cave = Cave.objects.get(url=kpath) # ideally this will be unique except Cave.DoesNotExist: -- cgit v1.2.3