diff options
Diffstat (limited to 'core')
-rw-r--r-- | core/utils.py | 35 | ||||
-rw-r--r-- | core/views/wallets_edit.py | 70 |
2 files changed, 32 insertions, 73 deletions
diff --git a/core/utils.py b/core/utils.py index 8647d44..154c468 100644 --- a/core/utils.py +++ b/core/utils.py @@ -210,7 +210,7 @@ def get_cookie(request): return editor def git_string(author_string): - """Rewrites the supplied editor string intoa git-complient author string + """Rewrites the supplied editor string into a git-complient author string Uses a regular expression for a git-compatible author string written mostly by Copilot valid example "John Doe <john.doe@example.com>" """ @@ -259,7 +259,7 @@ def git_add(filename, cwd, commands=[]): def git_commit(cwd, message, editor, commands=[]): - """Commits whatever has been Staged by git in this directory + """Commits whatever has been Staged by git in this directory 'cwd' """ git = settings.GIT print(f"git commit in {cwd}") @@ -277,25 +277,23 @@ def git_commit(cwd, message, editor, commands=[]): # which will be the case when running a test troggle system on a development machine # Several ways of testing if the commit failed - #This produces return code = 1 if it commits OK, but when the repo still needs to be pushed to origin/expoweb - # if (not cp_commit.stdout) or len(cp_commit.stdout) < 2 or cp_commit.stdout.split("\n")[-2] != "nothing to commit, working tree clean": + # if cp_commit.stdout.split("\n")[-2] != "nothing to commit, working tree clean": + # if cp_commit.returncode == 1 and cp_commit.stdout == DEV_OK: # only good for 1 commit ahead of origin/repo - if cp_commit.returncode == 1 and cp_commit.stdout == DEV_OK: # only good for 1 commit ahead of origin/repo - pass - else: - if cp_commit.returncode != 0 and not cp_commit.stdout.strip().endswith( - "nothing to commit, working tree clean" - ): - msgdata = f'--Ask a nerd to fix this problem in add_commit().\n--{cp_commit.stderr}\n--"{cp_commit.stdout}"\n--return code:{str(cp_commit.returncode)}' - print(msgdata) - raise WriteAndCommitError( - f"Error code with git on server in this directory: {cwd}. Edits saved, added to git, but NOT committed.\n\n" - + msgdata - ) + if cp_commit.returncode != 0 and not cp_commit.stdout.strip().endswith( + "nothing to commit, working tree clean" + ): + msgdata = f'--Ask a nerd to fix this problem in git_commit().\n--{cp_commit.stderr}\n--"{cp_commit.stdout}"\n--return code:{str(cp_commit.returncode)}' + print(msgdata) + raise WriteAndCommitError( + f"Error code with git on server in this directory: {cwd}. Edits saved, added to git, but NOT committed.\n\n" + + msgdata + ) return commands -def add_commit(fname, message, editor=None): - """Only used to commit a survex file edited and saved in view/survex.py""" +def add_commit(fname, message, editor): + """Used to commit a survex file edited and saved in view/survex.py + and also contents.json for an edited wallet""" cwd = fname.parent filename = fname.name commands = [] @@ -307,6 +305,7 @@ def add_commit(fname, message, editor=None): editor = "Anathema Device <a.device@potatohut.expo>" try: + # print(f"add_commit: {editor=} {filename=} {cwd=}") commands = git_add(filename, cwd, commands) commands = git_commit(cwd, message, editor, commands) diff --git a/core/views/wallets_edit.py b/core/views/wallets_edit.py index dfb67d3..2c8ffe3 100644 --- a/core/views/wallets_edit.py +++ b/core/views/wallets_edit.py @@ -19,12 +19,13 @@ from troggle.core.models.logbooks import LogbookEntry # , PersonLogEntry from troggle.core.models.survex import SurvexBlock, SurvexFile, SurvexPersonRole from troggle.core.models.troggle import DataIssue, Expedition from troggle.core.models.wallets import YEAR_RANGE, Wallet, make_valid_date -from troggle.core.utils import COOKIE_MAX_AGE, WriteAndCommitError, current_expo, get_cookie, git_string, sanitize_name, write_and_commit +from troggle.core.utils import COOKIE_MAX_AGE, WriteAndCommitError, add_commit, current_expo, get_cookie, git_add, \ + git_commit, git_string, sanitize_name, write_and_commit from troggle.core.views.auth import login_required_if_public from troggle.core.views.caves import get_cave_leniently, getCave from troggle.core.views.scans import caveifywallet, oldwallet from troggle.core.views.uploads import FilesForm -from troggle.parsers.scans import contentsjson +from troggle.parsers.scans import CONTENTSJSON """Main wallet editing form, which includes scan file upload into the wallet """ @@ -504,60 +505,19 @@ def walletedit(request, path=None): return w def commit_json(waldata): - # CHANGE THIS to use git_commit() from troggle.utils - destfolder = contents_path.parent - dr_add = subprocess.run([git, "add", contentsjson], cwd=destfolder, capture_output=True, text=True) - if dr_add.returncode != 0: - msgdata = ( - "Ask a nerd to fix this.\n--" - + dr_add.stderr - + "\n--" - + dr_add.stdout - + "\n--return code: " - + str(dr_add.returncode) - ) - message = ( - f"CANNOT git on server for this file {contentsjson}. Edits saved but not added to git.\n\n" + msgdata - ) - print(message) - return render(request, "errors/generic.html", {"message": message}) + print(f"commit_json \n..{editor=} \n..{contents_path=}") + + if "cave" in waldata: + label = str(waldata["cave"]).replace("[","").replace("]","") else: - - if socket.gethostname() != "expo": - comment = f"on dev machine '{socket.gethostname()}' " - else: - comment = "" - if "cave" in waldata: - label = waldata["cave"] + if "name" in waldata: + label = waldata["name"] else: - if "name" in waldata: - label = waldata["name"] - else: - label = "" - - dr_commit = subprocess.run( - [git, "commit", "-m", f"JSON update wallet {wallet} {label} {comment}"], - cwd=destfolder, - capture_output=True, - text=True, - ) - # This produces return code = 1 if it commits OK - if dr_commit.returncode != 0: - msgdata = ( - "Ask a nerd to fix this.\n\nstderr: " - + dr_commit.stderr - + "\n\nstdout: " - + dr_commit.stdout - + "\n\nreturn code: " - + str(dr_commit.returncode) - ) - message = ( - f"Error code with git on server for this {contentsjson}. File is added to git, but NOT committed.\n" - + msgdata - ) - print(message) - return render(request, "errors/generic.html", {"message": message}) - + label = "" + + message = f"JSON update wallet {wallet} {label}" + add_commit(contents_path, message, editor) + def get_logbook_trips(): return None @@ -706,7 +666,7 @@ def walletedit(request, path=None): wurl = f"/walletedit/{wallet}".replace("#", ":") wallet = wallet.replace(":", "#") dirpath = Path(settings.SCANS_ROOT, year, wallet) - contents_path = Path(settings.DRAWINGS_DATA, "walletjson") / year / wallet / contentsjson + contents_path = Path(settings.DRAWINGS_DATA, "walletjson") / year / wallet / CONTENTSJSON fresh_wallet = False |