2
0
mirror of https://expo.survex.com/repositories/troggle/.git synced 2024-11-25 16:51:54 +00:00

Bugfixes for new survex file

This commit is contained in:
Philip Sargent 2023-03-05 19:09:28 +00:00
parent 4a2106183a
commit b086348d38

View File

@ -132,7 +132,9 @@ class SvxForm(forms.Form):
self.survexfile = False self.survexfile = False
return survextemplatefile return survextemplatefile
refs = SurvexFile.objects.filter(path=self.data["filename"]) refs = SurvexFile.objects.filter(path=self.data["filename"])
if len(refs)==1: if len(refs)==0: # new survex file, not created in db yet
self.survexfile = False
elif len(refs)==1:
self.survexfile = SurvexFile.objects.get(path=self.data["filename"]) self.survexfile = SurvexFile.objects.get(path=self.data["filename"])
else: else:
self.survexfile = refs[0] self.survexfile = refs[0]
@ -160,9 +162,11 @@ class SvxForm(forms.Form):
def SaveCode(self, rcode): def SaveCode(self, rcode):
fname = survexdatasetpath / (self.data["filename"] + ".svx") fname = survexdatasetpath / (self.data["filename"] + ".svx")
if not os.path.isfile(fname): if not fname.is_file():
if re.search(r"\[|\]", rcode): if re.search(r"\[|\]", rcode):
return "Error: remove all []s from the text. They are only template guidance." errmsg = "Error: remove all []s from the text.\nEverything inside [] are only template guidance.\n\n"
errmsg += "All [] must be edited out and replaced with real data before you can save this file.\n"
return errmsg
mbeginend = re.search(r"(?s)\*begin\s+(\w+).*?\*end\s+(\w+)", rcode) mbeginend = re.search(r"(?s)\*begin\s+(\w+).*?\*end\s+(\w+)", rcode)
if not mbeginend: if not mbeginend:
return "Error: no begin/end block here" return "Error: no begin/end block here"
@ -194,7 +198,7 @@ class SvxForm(forms.Form):
comment = f"Online survex edit: {self.data['filename']}.svx on dev machine '{socket.gethostname()}' " comment = f"Online survex edit: {self.data['filename']}.svx on dev machine '{socket.gethostname()}' "
only_commit(fname, comment) only_commit(fname, comment)
return "SAVED and committed to git" return "SAVED and committed to git (if there were differences)"
def Process(self): def Process(self):
print(">>>>....\n....Processing\n") print(">>>>....\n....Processing\n")
@ -241,6 +245,10 @@ def svx(request, survex_file):
editing) with buttons which allow SAVE, check for DIFFerences from saved, and RUN (which runs the editing) with buttons which allow SAVE, check for DIFFerences from saved, and RUN (which runs the
cavern executable and displays the output below the main textarea). cavern executable and displays the output below the main textarea).
Requires CSRF to be set up correctly, and requires permission to write to the filesystem. Requires CSRF to be set up correctly, and requires permission to write to the filesystem.
Originally the non-existence of difflist was used as a marker to say that the file had been saved
and that thuis there were no differences. This is inadequate, as a new file which has not been saved
also has no difflist.
""" """
warning = False warning = False
@ -286,30 +294,39 @@ def svx(request, survex_file):
form.data["code"] = rcode form.data["code"] = rcode
# process(survex_file) # process(survex_file)
svxfile = form.survexfile # only valid once form.GetDiscCode() called
if "code" not in form.data: if "code" not in form.data:
form.data["code"] = form.GetDiscCode() form.data["code"] = form.GetDiscCode()
if form.template: if form.template:
warning = True warning = True
if not difflist: if not difflist:
difflist.append("No differences - file was saved") if svxfile:
difflist.append("No differences.")
else:
difflist.append("No differences from initial template.")
if message: if message:
difflist.insert(0, message) difflist.insert(0, message)
# print [ form.data['code'] ] # print [ form.data['code'] ]
svxincludes = re.findall(r"(?i)\*include\s+(\S+)", form.data["code"] or "") svxincludes = re.findall(r"(?i)\*include\s+(\S+)", form.data["code"] or "")
svxfile = form.survexfile # only valid once form.GetDiscCode() called
print(svxfile) # collect all the survex blocks which actually have a valid date
if svxfile:
try:
svxblocks = svxfile.survexblock_set.filter(date__isnull=False).order_by('date')
except:
svxblocks = []
try: try:
svxblocksall = svxfile.survexblock_set.all() svxblocksall = svxfile.survexblock_set.all()
except AttributeError: # some survexfiles just *include files and have no blocks themselves except AttributeError: # some survexfiles just *include files and have no blocks themselves
svxblocksall = [] svxblocksall = []
# collect all the survex blocks which actually have a valid date
if svxfile:
svxblocks = svxfile.survexblock_set.filter(date__isnull=False).order_by('date')
else: else:
svxblocks = [] svxblocks = []
svxblocksall = []
if not difflist:
difflist = ["Survex file does not exist yet"]
events = events_on_dates(svxblocks) events = events_on_dates(svxblocks)