forked from expo/troggle
oops
This commit is contained in:
@@ -233,19 +233,19 @@ nothing to commit, working tree clean
|
||||
f"CANNOT git COMMIT on server for this file {filename}. Subprocess error. Edits not saved.\nAsk a nerd to fix this."
|
||||
)
|
||||
|
||||
def g_string(author_string):
|
||||
def git_string(author_string):
|
||||
|
||||
# Regular expression for a git-compatible author string
|
||||
# valid example "John Doe <john.doe@example.com>"
|
||||
|
||||
author_regex = re.compile(r'^[a-zA-Z][\w\s\.\-]* <[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}>$')
|
||||
author_regex = re.compile(r'^[a-zA-Z][\w\s\_\.\-]* <[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-_]+\.[a-zA-Z]{2,}>$')
|
||||
|
||||
if author_regex.match(author_string):
|
||||
print(f"Valid git-compatible author string: {author_string}")
|
||||
print(f"Valid git-compatible author string: '{author_string}'")
|
||||
return author_string
|
||||
else:
|
||||
editor = author_string.replace("@","_at_")
|
||||
editor = re.sub('[^0-9a-zA-Z_]+', '*', editor)
|
||||
editor = re.sub('[^0-9a-zA-Z_\.]+', '*', editor)
|
||||
editor += f" <{editor}@potatohut.expo>"
|
||||
print(f"Not git-compatible author string, replacing as '{editor}'")
|
||||
return editor
|
||||
@@ -258,7 +258,7 @@ def write_and_commit(files, message, editor=None):
|
||||
git = settings.GIT
|
||||
commands = []
|
||||
if editor:
|
||||
editor = g_string(editor)
|
||||
editor = git_string(editor)
|
||||
else:
|
||||
# cannot happen as form verification has this as an obligatory field
|
||||
editor = "Automatic <automaton@potatohut.expo>"
|
||||
@@ -373,6 +373,10 @@ class WriteAndCommitError(Exception):
|
||||
def writetrogglefile(filepath, filecontent, commit_msg=None):
|
||||
"""
|
||||
REPLACE with call to write_and_commit + any necessary setup
|
||||
used only by cave editor in
|
||||
core/models/caves.py
|
||||
and by
|
||||
make_new_expo_dir(year)
|
||||
|
||||
Commit the new saved file to git
|
||||
Callers to cave.writeDataFile() or entrance.writeDataFile() should handle the exception PermissionsError explicitly
|
||||
|
||||
@@ -451,11 +451,14 @@ def editexpopage(request, path):
|
||||
print("### File not found ### ", filepath)
|
||||
filefound = False
|
||||
|
||||
editor_name = request.COOKIES.get('editor_id', '') # if no cookie, then get empty string
|
||||
|
||||
if request.method == "POST": # If the form has been submitted...
|
||||
pageform = ExpoPageForm(request.POST) # A form bound to the POST data
|
||||
if pageform.is_valid(): # Form valid therefore write file
|
||||
# print("### \n", str(pageform)[0:300])
|
||||
# print("### \n csrfmiddlewaretoken: ",request.POST['csrfmiddlewaretoken'])
|
||||
if not editor_name:
|
||||
if filefound:
|
||||
headmatch = re.match(r"(.*)<title>.*</title>(.*)", head, re.DOTALL + re.IGNORECASE)
|
||||
if headmatch:
|
||||
@@ -476,7 +479,7 @@ def editexpopage(request, path):
|
||||
bodyargs = ""
|
||||
postbody = "</html>\n"
|
||||
body = pageform.cleaned_data["html"]
|
||||
body = body.replace("\r", "\n")
|
||||
body = body.replace("\r", "")
|
||||
result = f"{preheader}<head{headerargs}>{head}</head>{postheader}<body{bodyargs}>\n{body}</body>{postbody}"
|
||||
|
||||
if not filefound or result != html: # Check if content changed at all
|
||||
@@ -495,9 +498,11 @@ def editexpopage(request, path):
|
||||
(title,) = m.groups()
|
||||
else:
|
||||
title = ""
|
||||
pageform = ExpoPageForm(initial={"html": body, "title": title})
|
||||
pageform = ExpoPageForm(initial={"who_are_you":editor_name, "html": body, "title": title})
|
||||
else:
|
||||
pageform = ExpoPageForm()
|
||||
pageform = ExpoPageForm(initial={"who_are_you":editor_name})
|
||||
|
||||
|
||||
return render(
|
||||
request,
|
||||
"editexpopage.html",
|
||||
@@ -528,7 +533,7 @@ class ExpoPageForm(forms.Form):
|
||||
)
|
||||
who_are_you = forms.CharField(
|
||||
widget=forms.Textarea(
|
||||
attrs={"cols": 90, "rows": 1, "placeholder": "You have edited this page, who are you ? e.g. 'Animal <mta@loveshack.expo>'",
|
||||
attrs={"cols": 90, "rows": 1, "placeholder": "You have edited this page, who are you ? e.g. 'Animal <mta@gasthof.expo>'",
|
||||
"style": "vertical-align: text-top;"}
|
||||
),
|
||||
label = "Editor"
|
||||
|
||||
Reference in New Issue
Block a user