2
0
mirror of https://expo.survex.com/repositories/troggle/.git synced 2026-05-12 20:20:25 +01:00

validity check Area and not previously known Cave

This commit is contained in:
2026-05-11 21:41:15 +01:00
parent f4367d0fcf
commit 9887bf6696
+51 -12
View File
@@ -158,9 +158,7 @@ class NewHoleForm(forms.Form):
except (ValueError, IndexError):
# Individual field cleaners (regex) will handle malformed wallet strings
pass
pass
if wallet_id and trip_date:
try:
@@ -176,7 +174,7 @@ class NewHoleForm(forms.Form):
except (ValueError, IndexError):
# Individual field cleaners (regex) will handle malformed wallet strings
pass
# 2. Extract the year from survey_wallet (YYYY#NN)
# We only proceed if wallet_id passed its own validation earlier,
# which removes whitespace and checks the year
@@ -197,7 +195,16 @@ class NewHoleForm(forms.Form):
# cleaned_data['intrepid_ids'] = intrepids
# cleaned_data['cameramen_ids'] = cameramen
gps_lat = cleaned_data.get("gps_lat")
gps_lang = cleaned_data.get("gps_long")
valid_area, area = which_area(lat, long)
if not valid_area:
self.add_error('gps_lat', "Not in Area 1626 or 1623")
self.add_error('gps_long', "Not in Area 1626 or 1623")
else:
if Cave.objects.filter(unofficial_number=cave_id, areacode=areacode).exists():
self.add_error('cave_id', "This Cave already exists, pick another identifier.")
# Entrance Photo Logic
photo_ent_on_camera = cleaned_data.get("photo_ent_on_camera")
gps_screenshot = cleaned_data.get("gps_screenshot")
@@ -314,6 +321,7 @@ from textwrap import dedent
from django.shortcuts import render, redirect
from django.contrib import messages
from .auth import login_required_if_public
from troggle.parsers.caves import make_cave
@login_required_if_public
def new_hole(request):
@@ -325,7 +333,7 @@ def new_hole(request):
form = NewHoleForm(request.POST, request.FILES)
lat = float(form.data['gps_lat'])
long = float(form.data['gps_long'])
valid, area = which_area(lat, long)
valid_area, area = which_area(lat, long)
if valid:
areatext = f"in {area}"
else:
@@ -334,14 +342,27 @@ def new_hole(request):
if form.is_valid():
editor = form.cleaned_data["who_are_you"]
editor = git_string(editor)
process_new_hole(form, area)
messages.success(request, "New prospect save data successfully saved.")
success_url = "/walletedit/" + form.cleaned_data.get('survey_wallet').replace("#",":")
return redirect(success_url)
if valid_area:
process_new_hole(form, area)
messages.success(request, "New prospect save data successfully saved.")
success_url = "/walletedit/" + form.cleaned_data.get('survey_wallet').replace("#",":")
return redirect(success_url)
else:
# not in 1623 or 1626
messages.failure(request, "Not in 1623 or 1626. Fix this.")
return render(request, 'new_hole.html', {'form': form,
"identified_login": identified_login,
"areatext": areatext})
# GET
else:
form = NewHoleForm(initial={"identified_login": identified_login, "who_are_you":editor})
if identified_login:
# disable editing the git id string as we get it from the logged-on user data
form.fields["who_are_you"].widget.attrs["readonly"]="readonly"
return render(request, 'new_hole.html', {'form': form,
"identified_login": identified_login,
@@ -397,16 +418,25 @@ def process_new_hole(form, area):
we do not put "reference" in the *fix because we know it is used in the Entrance we are creating
❌BUT we DO put reference in now because we haven't written the Entrance bit of the code yet!
"""
editor = git_string(form.cleaned_data["who_are_you"])
_newfix(form, area, editor)
_newcave(form, area, editor)
_newent(form, area, editor)
return
def _newfix(form, area, editor):
auto_gps_file, content = get_auto_file()
fix_id = f"{area}.g{form.cleaned_data.get("cave_id").lower()}"
fix_line = f"*fix {fix_id} reference {form.cleaned_data.get("gps_lat")} {form.cleaned_data.get("gps_long")} 0\n"
print(fix_line)
content += f"\n; {form.cleaned_data.get("discovery_date")} wallet: {form.cleaned_data.get("survey_wallet")} \n"
content += fix_line
content += f"*entrance {fix_id}\n"
content +=f"\n*end\n"
editor = git_string(form.cleaned_data["who_are_you"])
files = [(auto_gps_file, content, "utf8")]
try:
@@ -422,4 +452,13 @@ def process_new_hole(form, area):
return render(request, "errors/generic.html", {"message": message})
except:
raise
return
def _newcave(form, area, editor):
# unofficial_number
slug = f"{area}-{form.cleaned_data.get("cave_id")}"
#cave = make_cave(slug)
return
def _newent(form, area, editor):
return