about summary refs log tree commit diff
diff options
context:
space:
mode:
authorFrederick Muriuki Muriithi2023-02-28 14:32:34 +0300
committerFrederick Muriuki Muriithi2023-02-28 14:32:34 +0300
commit58158cdb241360f1d0b47d8994e41ad53d75849b (patch)
tree34f0dae39b4e139a03be2278a430681a3ce1e152
parent0c64b1f87739bd9298a182a7a7fca241b33d10cf (diff)
downloadgenenetwork2-58158cdb241360f1d0b47d8994e41ad53d75849b.tar.gz
oauth2: Unlink data from resource(s).
-rw-r--r--wqflask/wqflask/oauth2/resources.py28
-rw-r--r--wqflask/wqflask/templates/oauth2/view-resource.html6
2 files changed, 32 insertions, 2 deletions
diff --git a/wqflask/wqflask/oauth2/resources.py b/wqflask/wqflask/oauth2/resources.py
index 1551dc8a..872a29c6 100644
--- a/wqflask/wqflask/oauth2/resources.py
+++ b/wqflask/wqflask/oauth2/resources.py
@@ -100,6 +100,34 @@ def link_data_to_resource():
         return redirect(url_for(
             "oauth2.resource.view_resource", resource_id=form["resource_id"]))
 
+@resources.route("/data/unlink", methods=["POST"])
+@require_oauth2
+def unlink_data_from_resource():
+    """Unlink group data from a resource"""
+    form = request.form
+    try:
+        assert "resource_id" in form, "Resource ID not provided."
+        assert "dataset_id" in form, "Dataset ID not provided."
+        resource_id = form["resource_id"]
+
+        def __error__(error):
+            err = process_error(error)
+            flash(f"{err['error']}: {err['error_description']}", "alert-danger")
+            return redirect(url_for(
+                "oauth2.resource.view_resource", resource_id=resource_id))
+
+        def __success__(success):
+            flash(f"Data unlinked from resource successfully", "alert-success")
+            return redirect(url_for(
+                "oauth2.resource.view_resource", resource_id=resource_id))
+        return oauth2_post(
+            "oauth2/resource/data/unlink", data=dict(form)).either(
+            __error__, __success__)
+    except AssertionError as aserr:
+        flash(aserr.args[0], "alert-danger")
+        return redirect(url_for(
+            "oauth2.resource.view_resource", resource_id=form["resource_id"]))
+
 @resources.route("/edit/<uuid:resource_id>", methods=["GET"])
 @require_oauth2
 def edit_resource(resource_id: uuid.UUID):
diff --git a/wqflask/wqflask/templates/oauth2/view-resource.html b/wqflask/wqflask/templates/oauth2/view-resource.html
index 04be2a4c..fb44560b 100644
--- a/wqflask/wqflask/templates/oauth2/view-resource.html
+++ b/wqflask/wqflask/templates/oauth2/view-resource.html
@@ -56,13 +56,15 @@
 	  <tr>
 	    <td>
 	      <a href="https://gn1.genenetwork.org/webqtl/main.py?FormID=sharinginfo&GN_AccessionId={{data_item.accession_id}}&InfoPageName={{data_item.dataset_name}}"
-		 title="Link to information on dataset '{{data_item.dataset_fullname}}'">
+		 title="Link to information on dataset '{{data_item.dataset_fullname}}'"
+		 target="_blank">
 		{{data_item.dataset_name}}
 	      </a>
 	    </td>
 	    <td>{{data_item.dataset_fullname}}</td>
 	    <td>
-	      <form action="#" method="POST">
+	      <form action="{{url_for('oauth2.resource.unlink_data_from_resource')}}"
+		    method="POST">
 		<input type="hidden" name="resource_id"
 		       value="{{resource.resource_id}}" />
 		<input type="hidden" name="dataset_id"