mirror of
https://expo.survex.com/repositories/troggle/.git
synced 2026-05-15 22:16:33 +01:00
validations complete I hope
This commit is contained in:
+25
-10
@@ -11,7 +11,7 @@ class NewHoleForm(forms.Form):
|
||||
"""
|
||||
discovery_date = forms.DateField(label="Trip date", widget=forms.DateInput(attrs={'type': 'date'}), required=True)
|
||||
# Identification
|
||||
tag_id = forms.CharField(label="New Cave Identifier for internal identifiers. Cannot easily be changed.",
|
||||
cave_id = forms.CharField(label="New Cave Identifier for internal identifiers. Cannot easily be changed.",
|
||||
widget=forms.TextInput(attrs={'placeholder':
|
||||
'e.g. 2035-ZB-03 '}),
|
||||
max_length=50, required=True)
|
||||
@@ -110,7 +110,7 @@ class NewHoleForm(forms.Form):
|
||||
def _add_caver_error(self, field_name, name, year):
|
||||
"""Standardized HTML error reporter"""
|
||||
error_html = mark_safe(
|
||||
f"'{name}' is not a recognized explorer for the year {year}. "
|
||||
f"'{name}' is not a recognized caver for the year {year}. "
|
||||
f"See <a href='/aliases/{year}'>aliases list</a>"
|
||||
)
|
||||
self.add_error(field_name, error_html)
|
||||
@@ -124,18 +124,33 @@ class NewHoleForm(forms.Form):
|
||||
|
||||
trip_date = cleaned_data.get("discovery_date")
|
||||
wallet_id = cleaned_data.get("survey_wallet")
|
||||
cave_id = cleaned_data.get("cave_id")
|
||||
|
||||
if cave_id and trip_date:
|
||||
try:
|
||||
clean_cave = "".join(cave_id.split()) # removes whitespace
|
||||
cave_year = int(clean_cave[:4])
|
||||
|
||||
trip_year = trip_date.year
|
||||
if cave_year != trip_year:
|
||||
self.add_error('cave_id',
|
||||
f"Year mismatch: Cave identifier year ({cave_year}) does not match Trip date year ({trip_year}).")
|
||||
|
||||
except (ValueError, IndexError):
|
||||
# Individual field cleaners (regex) will handle malformed wallet strings
|
||||
pass
|
||||
|
||||
|
||||
|
||||
if wallet_id and trip_date:
|
||||
try:
|
||||
clean_wallet = "".join(wallet_id.split()) # should already be cleaned
|
||||
wallet_year = int(clean_wallet[:4])
|
||||
|
||||
# Get the year from the discovery_date (a datetime.date object)
|
||||
trip_year = trip_date.year
|
||||
|
||||
if wallet_year != trip_year:
|
||||
# Point the error at the wallet field
|
||||
self.add_error('ug_survey_wallet',
|
||||
self.add_error('survey_wallet',
|
||||
f"Year mismatch: Wallet year ({wallet_year}) does not match Trip date year ({trip_year}).")
|
||||
|
||||
except (ValueError, IndexError):
|
||||
@@ -151,10 +166,10 @@ class NewHoleForm(forms.Form):
|
||||
intrepids = self._validate_caver_list(
|
||||
'discoverers', year, cleaned_data.get("discoverers"))
|
||||
|
||||
cameramen = self._validate_caver_list(
|
||||
'photo_ent_who', year, cleaned_data.get("photo_ent_who"))
|
||||
if cleaned_data.get("photo_ent_no") or cleaned_data.get("gps_photo"):
|
||||
cameramen = self._validate_caver_list(
|
||||
'photo_ent_who', year, cleaned_data.get("photo_ent_who"))
|
||||
|
||||
# Even for a single name, it works fine
|
||||
gps_user = self._validate_caver_list(
|
||||
'gps_owner', year, cleaned_data.get("gps_owner"))
|
||||
|
||||
@@ -185,8 +200,8 @@ class NewHoleForm(forms.Form):
|
||||
|
||||
return cleaned_data
|
||||
|
||||
def clean_tag_id(self):
|
||||
data = self.cleaned_data.get('tag_id')
|
||||
def clean_cave_id(self):
|
||||
data = self.cleaned_data.get('cave_id')
|
||||
|
||||
# 1. Remove whitespace and force uppercase for consistency
|
||||
clean_text = "".join(data.split()).upper()
|
||||
|
||||
Reference in New Issue
Block a user