about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--wqflask/wqflask/metadata_edits.py26
1 files changed, 21 insertions, 5 deletions
diff --git a/wqflask/wqflask/metadata_edits.py b/wqflask/wqflask/metadata_edits.py
index cd5b7893..5a5ee4ac 100644
--- a/wqflask/wqflask/metadata_edits.py
+++ b/wqflask/wqflask/metadata_edits.py
@@ -339,12 +339,28 @@ def update_phenotype(dataset_id: str, name: str):
     }
     updated_publications = ""
     with database_connection() as conn:
-        updated_publications = update(
-            conn,
-            "Publication",
-            data=Publication(**publication_),
-            where=Publication(id_=data_.get("old_id_")),
+
+        existing_publication = fetchone(
+            conn=conn,
+            table="Publication",
+            where=Publication(pubmed_id=data_.get("pubmed-id"))
         )
+
+        if existing_publication:
+            update(
+                conn,
+                "PublishXRef",
+                data=PublishXRef(publication_id=existing_publication.id_),
+                where=PublishXRef(id_=name, inbred_set_id=dataset_id)
+            )
+        else:
+            updated_publications = update(
+                conn,
+                "Publication",
+                data=Publication(**publication_),
+                where=Publication(id_=data_.get("old_id_")),
+            )
+
     if updated_publications:
         diff_data.update(
             {