- [x] Create platemap image from html for export to pdf. - [x] Move plate map maker to submission. - [x] Finish Equipment Parser (add in regex to id asset_number) - [ ] Complete info_map in the SubmissionTypeCreator widget. - [x] Update Artic and add in equipment listings... *sigh*. - [x] Fix WastewaterAssociations not in Session error. - Done... I think? - [x] Fix submitted date always being today. - this is an issue with the way client is filling in form with =TODAY() - [x] SubmissionReagentAssociation.query - [x] Move as much from db.functions to objects as possible. - [x] Clean up DB objects after failed test fix. - [x] Fix tests. - [x] Fix pydant.PydSample.handle_duplicate_samples? - [x] See if the number of queries in BasicSubmission functions (and others) can be trimmed down. - [x] Document code - [x] Create a result object to facilitate returning function results. - [x] Refactor main_window_functions into as many objects (forms, etc.) as possible to clean it up. - [x] Integrate 'Construct First Strand' into the Artic import. - [x] Clear out any unnecessary ctx passes now that queries are improved. - [x] Make a 'query or create' method in all db objects to go with new query. - Due to necessity of user input this has only been implemented for BasicSubmission, BasicSample and SubmissionSampleAssociation. - [x] Ensure Bacterial plates end up with RSL_YY_###_{submitterName}_{submitterPlateID}.xlsx format. - [x] Move lookup functions into class methods of db objects? - Not sure if will work for associations. - [x] Update artic submission type database entry to add more technicians. - [x] Rewrite tests... again. - [x] Have InfoItem change status self.missing to True if value changed. - [x] Make the kit verifier make more sense. - [x] Slim down the Import and Submit functions in main_window_functions. - [x] Create custom store methods for submission, reagent and sample. - [x] Make pydantic models for other things that use constructors. - [x] Move backend.db.functions.constructor functions into Pydantic models. - This will allow for better data validation. - Parser(client input) -> Pydantic(validation) -> Form(user input) -> Pydantic(validation) -> SQL - [x] Rebuild RSLNamer and fix circular imports - Should be used when coming in to parser and when leaving form. NO OTHER PLACES. - [x] Change 'check_is_power_user' to decorator. - [x] Drag and drop files into submission form area? - [x] Get info for controls into their sample hitpicks. - [x] Move submission-type specific parser functions into class methods in their respective models. - [x] Improve function results reporting. - Maybe make it a list until it gets to the reporter? - [x] Increase robustness of form parsers by adding custom procedures for each. - [x] Rerun Kit integrity if extraction kit changed in the form. - [x] Clean up db.functions. - [x] Make kits easier to add. - [x] Clean up & document code... again. - Including paring down the logging.debugs - Also including reducing number of functions in db.functions - [x] Fix Tests... again. - [x] Rebuild database - [x] Provide more generic names for reagenttypes in kits and move specific names to reagents. - ex. Instead of "omega_e-z_96_disruptor_plate_c_plus" in reagent types, have "omega_plate" and have "omega_e-z_96_disruptor_plate_c_plus" in reagent name. - Maybe rename to "ReagentRoles"? - If I'm doing this, since the forms have a different layout for each submission type I should rewrite the parser to use the locations given in database... Which I should do anyway - [x] Fix Wastewater/Artic double submission problem - [x] Fix tests. - [x] Reorganize wastewater artic parser. - [x] Streamline addition of new kits by moving as much into DB as possible. - [x] Large scale refactor (2023-07-24). - [x] Make plate details from html, same as export. - [x] Put in SN controls I guess. - [x] Code clean-up and refactor (2023-07). - [x] Migrate context settings to pydantic-settings model. - [x] Insert column into reagent type to indicate if reagent is required for kit. - Needed to keep interchangeable bead plates from being forced into forms. - [x] Migrate the parser.sub dictionary to pydantic models. - [x] Move type_decider to metadata based method rather than excel map. - [x] Solve bug for plate mapping when two samples of same name are in different rows. - Try importing "L:\Robotics Laboratory Support\Submissions\Wastewater\2023\2023-06-21\RSL-WW-20230621-1.xlsx" for example. - [x] Improve plate mapping by using layout in submission forms rather than PCR. - [x] Create a method for creation of hitpicking .csvs because of reasons that may or may not exist. - [x] Create a method for commenting submissions. - [x] Create barcode generator, because of reasons that may or may not exist. - [x] Move bulk of functions from frontend.__init__ to frontend.functions as __init__ is getting bloated.