about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMunyoki Kilyungi2024-02-26 22:07:27 +0300
committerBonfaceKilz2024-03-26 10:01:13 +0300
commitb1c08a54334d283ae71e6485f19a3e0fd31c6799 (patch)
treeef96e61eace12e95c0f9ac916525e558c151191f
parentd45656c53fadcfb774ebc1e35b4d084202ec4ff7 (diff)
downloadgenenetwork2-b1c08a54334d283ae71e6485f19a3e0fd31c6799.tar.gz
Reset repo and pull then write changes before committing.
* gn2/wqflask/edit.py: Import session_info.
(save_dataset_metadata): Add author as an argument. Reset repo and
pull then write changes before committing.  Split strings before
__run_cmd is called.
(metadata_edit): Rename "metadata" -> "__metadata".
(save): Save the output to the correct path.  Pass author to
"save_dataset_metadata".

Signed-off-by: Munyoki Kilyungi <me@bonfacemunyoki.com>
-rw-r--r--gn2/wqflask/edit.py46
1 files changed, 34 insertions, 12 deletions
diff --git a/gn2/wqflask/edit.py b/gn2/wqflask/edit.py
index 7abba0b5..3b28482e 100644
--- a/gn2/wqflask/edit.py
+++ b/gn2/wqflask/edit.py
@@ -3,6 +3,7 @@ import subprocess
 
 from urllib.parse import urljoin
 from pathlib import Path
+from gn2.wqflask.oauth2.session import session_info
 
 from pymonad.tools import curry
 from pymonad.either import Either, Left
@@ -21,7 +22,7 @@ metadata = Blueprint("metadata", __name__)
 
 def save_dataset_metadata(
         git_dir: str, output: str,
-        content: str, msg: str
+        author: str, content: str, msg: str
 ) -> Either:
     """Save dataset metadata to git"""
     @curry(2)
@@ -36,15 +37,17 @@ def save_dataset_metadata(
             })
         return 0
 
-    with Path(output) as _f:
-        _f.write(content)
+    (Either.insert(0)
+        .then(__run_cmd(f"git -C {git_dir} reset --hard origin".split(" ")))
+        .then(__run_cmd(f"git -C {git_dir} pull".split(" "))))
 
+    with Path(output).open(mode="w") as _f:
+        _f.write(content)
     return (
         Either.insert(0)
-        .then(__run_cmd(f"git -C {git_dir} pull"))
-        .then(__run_cmd(f"git -C {git_dir} add ."))
-        .then(__run_cmd(f"git -C {git_dir} commit --all --message {msg}"))
-        .then(__run_cmd(f"git -C {git_dir} push origin master --dry-run"))
+        .then(__run_cmd(f"git -C {git_dir} add .".split(" ")))
+        .then(__run_cmd(f"git -C {git_dir} commit -m".split(" ") + [f'{msg}', f"--author='{author}'", "--no-gpg-sign"]))
+        .then(__run_cmd(f"git -C {git_dir} push origin master --dry-run".split(" ")))
     )
 
 
@@ -55,7 +58,7 @@ def metadata_edit():
     __name = request.args.get("name")
     match request.args.get("type"):
         case "dcat:Dataset":
-            metadata = requests.get(
+            __metadata = requests.get(
                 urljoin(
                     GN3_LOCAL_URL,
                     f"api/metadata/datasets/{ __name }"
@@ -65,9 +68,9 @@ def metadata_edit():
             return render_template(
                 "metadata/editor.html",
                 name=__name,
-                metadata=metadata,
+                metadata=__metadata,
                 section=__section,
-                edit=metadata.get(__section),
+                edit=__metadata.get(__section),
             )
 
 
@@ -79,16 +82,35 @@ def save():
         get_setting("DATA_DIR"),
         "gn-docs"
     )
+    __map = {
+        "description": "summary.rtf",
+        "tissueInfo": "tissue.rtf",
+        "specifics": "specifics.rtf",
+        "caseInfo": "cases.rtf",
+        "platformInfo": "platform.rtf",
+        "processingInfo": "processing.rtf",
+        "notes": "notes.rtf",
+        "experimentDesignInfo": "experiment-design.rtf",
+        "acknowledgement": "acknowledgement.rtf",
+        "citation": "citation.rtf",
+        "experimentType": "experiment-type.rtf",
+        "contributors": "contributors.rtf"
+    }
     __output = Path(
         __gn_docs,
         "general/datasets/",
-        request.form.get("id").split("/")[-1]
+        request.form.get("id").split("/")[-1],
+        f"{__map.get(request.form.get('section'))}"
     )
+    __result = {}
     match request.form.get("type"):
         case "dcat:Dataset":
-            save_dataset_metadata(
+            __session = session_info()["user"]
+            __author = f"{__session['name']} <{__session['email']}>"
+            __result = save_dataset_metadata(
                 git_dir=__gn_docs,
                 output=__output,
+                author=__author,
                 content=request.form.get("editor"),
                 msg=request.form.get("edit-summary")
             ).either(