diff options
Diffstat (limited to 'gn3/db/sample_data.py')
-rw-r--r-- | gn3/db/sample_data.py | 27 |
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 |