aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrederick Muriuki Muriithi2023-10-11 10:37:34 +0300
committerFrederick Muriuki Muriithi2023-10-11 10:38:55 +0300
commit9e6bb057c08d5216cb51f86b4acddca2ce7e0b11 (patch)
treeb52baf70c6be4cb77f8ec9f37227c1b6c51b2da9
parent4ed863827ee31ed638be9b404555c4185d9b44a1 (diff)
downloadgenenetwork3-9e6bb057c08d5216cb51f86b4acddca2ce7e0b11.tar.gz
CaseAttribute: Load diff from file.
-rw-r--r--gn3/case_attributes.py25
1 files changed, 25 insertions, 0 deletions
diff --git a/gn3/case_attributes.py b/gn3/case_attributes.py
index f2419de..68afae4 100644
--- a/gn3/case_attributes.py
+++ b/gn3/case_attributes.py
@@ -2,6 +2,7 @@
import os
import csv
import json
+import uuid
import requests
import tempfile
from enum import Enum, auto
@@ -269,6 +270,30 @@ def __save_diff__(conn: Connection, diff_data: dict, status: EditStatus) -> int:
"ts": diff_data["created"].isoformat()
})
return diff_data.get("db_id") or cursor.lastrowid
+
+def __load_diff__(diff_filename):
+ """Load the diff."""
+ {
+ "inbredset_id": inbredset_id,
+ "user_id": str(user.user_id),
+ "fieldnames": fieldnames,
+ "diff": __compute_diff__(
+ fieldnames,
+ __process_orig_data__(
+ fieldnames,
+ __case_attribute_values_by_inbred_set__(conn, inbredset_id),
+ __inbredset_strains__(conn, inbredset_id)),
+ __process_edit_data__(fieldnames, request.json["edit-data"]))
+ }
+ with open(diff_filename, encoding="utf8") as diff_file:
+ the_diff = json.loads(diff_file.read())
+ return {
+ **the_diff,
+ "db_id": int(the_diff["db_id"]),
+ "inbredset_id": int(the_diff["inbredset_id"]),
+ "user_id": uuid.UUID(the_diff["user_id"])
+ }
+
def __apply_diff__(
conn: Connection, inbredset_id: int, user: User, diff_filename) -> None:
"""