Updating AddEdit to hopefully include ReagentAdd

This commit is contained in:
lwark
2025-01-06 09:15:43 -06:00
parent b55258f677
commit 8662bbdc2f
9 changed files with 67 additions and 12 deletions

View File

@@ -608,7 +608,7 @@ class Reagent(BaseClass, LogMixin):
if isinstance(value, str):
field_value = datetime.strptime(value, "%Y-%m-%d")
elif isinstance(value, date):
field_value = datetime.combine(value, datetime.min.time())
field_value = datetime.combine(value, datetime.max.time())
else:
field_value = value
field_value.replace(tzinfo=timezone)

View File

@@ -1502,6 +1502,25 @@ class Wastewater(BasicSubmission):
logger.error(f"Error handling couldn't get csv due to: {e}")
return input_dict
@classmethod
def parse_samples(cls, input_dict: dict) -> dict:
"""
Update sample dictionary with type specific information. Extends parent
Args:
input_dict (dict): Input sample dictionary
Returns:
dict: Updated sample dictionary
"""
input_dict = super().parse_samples(input_dict=input_dict)
# NOTE: Had to put in this section due to ENs not having rsl_number and therefore not getting PCR results.
check = check_key_or_attr("rsl_number", input_dict)
if not check:
input_dict['rsl_number'] = input_dict['submitter_id']
# logger.debug(pformat(input_dict, indent=4))
return input_dict
@classmethod
def parse_pcr(cls, xl: Workbook, rsl_plate_num: str) -> Generator[dict, None, None]:
"""
@@ -1633,6 +1652,7 @@ class Wastewater(BasicSubmission):
self.save(original=False)
for sample in self.samples:
try:
# NOTE: Fix for ENs which have no rsl_number...
sample_dict = next(item for item in pcr_samples if item['sample'] == sample.rsl_number)
except StopIteration:
continue
@@ -2539,7 +2559,7 @@ class WastewaterSample(BasicSample):
Custom sample parser. Extends parent
Args:
input_dict (dict): Basic parser results.
input_dict (dict): Basic parser results for this sample.
Returns:
dict: Updated parser results.
@@ -2554,6 +2574,8 @@ class WastewaterSample(BasicSample):
output_dict['rsl_number'] = "RSL-WW-" + output_dict['ww_processing_num']
if output_dict['ww_full_sample_id'] is not None and output_dict["submitter_id"] in disallowed:
output_dict["submitter_id"] = output_dict['ww_full_sample_id']
check = check_key_or_attr("rsl_number", output_dict, check_none=True)
# logger.debug(pformat(output_dict, indent=4))
return output_dict
@classmethod

View File

@@ -144,7 +144,9 @@ class PydReagent(BaseModel):
case "expiry":
if isinstance(value, str):
value = date(year=1970, month=1, day=1)
value = datetime.combine(value, datetime.min.time())
# NOTE: if min time is used, any reagent set to expire today (Bac postive control, eg) will have expired at midnight and therefore be flagged.
# NOTE: Make expiry at date given, plus now time + 1 hour
value = datetime.combine(value, datetime.max.time())
reagent.expiry = value.replace(tzinfo=timezone)
case _:
try:
@@ -826,7 +828,7 @@ class PydSubmission(BaseModel, extra='allow'):
case item if item in instance.timestamps():
logger.warning(f"Incoming timestamp key: {item}, with value: {value}")
if isinstance(value, date):
value = datetime.combine(value, datetime.min.time())
value = datetime.combine(value, datetime.max.time())
value = value.replace(tzinfo=timezone)
elif isinstance(value, str):
value: datetime = datetime.strptime(value, "%Y-%m-%d")
@@ -961,7 +963,7 @@ class PydSubmission(BaseModel, extra='allow'):
if reagent not in exempt:
role_expiry = ReagentRole.query(name=reagent.role).eol_ext
try:
dt = datetime.combine(reagent.expiry, datetime.min.time())
dt = datetime.combine(reagent.expiry, datetime.max.time())
except TypeError:
continue
if datetime.now() > dt + role_expiry: