2
0
mirror of https://expo.survex.com/repositories/troggle/.git synced 2024-11-21 23:01:52 +00:00

infinite loop bug fixed

This commit is contained in:
Philip Sargent 2024-04-10 21:23:52 +01:00
parent 65f0c1e29f
commit b73ac24a3b

View File

@ -40,6 +40,10 @@ todo = """
- Learn to use Django .select_related() and .prefetch_related() to speed things up - Learn to use Django .select_related() and .prefetch_related() to speed things up
especially on the big report pages especially on the big report pages
https://zerotobyte.com/how-to-use-django-select-related-and-prefetch-related/ https://zerotobyte.com/how-to-use-django-select-related-and-prefetch-related/
- Remove all the URL rewriting which is there because we have not yet edited all the caves to use
our new (2023) standard addressing of /16xx/NNN/NNN.html where *all* caves are assumed to have their
own directory 16xx/NNN/ even if they have no images to put in it.
""" """
@ -97,7 +101,7 @@ def numericalcmp(x, y):
def caveKey(c): def caveKey(c):
"""This function goes into a lexicogrpahic sort function, and the values are strings, """This function goes into a lexicographic sort function, and the values are strings,
but we want to sort numberically on kataster number before sorting on unofficial number. but we want to sort numberically on kataster number before sorting on unofficial number.
""" """
if not c.kataster_number: if not c.kataster_number:
@ -337,11 +341,14 @@ def cavepage(request, karea=None, subpath=None):
NOTE that old caves have ".html" (or ".htm") in the URL as they used to be actual files. But since 2006 these URLs 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. refer to virtual pages generated on the fly by troggle, so the".html" is confusing and redundant.
But this confused Becka so it was re-instated. Thus creating more confusion for future generations...
There are also A LOT OF URLS to e.g. /1623/161/l/rl89a.htm which are IMAGES and real html files 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). in cave descriptions. These need to be handled HERE too (accident of history).
""" """
if not subpath or subpath=='/':
print(f"{karea=} {subpath=} ")
return render(request, "pagenotfound.html", {"path": f"{karea}/{subpath}"}, status=404)
# lack of validation for karea, 162x # lack of validation for karea, 162x
# subpath has an initial / # subpath has an initial /
kpath = karea + subpath kpath = karea + subpath
@ -353,6 +360,7 @@ def cavepage(request, karea=None, subpath=None):
return rendercave(request, cave, cave.slug()) return rendercave(request, cave, cave.slug())
subpath = subpath.strip("//")
# re do all this using pathlib functions # re do all this using pathlib functions
parts = subpath.strip("/").split("/") parts = subpath.strip("/").split("/")
if len(parts) > 5: if len(parts) > 5:
@ -367,11 +375,10 @@ def cavepage(request, karea=None, subpath=None):
else: else:
return redirect(f"/caves") return redirect(f"/caves")
# BUGGER the real problem is the the cave descrit has embedded in it images like # BUGGER the real problem is the the cave descript has embedded in it images like
# src="110/entrance.jpeg and since the cave url is now /1623/110/110.html # src="110/entrance.jpeg and since the cave url is now /1623/110/110.html
# the images try to load from /1623/110/110/entrance.jpeg and of course fail. # the images try to load from /1623/110/110/entrance.jpeg and of course fail.
# THIS IS A HORRIBLE HACK # THIS IS A HORRIBLE HACK
if len(parts) == 1: # simple filename, no folders in path, need to insert caveid if len(parts) == 1: # simple filename, no folders in path, need to insert caveid
subparts = parts[0].split(".") subparts = parts[0].split(".")
caveid = subparts[0] caveid = subparts[0]