From 503ff72502d7bc440450c1c91ac2d5051ca446b9 Mon Sep 17 00:00:00 2001
From: BonfaceKilz
Date: Fri, 9 Jul 2021 15:23:10 +0300
Subject: templates: edit_probeset: Add template for editing probeset data
* wqflask/wqflask/templates/edit_probeset.html: New file(template).
---
wqflask/wqflask/templates/edit_probeset.html | 239 +++++++++++++++++++++++++++
wqflask/wqflask/views.py | 31 +++-
2 files changed, 268 insertions(+), 2 deletions(-)
create mode 100644 wqflask/wqflask/templates/edit_probeset.html
diff --git a/wqflask/wqflask/templates/edit_probeset.html b/wqflask/wqflask/templates/edit_probeset.html
new file mode 100644
index 00000000..85d49561
--- /dev/null
+++ b/wqflask/wqflask/templates/edit_probeset.html
@@ -0,0 +1,239 @@
+{% extends "base.html" %}
+{% block title %}Trait Submission{% endblock %}
+{% block content %}
+
+Edit Trait for Probeset
+Submit Trait | Reset
+
+{% if diff %}
+
+
+
+
+ Update History
+
+
+
+
+ | Timestamp |
+ Editor |
+ Field |
+ Diff |
+
+ {% set ns = namespace(display_cell=True) %}
+
+ {% for timestamp, group in diff %}
+ {% set ns.display_cell = True %}
+ {% for i in group %}
+
+ {% if ns.display_cell and i.timestamp == timestamp %}
+
+ {% set author = i.author %}
+ {% set timestamp_ = i.timestamp %}
+
+ {% else %}
+
+ {% set author = "" %}
+ {% set timestamp_ = "" %}
+
+ {% endif %}
+ | {{ timestamp_ }} |
+ {{ author }} |
+ {{ i.diff.field }} |
+ {{ i.diff.diff }} |
+ {% set ns.display_cell = False %}
+
+ {% endfor %}
+ {% endfor %}
+
+
+
+
+
+
+{% endif %}
+
+
+
+{%endblock%}
+
+{% block js %}
+
+{% endblock %}
diff --git a/wqflask/wqflask/views.py b/wqflask/wqflask/views.py
index e1f6dd71..741861e6 100644
--- a/wqflask/wqflask/views.py
+++ b/wqflask/wqflask/views.py
@@ -498,13 +498,40 @@ def edit_probeset(dataset_name):
table="ProbeSet",
columns=list(probeset_mapping.values()),
where=Probeset(name=dataset_name))
+ json_data = fetchall(
+ conn,
+ "metadata_audit",
+ where=MetadataAudit(dataset_id=probeset_.id_))
+ Edit = namedtuple("Edit", ["field", "old", "new", "diff"])
+ Diff = namedtuple("Diff", ["author", "diff", "timestamp"])
+ diff_data = []
+ for data in json_data:
+ json_ = json.loads(data.json_data)
+ timestamp = json_.get("timestamp")
+ author = json_.get("author")
+ for key, value in json_.items():
+ if isinstance(value, dict):
+ for field, data_ in value.items():
+ diff_data.append(
+ Diff(author=author,
+ diff=Edit(field,
+ data_.get("old"),
+ data_.get("new"),
+ "\n".join(difflib.ndiff(
+ [data_.get("old")],
+ [data_.get("new")]))),
+ timestamp=timestamp))
+ diff_data_ = None
+ if len(diff_data) > 0:
+ diff_data_ = groupby(diff_data, lambda x: x.timestamp)
return render_template(
"edit_probeset.html",
- probeset=probeset_
- )
+ diff=diff_data_,
+ probeset=probeset_)
@app.route("/trait/update", methods=["POST"])
+@admin_login_required
def update_phenotype():
conn = MySQLdb.Connect(db=current_app.config.get("DB_NAME"),
user=current_app.config.get("DB_USER"),
--
cgit 1.4.1