summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/views/expo.py21
-rw-r--r--templates/errors/generic.html2
2 files changed, 16 insertions, 7 deletions
diff --git a/core/views/expo.py b/core/views/expo.py
index 8b3e27e..2adf75b 100644
--- a/core/views/expo.py
+++ b/core/views/expo.py
@@ -310,26 +310,33 @@ def editexpopage(request, path):
cwd = filepath.parent
filename = filepath.name
git = settings.GIT
+ # see also core/models/cave.py writetrogglefile()
try:
with open(filepath, "w") as f:
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
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})
try:
- cp1 = subprocess.run([git, "add", filename], cwd=cwd, capture_output=True)
- cp2 = subprocess.run([git, "commit", "-m", 'Edit this page'], cwd=cwd, capture_output=True)
- message = f'Test output this file {filename}. git command output.\n' + str(cp1) + '\n\n' + str(cp2)
- return render(request,'errors/debug.html', {'message': message})
+ cp_add = subprocess.run([git, "add", filename], cwd=cwd, capture_output=True, text=True)
+ if cp_add.returncode != 0:
+ msgdata = 'Ask a nerd to fix this.\n\n' + cp_add.stderr + '\n\n' + cp_add.stdout + '\n\nreturn code: ' + str(cp_add.returncode)
+ message = f'CANNOT git on server for this file {filename}. Edits saved but not added to git.\n\n' + msgdata
+ return render(request,'errors/generic.html', {'message': message})
+
+ cp_commit = subprocess.run([git, "commit", "-m", 'Edit this page'], cwd=cwd, capture_output=True, text=True)
+ # This produces return code = 1 if it commits OK, but if the repo still needs to be pushed to origin/expoweb
+ if cp_commit.returncode != 0 and cp_commit.stdout != 'nothing to commit, working tree clean':
+ msgdata = 'Ask a nerd to fix this.\n\n' + cp_commit.stderr + '\n\n' + cp_commit.stdout + '\n\nreturn code: ' + str(cp_commit.returncode)
+ message = f'Eror code with git on server for this file {filename}. Edits saved, added to git but NOT committed.\n\n' + msgdata
+ return render(request,'errors/generic.html', {'message': message})
except subprocess.SubprocessError:
- message = f'CANNOT git on server for this file {filename}. Edits not saved.\nAsk a nerd to fix this.'
+ message = f'CANNOT git on server for this file {filename}. Subprocess error. Edits not saved.\nAsk a nerd to fix this.'
return render(request,'errors/generic.html', {'message': message})
return HttpResponseRedirect(reverse('expopage', args=[path])) # Redirect after POST
diff --git a/templates/errors/generic.html b/templates/errors/generic.html
index 0f2e876..9f345c0 100644
--- a/templates/errors/generic.html
+++ b/templates/errors/generic.html
@@ -16,7 +16,9 @@
<font color="red">
{% if message %}
+ <pre>
{{message}}
+ </pre>
{% else %}
<p>We are terribly sorry but an unknown fault has occurred. </p>