mirror of
https://expo.survex.com/repositories/troggle/.git
synced 2024-11-25 08:41:51 +00:00
capture git subprocess errors
This commit is contained in:
parent
21ad6ecffb
commit
ab8813e389
@ -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
|
||||
|
@ -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>
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user