mirror of
https://expo.survex.com/repositories/troggle/.git
synced 2025-12-18 08:37:10 +00:00
fix edit entrance bug
This commit is contained in:
@@ -453,6 +453,9 @@ def edit_entrance(request, path="", caveslug=None, entslug=None):
|
||||
Warning. This uses Django deep magic for multiple forms and the CaveAndEntrance class.
|
||||
|
||||
It does save the data into into the database directly, not by parsing the file.
|
||||
|
||||
GET RID of all this entranceletter stuff. Far too overcomplexified.
|
||||
We don't need it. Just the entrance slug is fine, then check uniqueness.
|
||||
"""
|
||||
|
||||
try:
|
||||
@@ -479,23 +482,35 @@ def edit_entrance(request, path="", caveslug=None, entslug=None):
|
||||
|
||||
if caveAndEntrance.entranceletter == "" and cave.entrances().count() > 0 :
|
||||
# this should not be blank on a multiple-entrance cave
|
||||
# but it doesn't trigger the entrnce letter form unless entletter has a value
|
||||
# but it doesn't trigger the entrance letter form unless entletter has a value
|
||||
entlettereditable = True
|
||||
|
||||
print(f"{entlettereditable=}")
|
||||
# if the entletter is no editable, then the entletterform does not appear and so is always invalid.
|
||||
|
||||
if request.POST:
|
||||
print(f"POST Online edit of entrance: '{entrance}' where {cave=}")
|
||||
form = EntranceForm(request.POST, instance=entrance)
|
||||
entletterform = EntranceLetterForm(request.POST, instance=caveAndEntrance)
|
||||
if form.is_valid() and entletterform.is_valid():
|
||||
entrance = form.save(commit=False)
|
||||
ce = entletterform.save(commit=False)
|
||||
print(f"- POST {caveslug=} {entslug=} {ce=} {entletterform.cleaned_data['entranceletter']=} {path=}")
|
||||
entform = EntranceForm(request.POST, instance=entrance)
|
||||
if not entlettereditable:
|
||||
entranceletter = caveAndEntrance.entranceletter
|
||||
ce = caveAndEntrance
|
||||
else:
|
||||
entletterform = EntranceLetterForm(request.POST, instance=caveAndEntrance)
|
||||
if entletterform.is_valid():
|
||||
ce = entletterform.save(commit=False)
|
||||
entranceletter = entletterform.cleaned_data["entranceletter"]
|
||||
else:
|
||||
print(f"- POST INVALID {caveslug=} {entslug=} {path=} entletterform invalid.")
|
||||
return render(request, "errors/badslug.html", {"entletter problem in edit_entrances()"})
|
||||
# if entform.is_valid() and entletterform.is_valid():
|
||||
if entform.is_valid():
|
||||
entrance = entform.save(commit=False)
|
||||
|
||||
print(f"- POST {caveslug=} {entslug=} {entranceletter=} {path=}")
|
||||
if entslug is None:
|
||||
if entletterform.cleaned_data["entranceletter"]:
|
||||
slugname = cave.slug() + entletterform.cleaned_data["entranceletter"]
|
||||
print(f"- POST letter {entletterform.cleaned_data['entranceletter']=}")
|
||||
if entranceletter:
|
||||
slugname = cave.slug() + entranceletter
|
||||
print(f"- POST letter {entranceletter=}")
|
||||
else:
|
||||
slugname = cave.slug()
|
||||
entrance.slug = slugname
|
||||
@@ -524,6 +539,8 @@ def edit_entrance(request, path="", caveslug=None, entslug=None):
|
||||
print(f"- POST WRITE letter: '{ce}' {entrance=}")
|
||||
write_and_commit([entrance_file, cave_file], f"Online edit of entrance {entrance.slug}")
|
||||
return HttpResponseRedirect("/" + cave.url)
|
||||
else: # one of the forms is not valid
|
||||
print(f"- POST INVALID {caveslug=} {entslug=} {path=} entform valid:{entform.is_valid()} entletterform valid:{entletterform.is_valid()}")
|
||||
|
||||
else: # GET the page, not POST, or if either of the forms were invalid when POSTed
|
||||
entletterform = None
|
||||
|
||||
Reference in New Issue
Block a user