from django.forms import ModelForm from models import Cave, Person, PersonExpedition, LogbookEntry, QM, Expedition, Entrance, CaveAndEntrance import django.forms as forms from django.forms.formsets import formset_factory from django.forms.models import formset_factory from django.contrib.admin.widgets import AdminDateWidget import string from datetime import date from tinymce.widgets import TinyMCE class CaveForm(ModelForm): underground_description = forms.CharField(required = False, widget=TinyMCE(attrs={'cols': 80, 'rows': 30})) explorers = forms.CharField(required = False, widget=TinyMCE(attrs={'cols': 80, 'rows': 10})) equipment = forms.CharField(required = False, widget=TinyMCE(attrs={'cols': 80, 'rows': 10})) survey = forms.CharField(required = False, widget=TinyMCE(attrs={'cols': 80, 'rows': 10})) kataster_status = forms.CharField(required = False, widget=TinyMCE(attrs={'cols': 80, 'rows': 10})) underground_centre_line = forms.CharField(required = False, widget=TinyMCE(attrs={'cols': 80, 'rows': 10})) notes = forms.CharField(required = False, widget=TinyMCE(attrs={'cols': 80, 'rows': 10})) references = forms.CharField(required = False, widget=TinyMCE(attrs={'cols': 80, 'rows': 10})) class Meta: model = Cave class CaveAndEntranceForm(forms.Form): entrance = forms.ChoiceField(choices=[("", "-----")] + [(x.slug, x.slug) for x in Entrance.objects.all()]) entrance_letter = forms.CharField(max_length=20) non_public = forms.BooleanField() CaveAndEntranceFormSet = formset_factory(CaveAndEntranceForm) class EntranceForm(ModelForm): class Meta: model = Entrance #class PersonForm(ModelForm): # class Meta: # model = Person #class LogbookEntryForm(ModelForm): # class Meta: # model = LogbookEntry# # def wikiLinkHints(LogbookEntry=None): # """ # This function returns html-formatted paragraphs for each of the # wikilink types that are related to this logbookentry. Each paragraph # contains a list of all of the related wikilinks. # # Perhaps an admin javascript solution would be better. # """ # res = ["Please use the following wikilinks, which are related to this logbook entry:"] # # res.append(r'

QMs found:') # for QM in LogbookEntry.instance.QMs_found.all(): # res.append(QM.wiki_link()) # res.append(r'

QMs ticked off:') # for QM in LogbookEntry.instance.QMs_ticked_off.all(): # res.append(QM.wiki_link()) # res.append(r'

People') # for persontrip in LogbookEntry.instance.persontrip_set.all(): # res.append(persontrip.wiki_link()) # res.append(r'

') # return string.join(res, r'
') # def __init__(self, *args, **kwargs): # super(LogbookEntryForm, self).__init__(*args, **kwargs) # self.fields['text'].help_text=self.wikiLinkHints()# #class CaveForm(forms.Form): # html = forms.CharField(widget=TinyMCE(attrs={'cols': 80, 'rows': 30})) 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): 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 def get_name(pe): if pe.nickname: return pe.nickname else: return pe.person.first_name class UploadFileForm(forms.Form): title = forms.CharField(max_length=50) file = forms.FileField() html = forms.CharField(widget=TinyMCE(attrs={'cols': 80, 'rows': 30})) lon_utm = forms.FloatField(required=False) lat_utm = forms.FloatField(required=False) slug = forms.CharField(max_length=50) date = forms.DateField(required=False) caves = [cave.slug for cave in Cave.objects.all()] caves.sort() caves = ["-----"] + caves cave = forms.ChoiceField([(c, c) for c in caves], required=False) entrance = forms.ChoiceField([("-----", "Please select a cave"), ], required=False) qm = forms.ChoiceField([("-----", "Please select a cave"), ], required=False) expeditions = [e.year for e in Expedition.objects.all()] expeditions.sort() expeditions = ["-----"] + expeditions expedition = forms.ChoiceField([(e, e) for e in expeditions], required=False) logbookentry = forms.ChoiceField([("-----", "Please select an expedition"), ], required=False) person = forms.ChoiceField([("-----", "Please select an expedition"), ], required=False) survey_point = forms.CharField()