diff options
-rw-r--r-- | core/models/caves.py | 20 | ||||
-rw-r--r-- | core/views/caves.py | 22 |
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}' |