aboutsummaryrefslogtreecommitdiff
path: root/gn3/db/sample_data.py
diff options
context:
space:
mode:
Diffstat (limited to 'gn3/db/sample_data.py')
-rw-r--r--gn3/db/sample_data.py27
1 files changed, 27 insertions, 0 deletions
diff --git a/gn3/db/sample_data.py b/gn3/db/sample_data.py
index 73fbd95..d7ea9d3 100644
--- a/gn3/db/sample_data.py
+++ b/gn3/db/sample_data.py
@@ -1,6 +1,7 @@
"""Module containing functions that work with sample data"""
from typing import Any, Tuple, Dict, Callable
+import collections
import MySQLdb
from gn3.csvcmp import extract_strain_name
@@ -394,3 +395,29 @@ def insert_sample_data(
except Exception as _e:
conn.rollback()
raise MySQLdb.Error(_e) from _e
+
+
+def get_case_attributes(conn) -> dict:
+ """Get all the case attributes as a dictionary from the database. Should there
+ exist more than one case attribute with the same name, put the id in
+ brackets."""
+ results = {}
+ with conn.cursor() as cursor:
+ cursor.execute("SELECT Id, Name, Description FROM CaseAttribute")
+ _r = cursor.fetchall()
+ _dups = [
+ item
+ for item, count in collections.Counter(
+ [name for _, name, _ in _r]
+ ).items()
+ if count > 1
+ ]
+ for _id, _name, _desc in _r:
+ _name = _name.strip()
+ _desc = _desc if _desc else ""
+ if _name in _dups:
+ results[f"{_name} ({_id})"] = _desc
+ else:
+ results[f"{_name}"] = _desc
+
+ return results