diff --git a/core/models/survex.py b/core/models/survex.py
index 4c1d8d7e..9875e667 100644
--- a/core/models/survex.py
+++ b/core/models/survex.py
@@ -54,8 +54,8 @@ class SurvexStationLookUpManager(models.Manager):
class SurvexStation(models.Model):
name = models.CharField(max_length=100)
- # block = models.ForeignKey("SurvexBlock", null=True, on_delete=models.SET_NULL)
- # block not used since 2020. survex stations objects are only used for entrance locations and all taken from the .3d file
+ # survex stations objects are only used for entrance locations
+ # and *fix and all taken from the .3d file
objects = SurvexStationLookUpManager() # overwrites SurvexStation.objects and enables lookup()
x = models.FloatField(blank=True, null=True)
y = models.FloatField(blank=True, null=True)
diff --git a/core/views/new_hole.py b/core/views/new_hole.py
index 71b26ea0..e208b387 100644
--- a/core/views/new_hole.py
+++ b/core/views/new_hole.py
@@ -469,7 +469,23 @@ def insert_before(insert, before, content_list):
return content_list
-
+def clean_write_and_commit(filetuple, comment, editor):
+ filepath, content, _ = filetuple
+ print(filepath, comment)
+ try:
+ write_and_commit([filetuple], comment, editor) # note [list]
+ except PermissionError:
+ message = f"CANNOT save this file.\nPERMISSIONS incorrectly set on server for this file {filepath}. Ask a nerd to fix this."
+ return render(request, "errors/generic.html", {"message": message})
+ except WriteAndCommitError as e:
+ message = f"CANNOT git on server for this file {filepath}.\n{e}\nEdits may not be committed.\nAsk a nerd to fix this."
+ return render(request, "errors/generic.html", {"message": e.message})
+ except subprocess.SubprocessError as e:
+ message = f"CANNOT update server for this file {filepath}.\n{e}\nEdits may not be committed.\nAsk a nerd to fix this."
+ return render(request, "errors/generic.html", {"message": message})
+ except:
+ raise
+ return
def process_new_hole(form, area):
"""
@@ -500,6 +516,11 @@ def process_new_hole(form, area):
writes:
⚡*fix 1623.g2025-bz-06 47.6964481 13.816103 0 # time & date of fix.
we do not put "reference" in the *fix because we know it is used in the Entrance we are creating
+
+
+ NB "warning: Reentering an existing survey is deprecated" [since 2000]
+ and Olly says he would make this an error if it gets in the way of a new feature or whatever.
+ so we should produce two auto files, one in the 1623 folder and one in the 1626 folder
"""
@@ -511,13 +532,21 @@ def process_new_hole(form, area):
_newfix(form, area, editor, cave_id, fix_id_basic)
# ⚡ tidy this
cave = _makecave(form, area)
- _newent(form, area, editor, f"{area}.{fix_id}", cave) # yes, make the Entrance first
+ _newent(form, area, editor, fix_id, cave)
_savecave(form, area, editor, cave)
+ # register the new GPS station in the database
+ # cf parsers/locations.py: LoadPositions()
+ # cf models/survex.py class SurvexStation
+ # (also needed after edit_entrance)
+ # SurvexStation objects are x/y/x in UTM and have a function to return lat/long which is a bit silly for many uses
+ # _new_location(fix_id)
_newwallet(form, area, editor)
return
def _newfix(form, area, editor, cave_id, fix_id_basic):
+ """Constructs and does the edits to the auto GPS file in the loser repo
+ """
auto_gps_file, content_list = get_auto_file()
fix_header = f"; {form.cleaned_data.get("discovery_date")} cave: {cave_id} wallet: {form.cleaned_data.get("survey_wallet")} \n"
@@ -534,20 +563,9 @@ def _newfix(form, area, editor, cave_id, fix_id_basic):
insert_before(insert, f"*end {area}", content_list)
content = "".join(content_list)
- file_as_list = [(auto_gps_file, content, "utf8")]
- try:
- write_and_commit(file_as_list, f"Online *fix {fix_id} ", editor)
- except PermissionError:
- message = f"CANNOT save this file.\nPERMISSIONS incorrectly set on server for this file {auto_gps_file}. Ask a nerd to fix this."
- return render(request, "errors/generic.html", {"message": message})
- except WriteAndCommitError as e:
- message = f"CANNOT git on server for this file {auto_gps_file}.\n{e}\nEdits may not be committed.\nAsk a nerd to fix this."
- return render(request, "errors/generic.html", {"message": e.message})
- except subprocess.SubprocessError as e:
- message = f"CANNOT update server for this file {auto_gps_file}.\n{e}\nEdits may not be committed.\nAsk a nerd to fix this."
- return render(request, "errors/generic.html", {"message": message})
- except:
- raise
+ filetuple = (auto_gps_file, content, "utf8")
+ comment = f"Online *fix {area}.{fix_id_basic} "
+ clean_write_and_commit(filetuple, comment, editor)
return
def _newent(form, areacode, editor, fix_id, cave):
@@ -593,26 +611,12 @@ def _newent(form, areacode, editor, fix_id, cave):
ce =CaveAndEntrance.objects.create(
cave=cave, entranceletter="", entrance=ent
)
-
#
# Add in saving Entrance to database and then .html file to filesystem and git
#
ent.save() # saves into db
- try:
- ent_file = ent.file_output()
- write_and_commit([ent_file], f"Creating new Entrance {ent}", editor)
- # leave other exceptions unhandled so that they bubble up to user interface
- except PermissionError:
- message = f"CANNOT save this file.\nPERMISSIONS incorrectly set on server for this file {ent.filename}. Ask a nerd to fix this."
- return render(request, "errors/generic.html", {"message": message})
- except WriteAndCommitError as e:
- message = f"CANNOT git on server for this file {ent.filename}.\n{e}\nEdits may not be committed.\nAsk a nerd to fix this."
- return render(request, "errors/generic.html", {"message": e.message})
- except subprocess.SubprocessError as e:
- message = f"CANNOT update server for this file {ent.filename}.\n{e}\nEdits may not be committed.\nAsk a nerd to fix this."
- return render(request, "errors/generic.html", {"message": message})
- except:
- raise
+ ent_file = ent.file_output()
+ clean_write_and_commit(ent_file, f"Creating new Entrance {ent}", editor)
return
def _guess_survex_file(areacode, id):
@@ -661,23 +665,8 @@ def _makecave(form, areacode):
def _savecave(form, areacode, editor, cave):
cave.save()
-
- try:
- cave_file = cave.file_output()
- write_and_commit([cave_file], f"Creating new cave {cave}", editor)
- # leave other exceptions unhandled so that they bubble up to user interface
- except PermissionError:
- message = f"CANNOT save this file.\nPERMISSIONS incorrectly set on server for this file {cave.filename}. Ask a nerd to fix this."
- return render(request, "errors/generic.html", {"message": message})
- except WriteAndCommitError as e:
- message = f"CANNOT git on server for this file {cave.filename}.\n{e}\nEdits may not be committed.\nAsk a nerd to fix this."
- return render(request, "errors/generic.html", {"message": e.message})
- except subprocess.SubprocessError as e:
- message = f"CANNOT update server for this file {cave.filename}.\n{e}\nEdits may not be committed.\nAsk a nerd to fix this."
- return render(request, "errors/generic.html", {"message": message})
- except:
- raise
-
+ cave_file = cave.file_output()
+ clean_write_and_commit(cave_file, f"Creating new cave {cave}", editor)
return
def _newwallet(form, areacode, editor):
diff --git a/templates/dataformat/entrance.xml b/templates/dataformat/entrance.xml
index 68d04ba6..efbe0ecb 100644
--- a/templates/dataformat/entrance.xml
+++ b/templates/dataformat/entrance.xml
@@ -27,7 +27,7 @@ though, you do not need to do a data import as it happens automatically -->
{{ entrance.lastvisit|default_if_none:""|safe }}
{{ entrance.approach|default_if_none:""|safe }}
{{ entrance.underground_description|default_if_none:""|safe }}
-{{ entrance.photo|default_if_none:"
"|safe }}
+{{ entrance.photo|safe }}