summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhilip Sargent <philip.sargent@klebos.com>2021-12-30 21:13:34 +0000
committerPhilip Sargent <philip.sargent@klebos.com>2021-12-30 21:13:34 +0000
commitb359937eabd383351e8863d80c785f05da029ab4 (patch)
tree2e842f6d7755522e50f930a0e72ea6434a637dda
parentc0545b8777914d5b116a76252b03c4a7fb5ce576 (diff)
downloadtroggle-b359937eabd383351e8863d80c785f05da029ab4.tar.gz
troggle-b359937eabd383351e8863d80c785f05da029ab4.tar.bz2
troggle-b359937eabd383351e8863d80c785f05da029ab4.zip
remove chmod attempt
-rw-r--r--core/models/caves.py9
-rw-r--r--core/views/caves.py24
-rw-r--r--core/views/expo.py9
3 files changed, 23 insertions, 19 deletions
diff --git a/core/models/caves.py b/core/models/caves.py
index 91ec492..d023f48 100644
--- a/core/models/caves.py
+++ b/core/models/caves.py
@@ -42,18 +42,19 @@ def writetrogglefile(filepath, filecontent):
'''Set permissions to rw-rw-r-- and commit the new saved file to git
Callers to cave.writeDataFile() or entrance.writeDataFile() should handle the exception PermissionsError explicitly
'''
+ # see also core/views/expo.py editexpopage()
filepath = Path(filepath)
cwd = filepath.parent
filename = filepath.name
git = settings.GIT
+ # as the wsgi process www-data, we have group write-access but are not owner, so cannot chmod.
# do not trap exceptions, pass them up to the view that called this function
- # if the os.chmod fails, it can zero the contents of the file as a side effect. Dangerous.
+ print(f'WRITING{cwd}---{filename} ')
with open(filepath, "w") as f:
- print(f'WRITING{cwd}---{filename} ')
f.write(filecontent)
- #filepath.chmod(0o664) # set file permissions to rw-rw-r--
- os.chmod(filepath, 0o664) # set file permissions to rw-rw-r--
+ #os.chmod(filepath, 0o664) # set file permissions to rw-rw-r--
+ # should replace .call with .run and capture_output=True
call([git, "add", filename], cwd=cwd)
call([git, "commit", "-m", 'Online cave or entrance edit'], cwd=cwd)
diff --git a/core/views/caves.py b/core/views/caves.py
index c8ee7e8..5415302 100644
--- a/core/views/caves.py
+++ b/core/views/caves.py
@@ -359,16 +359,15 @@ def edit_cave(request, slug=None):
for ceinst in ceinsts:
ceinst.cave = cave
ceinst.save()
- cave.writeDataFile()
- # 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})
- # leave other exeptions unhandled so that they bubble up to userinterface
- # 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})
+ try:
+ cave.writeDataFile()
+ # 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 SubprocessError:
+ message = f'CANNOT git on server for this file {cave.filename}. Edits may not be committed.\nAsk a nerd to fix this.'
+ return render(request,'errors/generic.html', {'message': message})
return HttpResponseRedirect("/" + cave.url)
else:
@@ -432,11 +431,12 @@ def edit_entrance(request, caveslug=None, slug=None):
el.save()
try:
entrance.writeDataFile()
+ # 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 {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.'
+ except SubprocessError:
+ message = f'CANNOT git on server for this file {entrance.filename}. Edits may not be committed.\nAsk a nerd to fix this.'
return render(request,'errors/generic.html', {'message': message})
return HttpResponseRedirect("/" + cave.url)
diff --git a/core/views/expo.py b/core/views/expo.py
index 1acee15..6c79771 100644
--- a/core/views/expo.py
+++ b/core/views/expo.py
@@ -312,15 +312,18 @@ def editexpopage(request, path):
git = settings.GIT
try:
with open(filepath, "w") as f:
- os.chmod(filepath, 0o664) # set file permissions to rw-rw-r--
- f.write(result)
print(f'WRITING{cwd}---{filename} ')
+ # as the wsgi process www-data, we have group write-access but are not owner, so cannot chmod.
+ # os.chmod(filepath, 0o664) # set file permissions to rw-rw-r--
+ # see also core/models/cave.py writetrogglefile()
+ f.write(result)
+ # should replace .call with .run and capture_output=True
subprocess.call([git, "add", filename], cwd=cwd)
subprocess.call([git, "commit", "-m", 'Edit this page'], 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:
+ except SubprocessError:
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})