summaryrefslogtreecommitdiffstats
path: root/core/views_caves.py
diff options
context:
space:
mode:
Diffstat (limited to 'core/views_caves.py')
-rw-r--r--core/views_caves.py82
1 files changed, 60 insertions, 22 deletions
diff --git a/core/views_caves.py b/core/views_caves.py
index 8dc2ebe..d8ced23 100644
--- a/core/views_caves.py
+++ b/core/views_caves.py
@@ -1,10 +1,10 @@
from troggle.core.models import Cave, CaveAndEntrance, Survey, Expedition, QM, CaveDescription, Entrance
-from troggle.core.forms import CaveForm, CaveAndEntranceFormSet
+from troggle.core.forms import CaveForm, CaveAndEntranceFormSet, VersionControlCommentForm, EntranceForm
import troggle.core.models as models
import troggle.settings as settings
from troggle.helper import login_required_if_public
-from django.forms.models import formset_factory
+from django.forms.models import modelformset_factory
from django import forms
from django.core.urlresolvers import reverse
from utils import render_with_context # see views_logbooks for explanation on this.
@@ -21,12 +21,23 @@ def getCave(cave_id):
cave = Cave.objects.get(unofficial_number=cave_id)
return cave
+def caveCmp(x, y):
+ if x.kataster_number:
+ if y.kataster_number:
+ return cmp(x.kataster_number, y.kataster_number)
+ else:
+ return -1
+ else:
+ return 1
+
def caveindex(request):
caves = Cave.objects.all()
notablecavehrefs = [ "161", "204", "258", "76" ] # could detect notability by trips and notability of people who have been down them
notablecaves = [Cave.objects.get(kataster_number=kataster_number) for kataster_number in notablecavehrefs ]
- caves1623 = Cave.objects.filter(area__short_name = "1623")
- caves1626 = Cave.objects.filter(area__short_name = "1626")
+ caves1623 = list(Cave.objects.filter(area__short_name = "1623"))
+ caves1626 = list(Cave.objects.filter(area__short_name = "1626"))
+ caves1623.sort(caveCmp)
+ caves1626.sort(caveCmp)
return render_with_context(request,'caveindex.html', {'caves1623': caves1623, 'caves1626': caves1626, 'notablecaves':notablecaves, 'cavepage': True})
def cave(request, cave_id='', offical_name=''):
@@ -37,33 +48,33 @@ def cave(request, cave_id='', offical_name=''):
return render_with_context(request,'cave.html', {'cave': cave, 'cavepage': True})
def caveEntrance(request, slug):
- cave = Cave.objects.get(slug = slug)
+ cave = Cave.objects.get(caveslug__slug = slug)
if cave.non_public and settings.PUBLIC_SITE and not request.user.is_authenticated():
return render_with_context(request,'nonpublic.html', {'instance': cave})
else:
return render_with_context(request,'cave_entrances.html', {'cave': cave})
def caveDescription(request, slug):
- cave = Cave.objects.get(slug = slug)
+ cave = Cave.objects.get(caveslug__slug = slug)
if cave.non_public and settings.PUBLIC_SITE and not request.user.is_authenticated():
return render_with_context(request,'nonpublic.html', {'instance': cave})
else:
return render_with_context(request,'cave_uground_description.html', {'cave': cave})
def caveQMs(request, slug):
- cave = Cave.objects.get(slug = slug)
+ cave = Cave.objects.get(caveslug__slug = slug)
if cave.non_public and settings.PUBLIC_SITE and not request.user.is_authenticated():
return render_with_context(request,'nonpublic.html', {'instance': cave})
else:
return render_with_context(request,'cave_qms.html', {'cave': cave})
def caveLogbook(request, slug):
- cave = Cave.objects.get(slug = slug)
+ cave = Cave.objects.get(caveslug__slug = slug)
if cave.non_public and settings.PUBLIC_SITE and not request.user.is_authenticated():
return render_with_context(request,'nonpublic.html', {'instance': cave})
else:
return render_with_context(request,'cave_logbook.html', {'cave': cave})
def caveSlug(request, slug):
- cave = Cave.objects.get(slug = slug)
+ cave = Cave.objects.get(caveslug__slug = slug)
if cave.non_public and settings.PUBLIC_SITE and not request.user.is_authenticated():
return render_with_context(request,'nonpublic.html', {'instance': cave, 'cave_editable': slug})
else:
@@ -71,22 +82,49 @@ def caveSlug(request, slug):
@login_required_if_public
def edit_cave(request, slug=None):
- cave = Cave.objects.get(slug = slug)
+ cave = Cave.objects.get(caveslug__slug = slug)
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()
+ ceinsts = ceFormSet.save(commit=False)
+ for ceinst in ceinsts:
+ ceinst.cave = cave
+ ceinst.save()
+ cave.writeDataFile()
+ return HttpResponseRedirect("/" + cave.url)
else:
form = CaveForm(instance=cave)
- i = [{"entrance": x.entrance.slug,
- "entrance_letter": x.entrance_letter,
- "non_public": x.non_public}
- for x
- in cave.caveandentrance_set.all()]
- ceFormSet = CaveAndEntranceFormSet(initial=i)
+ ceFormSet = CaveAndEntranceFormSet(queryset=cave.caveandentrance_set.all())
+ versionControlForm = VersionControlCommentForm()
+
return render_with_context(request,
'editcave2.html',
{'form': form,
- 'caveAndEntranceFormSet': ceFormSet
+ 'caveAndEntranceFormSet': ceFormSet,
+ 'versionControlForm': versionControlForm
+ })
+
+@login_required_if_public
+def editEntrance(request, slug=None):
+ entrance = Entrance.objects.get(entranceslug__slug = slug)
+ 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.writeDataFile()
+ return HttpResponseRedirect("/" + entrance.url)
+ else:
+ form = EntranceForm(instance = entrance)
+ versionControlForm = VersionControlCommentForm()
+
+ return render_with_context(request,
+ 'editentrance.html',
+ {'form': form,
+ 'versionControlForm': versionControlForm
})
def qm(request,cave_id,qm_id,year,grade=None):
@@ -111,7 +149,7 @@ def ent(request, cave_id, ent_letter):
'letter': cave_and_ent.entrance_letter,})
def entranceSlug(request, slug):
- entrance = Entrance.objects.get(slug = slug)
+ entrance = Entrance.objects.get(entranceslug__slug = slug)
if entrance.non_public and not request.user.is_authenticated():
return render_with_context(request,'nonpublic.html', {'instance': entrance})
else:
@@ -148,9 +186,9 @@ def cave_description(request, cavedescription_name):
return render_with_context(request,'cave_description.html', locals())
def get_entrances(request, caveslug):
- cave = Cave.objects.get(slug = caveslug)
- return render_with_context(request,'options.html', {"items": [(e.entrance.slug, e.entrance.slug) for e in cave.entrances()]})
+ cave = Cave.objects.get(caveslug__slug = caveslug)
+ return render_with_context(request,'options.html', {"items": [(e.entrance.slug(), e.entrance.slug()) for e in cave.entrances()]})
def get_qms(request, caveslug):
- cave = Cave.objects.get(slug = caveslug)
- return render_with_context(request,'options.html', {"items": [(e.entrance.slug, e.entrance.slug) for e in cave.entrances()]})
+ cave = Cave.objects.get(caveslug__slug = caveslug)
+ return render_with_context(request,'options.html', {"items": [(e.entrance.slug(), e.entrance.slug()) for e in cave.entrances()]})