diff options
author | expo <expo@expobox.potato.hut> | 2012-08-12 19:10:23 +0200 |
---|---|---|
committer | expo <expo@expobox.potato.hut> | 2012-08-12 19:10:23 +0200 |
commit | 28047277f1fb0679c3b94bb5a14d2384a94cc27f (patch) | |
tree | aef1c4569ab3807e5aed76512c42ae3cee9d0ca8 /core/views_caves.py | |
parent | 5ff163efaa0c5c6d154b1f47991d41ec4abfccef (diff) | |
download | troggle-28047277f1fb0679c3b94bb5a14d2384a94cc27f.tar.gz troggle-28047277f1fb0679c3b94bb5a14d2384a94cc27f.tar.bz2 troggle-28047277f1fb0679c3b94bb5a14d2384a94cc27f.zip |
Started removing foreignkeys to caves, to achieve greater flexability. Some log book entries stuff may be broken. Add ability to make new caves and entrances via website.
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: |