forked from expo/troggle
152 lines
6.4 KiB
Python
152 lines
6.4 KiB
Python
from django.forms import ModelForm
|
|
from models import Cave, Person, PersonExpedition, LogbookEntry, QM, Expedition, Entrance, CaveAndEntrance
|
|
import django.forms as forms
|
|
from django.forms.models import modelformset_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=forms.Textarea())
|
|
explorers = forms.CharField(required = False, widget=forms.Textarea())
|
|
equipment = forms.CharField(required = False, widget=forms.Textarea())
|
|
survey = forms.CharField(required = False, widget=forms.Textarea())
|
|
kataster_status = forms.CharField(required = False, widget=forms.Textarea())
|
|
underground_centre_line = forms.CharField(required = False, widget=forms.Textarea())
|
|
notes = forms.CharField(required = False, widget=forms.Textarea())
|
|
references = forms.CharField(required = False, widget=forms.Textarea())
|
|
class Meta:
|
|
model = Cave
|
|
|
|
class VersionControlCommentForm(forms.Form):
|
|
description_of_change = forms.CharField(required = True, widget=forms.Textarea())
|
|
|
|
|
|
class EntranceForm(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 = Entrance
|
|
|
|
CaveAndEntranceFormSet = modelformset_factory(CaveAndEntrance, exclude=('cave'))
|
|
|
|
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'</p><p style="float: left;"><b>QMs found:</b>')
|
|
# for QM in LogbookEntry.instance.QMs_found.all():
|
|
# res.append(QM.wiki_link())
|
|
|
|
# res.append(r'</p><p style="float: left;"><b>QMs ticked off:</b>')
|
|
# for QM in LogbookEntry.instance.QMs_ticked_off.all():
|
|
# res.append(QM.wiki_link())
|
|
|
|
# res.append(r'</p><p style="float: left; "><b>People</b>')
|
|
# for persontrip in LogbookEntry.instance.persontrip_set.all():
|
|
# res.append(persontrip.wiki_link())
|
|
# res.append(r'</p>')
|
|
|
|
# return string.join(res, r'<br />')
|
|
|
|
# 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()
|
|
|
|
|