diff options
author | Philip Sargent <philip.sargent@gmail.com> | 2023-10-11 17:02:11 +0300 |
---|---|---|
committer | Philip Sargent <philip.sargent@gmail.com> | 2023-10-11 17:02:11 +0300 |
commit | 7e1c8797b88c9f5257661007249530c9b7ed594c (patch) | |
tree | 2887a2bec3f637e5f53e17258af47c9fdca7d3ad /core/views/caves.py | |
parent | 2452fe575282a17498ad25f1731e71bc37e33d2a (diff) | |
download | troggle-7e1c8797b88c9f5257661007249530c9b7ed594c.tar.gz troggle-7e1c8797b88c9f5257661007249530c9b7ed594c.tar.bz2 troggle-7e1c8797b88c9f5257661007249530c9b7ed594c.zip |
fix edit entrance bug
Diffstat (limited to 'core/views/caves.py')
-rw-r--r-- | core/views/caves.py | 37 |
1 files changed, 27 insertions, 10 deletions
diff --git a/core/views/caves.py b/core/views/caves.py index bd1de70..90a8451 100644 --- a/core/views/caves.py +++ b/core/views/caves.py @@ -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 |