summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/models/caves.py20
-rw-r--r--core/views/caves.py22
2 files changed, 26 insertions, 16 deletions
diff --git a/core/models/caves.py b/core/models/caves.py
index 4d2e0a9..263eaf1 100644
--- a/core/models/caves.py
+++ b/core/models/caves.py
@@ -45,19 +45,13 @@ def writetrogglefile(filepath, filecontent):
filename = filepath.name
git = settings.GIT
- try:
- with open(filepath, "w") as f:
- os.chmod(filepath, 0o664) # set file permissions to rw-rw-r--
- f.write(filecontent)
- print(f'WRITING{cwd}---{filename} ')
- call([git, "add", filename], cwd=cwd)
- call([git, "commit", "-m", 'Online cave or entrance edit'], cwd=cwd)
- except PermissionError:
- message = f'CANNOT save this file.\nPERMISSIONS incorrectly set on server for this file {filename}. Ask a nerd to fix this.'
- return render(request,'errors/generic.html', {'message': message})
- except:
- message = f'CANNOT git on server for this file {filename}. Edits not saved.\nAsk a nerd to fix this.'
- return render(request,'errors/generic.html', {'message': message})
+ # do not trap exceptions, pass them up to the view that called this function
+ with open(filepath, "w") as f:
+ os.chmod(filepath, 0o664) # set file permissions to rw-rw-r--
+ f.write(filecontent)
+ print(f'WRITING{cwd}---{filename} ')
+ call([git, "add", filename], cwd=cwd)
+ call([git, "commit", "-m", 'Online cave or entrance edit'], cwd=cwd)
class Area(TroggleModel):
diff --git a/core/views/caves.py b/core/views/caves.py
index bc65219..8824425 100644
--- a/core/views/caves.py
+++ b/core/views/caves.py
@@ -358,8 +358,16 @@ def edit_cave(request, slug=None):
ceinsts = ceFormSet.save(commit=False)
for ceinst in ceinsts:
ceinst.cave = cave
- ceinst.save()
- cave.writeDataFile()
+ ceinst.save()
+ try:
+ cave.writeDataFile()
+ 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:
+ message = f'CANNOT git on server for this file {cave.filename}. Edits not saved.\nAsk a nerd to fix this.'
+ return render(request,'errors/generic.html', {'message': message})
+
return HttpResponseRedirect("/" + cave.url)
else:
message = f'! POST data is INVALID {cave}'
@@ -420,7 +428,15 @@ def edit_entrance(request, caveslug=None, slug=None):
el.cave = cave
el.entrance = entrance
el.save()
- entrance.writeDataFile()
+ try:
+ entrance.writeDataFile()
+ except PermissionError:
+ message = f'CANNOT save this file.\nPERMISSIONS incorrectly set on server for this file {entrance.filename}. Ask a nerd to fix this.'
+ return render(request,'errors/generic.html', {'message': message})
+ except:
+ message = f'CANNOT git on server for this file {entrance.filename}. Edits not saved.\nAsk a nerd to fix this.'
+ return render(request,'errors/generic.html', {'message': message})
+
return HttpResponseRedirect("/" + cave.url)
else:
message = f'! POST data is INVALID {cave}'