From b001df1f5319dd8627faba3cd56c412e8584fc7d Mon Sep 17 00:00:00 2001 From: Martin Green Date: Sun, 1 May 2011 19:32:41 +0100 Subject: edit logbooks, new logbook format, increased database normalisation --- core/forms.py | 44 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) (limited to 'core/forms.py') diff --git a/core/forms.py b/core/forms.py index 929c4e9..9a54b7b 100644 --- a/core/forms.py +++ b/core/forms.py @@ -1,10 +1,11 @@ from django.forms import ModelForm -from models import Cave, Person, LogbookEntry, QM +from models import Cave, Person, PersonExpedition, LogbookEntry, QM import django.forms as forms from django.forms.formsets import formset_factory from django.contrib.admin.widgets import AdminDateWidget import string from datetime import date +from tinymce.widgets import TinyMCE class CaveForm(ModelForm): class Meta: @@ -45,4 +46,43 @@ class LogbookEntryForm(ModelForm): def __init__(self, *args, **kwargs): super(LogbookEntryForm, self).__init__(*args, **kwargs) - self.fields['text'].help_text=self.wikiLinkHints() \ No newline at end of file + self.fields['text'].help_text=self.wikiLinkHints() + +def getTripForm(expedition): + + class TripForm(forms.Form): + date = forms.DateField() + title = forms.CharField(max_length=200) + caves = [cave.reference() for cave in Cave.objects.all()] + caves.sort() + caves = ["-----"] + caves + cave = forms.ChoiceField([(c, c) for c in caves], required=False) + location = forms.CharField(max_length=200, required=False) + caveOrLocation = forms.ChoiceField([("cave", "Cave"), ("location", "Location")], widget = forms.widgets.RadioSelect()) + html = forms.CharField(widget=TinyMCE(attrs={'cols': 80, 'rows': 30})) + + def clean(self): + print dir(self) + if self.cleaned_data.get("caveOrLocation") == "cave" and not self.cleaned_data.get("cave"): + self._errors["cave"] = self.error_class(["This field is required"]) + if self.cleaned_data.get("caveOrLocation") == "location" and not self.cleaned_data.get("location"): + self._errors["location"] = self.error_class(["This field is required"]) + return self.cleaned_data + + class PersonTripForm(forms.Form): + def get_name(pe): + if pe.nickname: + return pe.nickname + else: + return pe.person.first_name + names = [get_name(pe) for pe in PersonExpedition.objects.filter(expedition = expedition)] + names.sort() + names = ["-----"] + names + name = forms.ChoiceField([(n, n) for n in names]) + TU = forms.FloatField(required=False) + author = forms.BooleanField(required=False) + + PersonTripFormSet = formset_factory(PersonTripForm, extra=1) + + return PersonTripFormSet, TripForm + -- cgit v1.2.3