about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJohn Nduli2024-08-27 10:21:35 +0300
committerBonfaceKilz2024-08-29 15:31:34 +0300
commit93a870ad484f641e96c04675e5f2aaad4a12c2d5 (patch)
tree4700bd7099f049919a85dd392a22c2859d87a672
parentd6019d7a2af748cd8ee5f86f0e754cb3ef5a2619 (diff)
downloadgenenetwork2-93a870ad484f641e96c04675e5f2aaad4a12c2d5.tar.gz
feat: add post actions for editting wiki content
-rw-r--r--gn2/wqflask/templates/wiki/edit_wiki.html35
-rw-r--r--gn2/wqflask/views.py61
2 files changed, 56 insertions, 40 deletions
diff --git a/gn2/wqflask/templates/wiki/edit_wiki.html b/gn2/wqflask/templates/wiki/edit_wiki.html
index 942280dc..cee874a3 100644
--- a/gn2/wqflask/templates/wiki/edit_wiki.html
+++ b/gn2/wqflask/templates/wiki/edit_wiki.html
@@ -14,6 +14,7 @@
 
 {% block content %}
 
+{{ flash_me() }}
 <section class="container center-block">
     <div class="row">
 	<div class="col-md-3"></div>
@@ -30,18 +31,26 @@
 		    <label for="species" class="col-sm-2">Species: </label>
 		    <select name="species" id="species">
 			{% for name, species_name in species_dict.items() %}
-			<option value="{{ name }}">{{ species_name }}</option>
+			    {% if name == content["species"] %}
+			    <option selected="selected" value="{{ name }}">{{ species_name }}</option>
+			    {% else %}
+			    <option value="{{ name }}">{{ species_name }}</option>
+			    {% endif %}
 			{% endfor %}
 		    </select>
 		</div>
 		<div class="form-group">
 		    <label for="pubmed_ids" class="col-sm-2">PubMed IDS: </label>
-		    <input type="text" name="pubmed_ids" size=25 maxlength=25>
+		    <input type="text" name="pubmed_ids" size=25 maxlength=25 value="{{ " ".join(content["pubmed_ids"]) }}">
 		    (optional, separate by blank space only)
 		</div>
 		<div class="form-group">
-		    <label for="weburl" class="col-sm-2">Web resource URL: </label>
-		    <input type="text" name="weburl" value="http://" size=50 maxlength=255>
+		    <label for="web_url" class="col-sm-2">Web resource URL: </label>
+		    {% if content["weburl"] %}
+		    <input type="text" name="web_url" value="{{ content["weburl"] }}" size=50 maxlength=255>
+		    {% else %}
+		    <input type="text" name="web_url" value="http://" size=50 maxlength=255>
+		    {% endif %}
 		    (optional)
 		</div>
 		<div class="form-group">
@@ -64,7 +73,11 @@
 		    <div class="row">
 		    {% for cat in group %}
 			<label class="checkbox-inline col-sm-3">
+			    {% if cat in content["categories"] %}
+			    <input checked type="checkbox" name="genecategory" value="{{ cat }}"> {{ cat }}
+			    {% else %}
 			    <input type="checkbox" name="genecategory" value="{{ cat }} "> {{ cat }}
+			    {% endif %}
 			</label>
 		    {% endfor %}
 		    </div>
@@ -72,21 +85,9 @@
 		</div>
 		<div class="form-group">
 		    <button type="submit" name="submit" class="btn btn-primary">Update GeneWiki Entry</button>
-		    <button type="reset" name="rest" class="btn btn-secondary">Reset</button>
+		    <button type="reset" name="rest" class="btn btn-secondary" onClick="window.location.reload();">Reset</button>
 		</div>
 	    </form>
 	</div>
     </div>
-<FORM METHOD="POST" ACTION="/webqtl/main.py" NAME="addgenerif">
-
-<INPUT TYPE="hidden" NAME="symbol" VALUE="shh">
-<INPUT TYPE="hidden" NAME="curStatus" VALUE="insertCheck">
-<INPUT TYPE="hidden" NAME="FormID" VALUE="geneWiki">
-<INPUT TYPE="hidden" NAME="reason" VALUE="">
-<INPUT TYPE="hidden" NAME="action" VALUE="update">
-<INPUT TYPE="hidden" NAME="Id" VALUE="230">
-<P>
-
-</FORM>
-
 {% endblock %}
diff --git a/gn2/wqflask/views.py b/gn2/wqflask/views.py
index 18f749c9..b29efd94 100644
--- a/gn2/wqflask/views.py
+++ b/gn2/wqflask/views.py
@@ -1502,31 +1502,46 @@ def approve_reject_diff() -> Response:
                                 diff_id=form["diff_id"]))
 
 
-@app.route("/wiki/<int:comment_id>/edit")
+@app.route("/wiki/<int:comment_id>/edit", methods=["GET", "POST"])
 def edit_wiki(comment_id: int):
     """fetch generif metadata from gn3 and display it"""
     # FIXME: better error handling
-    last_wiki_content = (
-        monad_requests.get(urljoin(GN3_LOCAL_URL, f"/api/metadata/wiki/{comment_id}"))
-        .then(lambda res: res)
-        .either(lambda _: [], lambda x: x.json())
-    )
-    species_dict = (
-        monad_requests.get(urljoin(GN3_LOCAL_URL, "/api/metadata/wiki/species"))
-        .then(lambda res: res)
-        .either(lambda _: [], lambda x: x.json())
-    )
-    categories = (
-        monad_requests.get(urljoin(GN3_LOCAL_URL, "/api/metadata/wiki/categories"))
-        .then(lambda resp: resp)
-        .either(lambda _: [], lambda x: list(x.json().keys()))
-    )
+    if request.method == "GET":
+        last_wiki_content = (
+            monad_requests.get(urljoin(GN3_LOCAL_URL, f"/api/metadata/wiki/{comment_id}"))
+            .either(lambda err: err.raise_for_status(), lambda x: x.json())
+        )
+
+        species_dict = (
+            monad_requests.get(urljoin(GN3_LOCAL_URL, "/api/metadata/wiki/species"))
+            .either(lambda err: err.raise_for_status(), lambda x: x.json())
+        )
+        categories = (
+            monad_requests.get(urljoin(GN3_LOCAL_URL, "/api/metadata/wiki/categories"))
+            .either(lambda err: err.raise_for_status(), lambda x: list(x.json().keys()))
+        )
 
-    grouped_categories = [categories[i : i + 3] for i in range(0, len(categories), 3)]
+        grouped_categories = [categories[i : i + 3] for i in range(0, len(categories), 3)]
 
-    return render_template(
-        "wiki/edit_wiki.html",
-        content=last_wiki_content,
-        species_dict=species_dict,
-        grouped_categories=grouped_categories,
-    )
+        return render_template(
+            "wiki/edit_wiki.html",
+            content=last_wiki_content,
+            species_dict=species_dict,
+            grouped_categories=grouped_categories,
+        )
+    if request.method == "POST":
+        post_data = request.form
+        payload = {
+            "symbol": post_data["symbol"],
+            "pubmed_ids": [x.strip() for x in post_data["pubmed_ids"].split()],
+            "species": post_data["species"],
+            "comment": post_data["comment"],
+            "email": post_data["email"],
+            "web_url": post_data["web_url"],
+            "initial": post_data["initial"],
+            "categories": post_data.getlist("genecategory"),
+            "reason": post_data["reason"],
+            }
+        post_res = monad_requests.post(urljoin(GN3_LOCAL_URL, f"api/metadata/wiki/{comment_id}/edit"), json=payload).either(lambda err: err.raise_for_status(), lambda success: success.json())
+        flash(f"Success: {post_res}", "alert-success")
+        return redirect(url_for("edit_wiki", comment_id=comment_id))