about summary refs log tree commit diff
diff options
context:
space:
mode:
authorBonfaceKilz2022-05-12 16:50:50 +0300
committerBonfaceKilz2022-05-27 15:17:52 +0300
commitf51fd91a2d09ddf7cb8a17b92dae4dba0429f603 (patch)
treec15c4c4b6586b9703a647b3d462dfb8c6b9e6b98
parentd998a402feca4d609953aa9dd5e58b70ee21a33a (diff)
downloadgenenetwork2-f51fd91a2d09ddf7cb8a17b92dae4dba0429f603.tar.gz
Save diffed data to redis (wip)
* wqflask/wqflask/metadata_edits.py
(show_case_attribute_columns): pass the diff'ed
data to the template
(update_case_attributes): New function. Parses
data from JS and saves it redis in
"case-attr-diffs:review"
* wqflask/wqflask/templates/case_attributes.html:
Make post request---to save the data to redis for
approval.
-rw-r--r--wqflask/wqflask/metadata_edits.py42
-rw-r--r--wqflask/wqflask/templates/case_attributes.html14
2 files changed, 50 insertions, 6 deletions
diff --git a/wqflask/wqflask/metadata_edits.py b/wqflask/wqflask/metadata_edits.py
index 279e63ac..cc9ee9bd 100644
--- a/wqflask/wqflask/metadata_edits.py
+++ b/wqflask/wqflask/metadata_edits.py
@@ -699,8 +699,46 @@ def approve_data(resource_id: str, file_name: str):
 
 @metadata_edit.route("/case-attributes")
 def show_case_attribute_columns():
-    case_attributes = {}
+    redis_conn = redis.from_url(
+        current_app.config["REDIS_URL"], decode_responses=True
+    )
+    diff_data = redis_conn.hgetall("case-attr-diffs:review")
+    modifications, deletions, inserts = [], [], []
+    if diff_data:
+        for _, diff in diff_data.items():
+            diff = json.loads(diff)
+            if (m_ := diff.get("Modifications")):
+                modifications.append(m_)
+            if (d_ := diff.get("Deletions")):
+                deletions.append(d_)
+            if (i_ := diff.get("Insertions")):
+                inserts.append(i_)
+    # Inserts, Deletes
+
     with database_connection() as conn:
         return render_template(
-            "case_attributes.html", case_attributes=get_case_attributes(conn)
+            "case_attributes.html",
+            case_attributes=get_case_attributes(conn),
+            modifications=modifications,
+            deletions=deletions,
+            inserts=inserts
+        )
+
+
+@metadata_edit.route("/case-attributes", methods=("POST",))
+def update_case_attributes():
+    data_ = request.form.to_dict()
+    if data_:
+        data_ = json.loads(data_.get("data"))
+        data_["author"] = g.user_session.record.get("user_id")
+        data_["timestamp"] = (datetime
+                              .datetime.now()
+                              .strftime("%Y-%m-%d %H:%M:%S"))
+        # Save data to redis as a set
+        redis_conn = redis.from_url(
+            current_app.config["REDIS_URL"], decode_responses=True
         )
+        redis_conn.hset("case-attr-diffs:review",
+                        f"{data_.get('timestamp')}",
+                        json.dumps(data_))
+    return redirect(url_for("metadata_edit.show_case_attribute_columns"))
diff --git a/wqflask/wqflask/templates/case_attributes.html b/wqflask/wqflask/templates/case_attributes.html
index 7b6af57d..7aa6ee73 100644
--- a/wqflask/wqflask/templates/case_attributes.html
+++ b/wqflask/wqflask/templates/case_attributes.html
@@ -113,8 +113,7 @@
                     </tr>
                     {% endfor %}
                 </tbody>
-                </table>
-
+        </table>
 </div>
 {%endblock%}
 
@@ -192,8 +191,15 @@
 	 if (!Object.keys(diff).length == 0) {
 	     diff["id"] = $(this).parents("tr").data("id");
 	 }
-	 $.post('{{ url_for("metadata_edit.update_case_attributes") }}',
-		JSON.stringify(diff));
+	 $.ajax({
+	     type: "POST",
+	     data: {"data": JSON.stringify(diff)},
+	     url: '{{ url_for("metadata_edit.update_case_attributes") }}',
+	     /* contentType: "application/json", */
+	     success: function(data, status, xhr) {
+		 location.reload();
+		    }
+	 });
      });
      // Edit row on edit button click
      $(document).on("click", ".edit", function(){