summaryrefslogtreecommitdiffstats
path: root/core/views/expo.py
diff options
context:
space:
mode:
Diffstat (limited to 'core/views/expo.py')
-rw-r--r--core/views/expo.py21
1 files changed, 14 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