summaryrefslogtreecommitdiffstats
path: root/core/views_caves.py
diff options
context:
space:
mode:
authorexpo <expo@expobox.potato.hut>2012-08-12 19:10:23 +0200
committerexpo <expo@expobox.potato.hut>2012-08-12 19:10:23 +0200
commit28047277f1fb0679c3b94bb5a14d2384a94cc27f (patch)
treeaef1c4569ab3807e5aed76512c42ae3cee9d0ca8 /core/views_caves.py
parent5ff163efaa0c5c6d154b1f47991d41ec4abfccef (diff)
downloadtroggle-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.py29
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: