Fix entrance edit too, saving slug now

This commit is contained in:
2023-04-22 03:26:53 +01:00
parent 2ed66fe3d0
commit 94b8b357fb
5 changed files with 123 additions and 71 deletions

View File

@@ -376,8 +376,7 @@ def edit_cave(request, path="", slug=None):
ceinst.save()
try:
cave_file = cave.file_output()
# print(cave_file)
write_and_commit([cave_file], f"Online edit of {cave}")
write_and_commit([cave_file], f"Online edit of cave {cave}")
# leave other exceptions unhandled so that they bubble up to user interface
except PermissionError:
message = f"CANNOT save this file.\nPERMISSIONS incorrectly set on server for this file {cave.filename}. Ask a nerd to fix this."
@@ -411,7 +410,7 @@ def edit_cave(request, path="", slug=None):
@login_required_if_public
def edit_entrance(request, path="", caveslug=None, slug=None):
def edit_entrance(request, path="", caveslug=None, entslug=None):
"""This is the form that edits the entrance data for a single entrance and writes out
an XML file in the :expoweb: repo folder
@@ -425,9 +424,15 @@ def edit_entrance(request, path="", caveslug=None, slug=None):
try:
cave = Cave.objects.get(caveslug__slug=caveslug)
except:
return render(request, "errors/badslug.html", {"badslug": f"{slug} {caveslug} - from edit_entrance()"})
return render(request, "errors/badslug.html", {"badslug": f"for cave {caveslug} - from edit_entrance()"})
if slug:
try:
entrance = Entrance.objects.get(slug=entslug)
except:
return render(request, "errors/badslug.html", {"badslug": f"for entrance {slug} - from edit_entrance()"})
if entslug:
# print(f"{caveslug=} {entslug=} {path=}")
caveAndEntrance = CaveAndEntrance.objects.get(entrance=entrance, cave=cave)
entlettereditable = False
else:
@@ -441,24 +446,31 @@ def edit_entrance(request, path="", caveslug=None, slug=None):
if form.is_valid() and entletter.is_valid():
entrance = form.save(commit=False)
entrance_letter = entletter.save(commit=False)
if slug is None:
print(f"- POST {caveslug=} {entslug=} {path=}")
if entslug is None:
if entletter.cleaned_data["entrance_letter"]:
slugname = cave.slug() + entletter.cleaned_data["entrance_letter"]
else:
slugname = cave.slug()
entrance.slug = slugname
entrance.cached_primary_slug = slugname
entrance.filename = slugname + ".html"
entrance.save()
entrance_file = entrance.file_output()
print(f"Online edit of entrance {entrance.slug}")
cave_file = cave.file_output()
write_and_commit([entrance_file, cave_file], f"Online edit of {cave}{entletter}")
entrance.save()
if slug is None:
write_and_commit([entrance_file, cave_file], f"Online edit of entrance {entrance.slug}")
if entslug is None:
entrance_letter.save()
return HttpResponseRedirect("/" + cave.url)
else:
# re-read entrance data from file.
filename = str(entrance.slug +".html")
readentrance(filename, ent=entrance)
form = EntranceForm(instance=entrance)
if slug is None:
if entslug is None:
entletter = EntranceLetterForm()
else:
entletter = caveAndEntrance.entrance_letter