about summary refs log tree commit diff
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:
     """