|
|
|
|
@@ -112,7 +112,15 @@ class BasicSubmission(BaseClass):
|
|
|
|
|
# NOTE: Allows for subclassing into ex. BacterialCulture, Wastewater, etc.
|
|
|
|
|
__mapper_args__ = {
|
|
|
|
|
"polymorphic_identity": "Basic Submission",
|
|
|
|
|
"polymorphic_on": submission_type_name,
|
|
|
|
|
# "polymorphic_on": submission_type_name,
|
|
|
|
|
"polymorphic_on": case(
|
|
|
|
|
|
|
|
|
|
(submission_type_name == "Wastewater", "Wastewater"),
|
|
|
|
|
(submission_type_name == "Wastewater Artic", "Wastewater Artic"),
|
|
|
|
|
(submission_type_name == "Bacterial Culture", "Bacterial Culture"),
|
|
|
|
|
|
|
|
|
|
else_="Basic Submission"
|
|
|
|
|
),
|
|
|
|
|
"with_polymorphic": "*",
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -160,7 +168,7 @@ class BasicSubmission(BaseClass):
|
|
|
|
|
'extraction_info', 'comment', 'barcode',
|
|
|
|
|
'platemap', 'export_map', 'equipment', 'tips'],
|
|
|
|
|
# NOTE: Fields not placed in ui form
|
|
|
|
|
form_ignore=['reagents', 'ctx', 'id', 'cost', 'extraction_info', 'signed_by', 'comment'] + recover,
|
|
|
|
|
form_ignore=['reagents', 'ctx', 'id', 'cost', 'extraction_info', 'signed_by', 'comment', 'namer', 'submission_object', "tips"] + recover,
|
|
|
|
|
# NOTE: Fields not placed in ui form to be moved to pydantic
|
|
|
|
|
form_recover=recover
|
|
|
|
|
)
|
|
|
|
|
@@ -195,7 +203,13 @@ class BasicSubmission(BaseClass):
|
|
|
|
|
case _:
|
|
|
|
|
output[k] = v
|
|
|
|
|
if len(args) == 1:
|
|
|
|
|
return output[args[0]]
|
|
|
|
|
try:
|
|
|
|
|
return output[args[0]]
|
|
|
|
|
except KeyError:
|
|
|
|
|
if "pytest" in sys.modules and args[0] == "abbreviation":
|
|
|
|
|
return "BS"
|
|
|
|
|
else:
|
|
|
|
|
raise KeyError("args[0]")
|
|
|
|
|
return output
|
|
|
|
|
|
|
|
|
|
@classmethod
|
|
|
|
|
@@ -640,7 +654,8 @@ class BasicSubmission(BaseClass):
|
|
|
|
|
try:
|
|
|
|
|
return cls.get_submission_type(submission_type).defaults['regex']
|
|
|
|
|
except AttributeError as e:
|
|
|
|
|
raise AttributeError(f"Couldn't get submission type for {cls.__mapper_args__['polymorphic_identity']}")
|
|
|
|
|
logger.error(f"Couldn't get submission type for {cls.__mapper_args__['polymorphic_identity']}")
|
|
|
|
|
return ""
|
|
|
|
|
|
|
|
|
|
# Polymorphic functions
|
|
|
|
|
|
|
|
|
|
@@ -653,7 +668,15 @@ class BasicSubmission(BaseClass):
|
|
|
|
|
re.Pattern: Regular expression pattern to discriminate between submission types.
|
|
|
|
|
"""
|
|
|
|
|
# rstring = rf'{"|".join([item.get_regex() for item in cls.__subclasses__()])}'
|
|
|
|
|
rstring = rf'{"|".join([item.defaults["regex"] for item in SubmissionType.query()])}'
|
|
|
|
|
# rstring = rf'{"|".join([item.defaults["regex"] for item in SubmissionType.query()])}'
|
|
|
|
|
res = []
|
|
|
|
|
for item in SubmissionType.query():
|
|
|
|
|
try:
|
|
|
|
|
res.append(item.defaults['regex'])
|
|
|
|
|
except TypeError:
|
|
|
|
|
logger.error(f"Problem: {item.__dict__}")
|
|
|
|
|
continue
|
|
|
|
|
rstring = rf'{"|".join(res)}'
|
|
|
|
|
regex = re.compile(rstring, flags=re.IGNORECASE | re.VERBOSE)
|
|
|
|
|
return regex
|
|
|
|
|
|
|
|
|
|
@@ -797,11 +820,14 @@ class BasicSubmission(BaseClass):
|
|
|
|
|
# logger.debug(f"instr coming into {cls}: {instr}")
|
|
|
|
|
logger.debug(f"data coming into {cls}: {data}")
|
|
|
|
|
# defaults = cls.get_default_info("abbreviation", "submission_type")
|
|
|
|
|
if "submission_type" not in data.keys():
|
|
|
|
|
data['submission_type'] = cls.__mapper_args__['polymorphic_identity']
|
|
|
|
|
data['abbreviation'] = cls.get_default_info("abbreviation", submission_type=data['submission_type'])
|
|
|
|
|
# logger.debug(f"Default info: {defaults}")
|
|
|
|
|
# data['abbreviation'] = defaults['abbreviation']
|
|
|
|
|
# if 'submission_type' not in data.keys() or data['submission_type'] in [None, ""]:
|
|
|
|
|
# data['submission_type'] = defaults['submission_type']
|
|
|
|
|
|
|
|
|
|
if instr in [None, ""]:
|
|
|
|
|
# logger.debug("Sending to RSLNamer to make new plate name.")
|
|
|
|
|
outstr = RSLNamer.construct_new_plate_name(data=data)
|
|
|
|
|
@@ -1494,6 +1520,7 @@ class Wastewater(BasicSubmission):
|
|
|
|
|
"""
|
|
|
|
|
Extends parent
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
# NOTE: Deal with PCR file.
|
|
|
|
|
instr = re.sub(r"PCR(-|_)", "", instr)
|
|
|
|
|
|