diff options
Diffstat (limited to 'core/views_caves.py')
-rw-r--r-- | core/views_caves.py | 82 |
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()]}) |