diff options
Diffstat (limited to 'core/forms.py')
-rw-r--r-- | core/forms.py | 208 |
1 files changed, 129 insertions, 79 deletions
diff --git a/core/forms.py b/core/forms.py index 31f6de5..709ed62 100644 --- a/core/forms.py +++ b/core/forms.py @@ -11,100 +11,151 @@ from troggle.core.models.logbooks import QM, LogbookEntry from troggle.core.models.troggle import Expedition, Person, PersonExpedition from troggle.core.views.editor_helpers import HTMLarea -#from tinymce.widgets import TinyMCE +# from tinymce.widgets import TinyMCE - -'''These are all the class-based Forms used by troggle. +"""These are all the class-based Forms used by troggle. There are other, simpler, upload forms in view/uploads.py Some are not used and need renovating or destroying. -''' +""" + +todo = """ +""" -todo = ''' -''' class CaveForm(ModelForm): - '''Only those fields for which we want to override defaults are listed here + """Only those fields for which we want to override defaults are listed here the other fields are present on the form, but use the default presentation style - ''' - official_name = forms.CharField(required = False, widget=forms.TextInput(attrs={'size': '45'})) - underground_description = forms.CharField(required = False, widget=HTMLarea( - attrs={"height":"80%", "rows":20, 'placeholder': "Enter page content (using HTML)"})) - explorers = forms.CharField(required = False, widget=HTMLarea( - attrs={"height":"80%", "rows":20, 'placeholder': "Enter page content (using HTML)"})) - equipment = forms.CharField(required = False, widget=HTMLarea( - attrs={"height":"80%", "rows":20, 'placeholder': "Enter page content (using HTML)"})) - survey = forms.CharField(required = False, widget=HTMLarea( - attrs={"height":"80%", "rows":20, 'placeholder': "Enter page content (using HTML)"})) - #survey = forms.CharField(required = False, widget=TinyMCE(attrs={'cols': 80, 'rows': 10})) - kataster_status = forms.CharField(required = False) - underground_centre_line = forms.CharField(required = False, widget=HTMLarea( - attrs={"height":"80%", "rows":20, 'placeholder': "Enter page content (using HTML)"})) - notes = forms.CharField(required = False, widget=HTMLarea( - attrs={"height":"80%", "rows":20, 'placeholder': "Enter page content (using HTML)"})) - references = forms.CharField(required = False, widget=HTMLarea( - attrs={"height":"80%", "rows":20, 'placeholder': "Enter page content (using HTML)"})) - description_file = forms.CharField(required = False, widget=forms.TextInput(attrs={'size': '45'})) - survex_file = forms.CharField(required = False, label="Survex file [caves-1623/000/000.svx]", widget=forms.TextInput(attrs={'size': '45'})) - url = forms.CharField(required = True, label="URL [1623/000/000]", widget=forms.TextInput(attrs={'size': '45'})) - length = forms.CharField(required = False, label="Length (m)") - depth = forms.CharField(required = False, label="Depth (m)") - extent = forms.CharField(required = False, label="Extent (m)") + """ + + official_name = forms.CharField(required=False, widget=forms.TextInput(attrs={"size": "45"})) + underground_description = forms.CharField( + required=False, + widget=HTMLarea(attrs={"height": "80%", "rows": 20, "placeholder": "Enter page content (using HTML)"}), + ) + explorers = forms.CharField( + required=False, + widget=HTMLarea(attrs={"height": "80%", "rows": 20, "placeholder": "Enter page content (using HTML)"}), + ) + equipment = forms.CharField( + required=False, + widget=HTMLarea(attrs={"height": "80%", "rows": 20, "placeholder": "Enter page content (using HTML)"}), + ) + survey = forms.CharField( + required=False, + widget=HTMLarea(attrs={"height": "80%", "rows": 20, "placeholder": "Enter page content (using HTML)"}), + ) + # survey = forms.CharField(required = False, widget=TinyMCE(attrs={'cols': 80, 'rows': 10})) + kataster_status = forms.CharField(required=False) + underground_centre_line = forms.CharField( + required=False, + widget=HTMLarea(attrs={"height": "80%", "rows": 20, "placeholder": "Enter page content (using HTML)"}), + ) + notes = forms.CharField( + required=False, + widget=HTMLarea(attrs={"height": "80%", "rows": 20, "placeholder": "Enter page content (using HTML)"}), + ) + references = forms.CharField( + required=False, + widget=HTMLarea(attrs={"height": "80%", "rows": 20, "placeholder": "Enter page content (using HTML)"}), + ) + description_file = forms.CharField(required=False, widget=forms.TextInput(attrs={"size": "45"})) + survex_file = forms.CharField( + required=False, label="Survex file [caves-1623/000/000.svx]", widget=forms.TextInput(attrs={"size": "45"}) + ) + url = forms.CharField(required=True, label="URL [1623/000/000]", widget=forms.TextInput(attrs={"size": "45"})) + length = forms.CharField(required=False, label="Length (m)") + depth = forms.CharField(required=False, label="Depth (m)") + extent = forms.CharField(required=False, label="Extent (m)") + class Meta: model = Cave exclude = ("filename",) def clean(self): if self.cleaned_data.get("kataster_number") == "" and self.cleaned_data.get("unofficial_number") == "": - self._errors["unofficial_number"] = self.error_class(["Either the kataster or unoffical number is required."]) -# if self.cleaned_data.get("kataster_number") != "" and self.cleaned_data.get("official_name") == "": -# self._errors["official_name"] = self.error_class(["This field is required when there is a kataster number."]) + self._errors["unofficial_number"] = self.error_class( + ["Either the kataster or unoffical number is required."] + ) + # if self.cleaned_data.get("kataster_number") != "" and self.cleaned_data.get("official_name") == "": + # self._errors["official_name"] = self.error_class(["This field is required when there is a kataster number."]) if self.cleaned_data.get("area") == []: self._errors["area"] = self.error_class(["This field is required."]) if self.cleaned_data.get("url") and self.cleaned_data.get("url").startswith("/"): self._errors["url"] = self.error_class(["This field cannot start with a /."]) return self.cleaned_data + class EntranceForm(ModelForm): - '''Only those fields for which we want to override defaults are listed here + """Only those fields for which we want to override defaults are listed here the other fields are present on the form, but use the default presentaiton style - ''' - name = forms.CharField(required = False, widget=forms.TextInput(attrs={'size': '45'})) - entrance_description = forms.CharField(required = False, widget=HTMLarea( - attrs={"height":"80%", "rows":20, 'placeholder': "Enter page content (using HTML)"})) - explorers = forms.CharField(required = False, widget=forms.TextInput(attrs={'size': '45'})) - #explorers = forms.CharField(required = False, widget=TinyMCE(attrs={'cols': 80, 'rows': 10})) - map_description = forms.CharField(required = False, widget=HTMLarea( - attrs={"height":"80%", "rows":20, 'placeholder': "Enter page content (using HTML)"})) - location_description = forms.CharField(required = False, widget=HTMLarea( - attrs={"height":"80%", "rows":20, 'placeholder': "Enter page content (using HTML)"})) - lastvisit = forms.CharField(required=False, widget=forms.TextInput(attrs={'size': '10'}), label="Date of last visit") - approach = forms.CharField(required = False, widget=HTMLarea( - attrs={"height":"80%", "rows":20, 'placeholder': "Enter page content (using HTML)"})) - underground_description = forms.CharField(required = False, widget=HTMLarea( - attrs={"height":"80%", "rows":20, 'placeholder': "Enter page content (using HTML)"})) - photo = forms.CharField(required = False, widget=HTMLarea( - attrs={"height":"80%", "rows":20, 'placeholder': "Enter page content (using HTML)"})) - marking_comment = forms.CharField(required = False, widget=HTMLarea( - attrs={"height":"80%", "rows":20, 'placeholder': "Enter page content (using HTML)"})) - findability_description = forms.CharField(required = False, widget=HTMLarea( - attrs={"height":"80%", "rows":20, 'placeholder': "Enter page content (using HTML)"})) - other_description = forms.CharField(required = False, widget=HTMLarea( - attrs={"height":"80%", "rows":20, 'placeholder': "Enter page content (using HTML)"})) - bearings = forms.CharField(required = False, widget=HTMLarea( - attrs={"height":"80%", "rows":20, 'placeholder': "Enter page content (using HTML)"})) - other_station = forms.CharField(required=False) - tag_station = forms.CharField(required=False) - exact_station = forms.CharField(required=False) - northing = forms.CharField(required=False) + """ + + name = forms.CharField(required=False, widget=forms.TextInput(attrs={"size": "45"})) + entrance_description = forms.CharField( + required=False, + widget=HTMLarea(attrs={"height": "80%", "rows": 20, "placeholder": "Enter page content (using HTML)"}), + ) + explorers = forms.CharField(required=False, widget=forms.TextInput(attrs={"size": "45"})) + # explorers = forms.CharField(required = False, widget=TinyMCE(attrs={'cols': 80, 'rows': 10})) + map_description = forms.CharField( + required=False, + widget=HTMLarea(attrs={"height": "80%", "rows": 20, "placeholder": "Enter page content (using HTML)"}), + ) + location_description = forms.CharField( + required=False, + widget=HTMLarea(attrs={"height": "80%", "rows": 20, "placeholder": "Enter page content (using HTML)"}), + ) + lastvisit = forms.CharField( + required=False, widget=forms.TextInput(attrs={"size": "10"}), label="Date of last visit" + ) + approach = forms.CharField( + required=False, + widget=HTMLarea(attrs={"height": "80%", "rows": 20, "placeholder": "Enter page content (using HTML)"}), + ) + underground_description = forms.CharField( + required=False, + widget=HTMLarea(attrs={"height": "80%", "rows": 20, "placeholder": "Enter page content (using HTML)"}), + ) + photo = forms.CharField( + required=False, + widget=HTMLarea(attrs={"height": "80%", "rows": 20, "placeholder": "Enter page content (using HTML)"}), + ) + marking_comment = forms.CharField( + required=False, + widget=HTMLarea(attrs={"height": "80%", "rows": 20, "placeholder": "Enter page content (using HTML)"}), + ) + findability_description = forms.CharField( + required=False, + widget=HTMLarea(attrs={"height": "80%", "rows": 20, "placeholder": "Enter page content (using HTML)"}), + ) + other_description = forms.CharField( + required=False, + widget=HTMLarea(attrs={"height": "80%", "rows": 20, "placeholder": "Enter page content (using HTML)"}), + ) + bearings = forms.CharField( + required=False, + widget=HTMLarea(attrs={"height": "80%", "rows": 20, "placeholder": "Enter page content (using HTML)"}), + ) + other_station = forms.CharField(required=False) + tag_station = forms.CharField(required=False) + exact_station = forms.CharField(required=False) + northing = forms.CharField(required=False) easting = forms.CharField(required=False) - lat_wgs84 = forms.CharField(required=False, widget=forms.TextInput(attrs={'size': '10'}), label="Latitude (WSG84)") - long_wgs84 = forms.CharField(required=False, widget=forms.TextInput(attrs={'size': '10'}), label="Longitude (WSG84)") - alt = forms.CharField(required=False, label="Altitude (m)") - url = forms.CharField(required = False, label="URL [usually blank]", widget=forms.TextInput(attrs={'size': '45'})) + lat_wgs84 = forms.CharField(required=False, widget=forms.TextInput(attrs={"size": "10"}), label="Latitude (WSG84)") + long_wgs84 = forms.CharField( + required=False, widget=forms.TextInput(attrs={"size": "10"}), label="Longitude (WSG84)" + ) + alt = forms.CharField(required=False, label="Altitude (m)") + url = forms.CharField(required=False, label="URL [usually blank]", widget=forms.TextInput(attrs={"size": "45"})) + class Meta: model = Entrance - exclude = ("cached_primary_slug", "filename",) + exclude = ( + "cached_primary_slug", + "filename", + ) + def clean(self): if self.cleaned_data.get("url").startswith("/"): self._errors["url"] = self.error_class(["This field cannot start with a /."]) @@ -116,24 +167,23 @@ class EntranceForm(ModelForm): # http://localhost:8000/cave/new/ # using django built-in Deep Magic. https://docs.djangoproject.com/en/3.2/topics/forms/modelforms/ # for forms which map directly onto a Django Model -CaveAndEntranceFormSet = modelformset_factory(CaveAndEntrance, exclude=('cave',)) +CaveAndEntranceFormSet = modelformset_factory(CaveAndEntrance, exclude=("cave",)) + class EntranceLetterForm(ModelForm): - '''Form to link entrances to caves, along with an entrance number. - - Nb. The relationship between caves and entrances has historically been a many to many relationship. + """Form to link entrances to caves, along with an entrance number. + + Nb. The relationship between caves and entrances has historically been a many to many relationship. With entrances gaining new caves and letters when caves are joined. - ''' + """ + class Meta: model = CaveAndEntrance - exclude = ('cave', 'entrance') - + exclude = ("cave", "entrance") + def full_clean(self): super(EntranceLetterForm, self).full_clean() try: self.instance.validate_unique() except forms.ValidationError as e: self._update_errors(e) - - - |