diff options
Diffstat (limited to 'core/views_caves.py')
-rw-r--r-- | core/views_caves.py | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/core/views_caves.py b/core/views_caves.py index ae5f46f..2590cf1 100644 --- a/core/views_caves.py +++ b/core/views_caves.py @@ -1,4 +1,4 @@ -from troggle.core.models import Cave, CaveAndEntrance, Survey, Expedition, QM, CaveDescription, Entrance, Area +from troggle.core.models import CaveSlug, Cave, CaveAndEntrance, Survey, Expedition, QM, CaveDescription, EntranceSlug, Entrance, Area from troggle.core.forms import CaveForm, CaveAndEntranceFormSet, VersionControlCommentForm, EntranceForm import troggle.core.models as models import troggle.settings as settings @@ -94,13 +94,22 @@ def caveSlug(request, slug): @login_required_if_public def edit_cave(request, slug=None): - cave = Cave.objects.get(caveslug__slug = slug) + if slug is not None: + cave = Cave.objects.get(caveslug__slug = slug) + else: + cave = Cave() if request.POST: form = CaveForm(request.POST, instance=cave) ceFormSet = CaveAndEntranceFormSet(request.POST) versionControlForm = VersionControlCommentForm(request.POST) if form.is_valid() and ceFormSet.is_valid() and versionControlForm.is_valid(): - cave = form.save() + cave = form.save(commit = False) + cave.filename = form.cleaned_data["slug"] + ".html" + cave.save() + form.save_m2m() + if slug is None: + cs = CaveSlug(cave = cave, slug = form.cleaned_data["slug"], primary = True) + cs.save() ceinsts = ceFormSet.save(commit=False) for ceinst in ceinsts: ceinst.cave = cave @@ -121,12 +130,22 @@ def edit_cave(request, slug=None): @login_required_if_public def editEntrance(request, slug=None): - entrance = Entrance.objects.get(entranceslug__slug = slug) + if slug is not None: + entrance = Entrance.objects.get(entranceslug__slug = slug) + else: + entrance = Entrance() if request.POST: form = EntranceForm(request.POST, instance = entrance) versionControlForm = VersionControlCommentForm(request.POST) if form.is_valid() and versionControlForm.is_valid(): - entrance = form.save() + entrance = form.save(commit = False) + entrance.filename = form.cleaned_data["slug"] + ".html" + if slug is None: + entrance.cached_primary_slug = form.cleaned_data["slug"] + entrance.save() + if slug is None: + es = EntranceSlug(entrance = entrance, slug = form.cleaned_data["slug"], primary = True) + es.save() entrance.writeDataFile() return HttpResponseRedirect("/" + entrance.url) else: |