From 6e865f15511afa88a4ef1dc977104b620386ab40 Mon Sep 17 00:00:00 2001 From: Landon Wark Date: Thu, 16 Nov 2023 09:06:19 -0600 Subject: [PATCH] Bugfix for commenting submissions. --- .../submissions.frontend.custom_widgets.rst | 37 --------- source/submissions.frontend.rst | 21 +---- source/submissions.frontend.widgets.rst | 77 +++++++++++++++++++ src/submissions/backend/db/models/controls.py | 1 + .../backend/db/models/submissions.py | 17 ++-- .../frontend/widgets/submission_table.py | 32 ++++---- .../frontend/widgets/submission_widget.py | 2 +- 7 files changed, 110 insertions(+), 77 deletions(-) delete mode 100644 source/submissions.frontend.custom_widgets.rst create mode 100644 source/submissions.frontend.widgets.rst diff --git a/source/submissions.frontend.custom_widgets.rst b/source/submissions.frontend.custom_widgets.rst deleted file mode 100644 index 6d5a3da..0000000 --- a/source/submissions.frontend.custom_widgets.rst +++ /dev/null @@ -1,37 +0,0 @@ -submissions.frontend.custom\_widgets package -============================================ - -Submodules ----------- - -submissions.frontend.custom\_widgets.misc module ------------------------------------------------- - -.. automodule:: submissions.frontend.custom_widgets.misc - :members: - :undoc-members: - :show-inheritance: - -submissions.frontend.custom\_widgets.pop\_ups module ----------------------------------------------------- - -.. automodule:: submissions.frontend.custom_widgets.pop_ups - :members: - :undoc-members: - :show-inheritance: - -submissions.frontend.custom\_widgets.sub\_details module --------------------------------------------------------- - -.. automodule:: submissions.frontend.custom_widgets.sub_details - :members: - :undoc-members: - :show-inheritance: - -Module contents ---------------- - -.. automodule:: submissions.frontend.custom_widgets - :members: - :undoc-members: - :show-inheritance: diff --git a/source/submissions.frontend.rst b/source/submissions.frontend.rst index 02c49e3..2a034e4 100644 --- a/source/submissions.frontend.rst +++ b/source/submissions.frontend.rst @@ -7,27 +7,8 @@ Subpackages .. toctree:: :maxdepth: 4 - submissions.frontend.custom_widgets submissions.frontend.visualizations - -Submodules ----------- - -submissions.frontend.all\_window\_functions module --------------------------------------------------- - -.. automodule:: submissions.frontend.all_window_functions - :members: - :undoc-members: - :show-inheritance: - -submissions.frontend.main\_window\_functions module ---------------------------------------------------- - -.. automodule:: submissions.frontend.main_window_functions - :members: - :undoc-members: - :show-inheritance: + submissions.frontend.widgets Module contents --------------- diff --git a/source/submissions.frontend.widgets.rst b/source/submissions.frontend.widgets.rst new file mode 100644 index 0000000..9c256d1 --- /dev/null +++ b/source/submissions.frontend.widgets.rst @@ -0,0 +1,77 @@ +submissions.frontend.widgets package +==================================== + +Submodules +---------- + +submissions.frontend.widgets.app module +--------------------------------------- + +.. automodule:: submissions.frontend.widgets.app + :members: + :undoc-members: + :show-inheritance: + +submissions.frontend.widgets.controls\_chart module +--------------------------------------------------- + +.. automodule:: submissions.frontend.widgets.controls_chart + :members: + :undoc-members: + :show-inheritance: + +submissions.frontend.widgets.functions module +--------------------------------------------- + +.. automodule:: submissions.frontend.widgets.functions + :members: + :undoc-members: + :show-inheritance: + +submissions.frontend.widgets.kit\_creator module +------------------------------------------------ + +.. automodule:: submissions.frontend.widgets.kit_creator + :members: + :undoc-members: + :show-inheritance: + +submissions.frontend.widgets.misc module +---------------------------------------- + +.. automodule:: submissions.frontend.widgets.misc + :members: + :undoc-members: + :show-inheritance: + +submissions.frontend.widgets.pop\_ups module +-------------------------------------------- + +.. automodule:: submissions.frontend.widgets.pop_ups + :members: + :undoc-members: + :show-inheritance: + +submissions.frontend.widgets.submission\_table module +----------------------------------------------------- + +.. automodule:: submissions.frontend.widgets.submission_table + :members: + :undoc-members: + :show-inheritance: + +submissions.frontend.widgets.submission\_widget module +------------------------------------------------------ + +.. automodule:: submissions.frontend.widgets.submission_widget + :members: + :undoc-members: + :show-inheritance: + +Module contents +--------------- + +.. automodule:: submissions.frontend.widgets + :members: + :undoc-members: + :show-inheritance: diff --git a/src/submissions/backend/db/models/controls.py b/src/submissions/backend/db/models/controls.py index a92568e..897d1a4 100644 --- a/src/submissions/backend/db/models/controls.py +++ b/src/submissions/backend/db/models/controls.py @@ -20,6 +20,7 @@ class ControlType(Base): """ __tablename__ = '_control_types' + id = Column(INTEGER, primary_key=True) #: primary key name = Column(String(255), unique=True) #: controltype name (e.g. MCS) targets = Column(JSON) #: organisms checked for diff --git a/src/submissions/backend/db/models/submissions.py b/src/submissions/backend/db/models/submissions.py index 75be538..42a4f6d 100644 --- a/src/submissions/backend/db/models/submissions.py +++ b/src/submissions/backend/db/models/submissions.py @@ -360,12 +360,16 @@ class BasicSubmission(Base): logger.debug(f"Hello from {cls.__mapper_args__['polymorphic_identity']} PCR parser!") return [] - def save(self): - self.uploaded_by = getuser() + def save(self, original:bool=True): + if original: + self.uploaded_by = getuser() self.metadata.session.add(self) self.metadata.session.commit() return None + def update(self): + pass + def delete(self): backup = self.to_dict() try: @@ -408,7 +412,7 @@ class BasicSubmission(Base): Returns: models.BasicSubmission | List[models.BasicSubmission]: Submission(s) of interest """ - logger.debug(kwargs) + logger.debug(f"kwargs coming into query: {kwargs}") # NOTE: if you go back to using 'model' change the appropriate cls to model in the query filters if submission_type == None: model = cls.find_subclasses(attrs=kwargs) @@ -651,7 +655,7 @@ class BacterialCulture(BasicSubmission): outstr = super().enforce_name(instr=instr, data=data) def construct(data:dict|None=None) -> str: """ - DEPRECIATED due to slowness. Search for the largest rsl number and increment by 1 + Create default plate name. Returns: str: new RSL number @@ -912,9 +916,10 @@ class WastewaterArtic(BasicSubmission): source_row = lookup_ssa.row source_column = lookup_ssa.column except AttributeError: - plate = "" + plate = "Error" source_row = 0 source_column = 0 + # continue samples.append(dict( sample=sample.submitter_id, destination_column=destination_column, @@ -931,7 +936,7 @@ class WastewaterArtic(BasicSubmission): df = pd.DataFrame.from_records(samples).fillna(value="") df.source_row = df.source_row.astype(int) df.source_column = df.source_column.astype(int) - df.sort_values(by=['destination_column', 'destination_row'], inplace=True) + df.sort_values(by=['plate_number', 'source_column', 'source_row'], inplace=True) input_dict['csv'] = df return input_dict diff --git a/src/submissions/frontend/widgets/submission_table.py b/src/submissions/frontend/widgets/submission_table.py index 8aa169c..d4e11a8 100644 --- a/src/submissions/frontend/widgets/submission_table.py +++ b/src/submissions/frontend/widgets/submission_table.py @@ -145,7 +145,7 @@ class SubmissionsSheet(QTableView): index = (self.selectionModel().currentIndex()) value = index.sibling(index.row(),1).data() logger.debug(f"Selected value: {value}") - dlg = SubmissionComment(rsl=value) + dlg = SubmissionComment(parent=self, rsl=value) if dlg.exec(): dlg.add_comment() @@ -455,8 +455,10 @@ class SubmissionDetails(QDialog): super().__init__(parent) # self.ctx = ctx - self.app = parent.parent().parent().parent().parent().parent().parent - print(f"App: {self.app}") + try: + self.app = parent.parent().parent().parent().parent().parent().parent + except AttributeError: + self.app = None self.setWindowTitle("Submission Details") # create scrollable interior interior = QScrollArea() @@ -605,10 +607,12 @@ class SubmissionComment(QDialog): """ a window for adding comment text to a submission """ - def __init__(self, rsl:str) -> None: + def __init__(self, parent, rsl:str) -> None: - super().__init__() + super().__init__(parent) # self.ctx = ctx + self.app = parent.parent().parent().parent().parent().parent().parent + print(f"App: {self.app}") self.rsl = rsl self.setWindowTitle(f"{self.rsl} Submission Comment") # create text field @@ -632,16 +636,18 @@ class SubmissionComment(QDialog): commenter = getuser() comment = self.txt_editor.toPlainText() dt = datetime.strftime(datetime.now(), "%Y-%m-%d %H:%M:%S") - full_comment = {"name":commenter, "time": dt, "text": comment} + + full_comment = [{"name":commenter, "time": dt, "text": comment}] logger.debug(f"Full comment: {full_comment}") - # sub = lookup_submission_by_rsl_num(ctx = self.ctx, rsl_num=self.rsl) - # sub = lookup_submissions(ctx = self.ctx, rsl_number=self.rsl) sub = BasicSubmission.query(rsl_number=self.rsl) try: - sub.comment.append(full_comment) - except AttributeError: - sub.comment = [full_comment] - logger.debug(sub.__dict__) - sub.save() + # For some reason .append results in new comment being ignores, so have to concatenate lists. + sub.comment = sub.comment + full_comment + except AttributeError as e: + logger.error(f"Hit error {e} creating comment") + sub.comment = full_comment + # logger.debug(sub.comment) + sub.save(original=False) + # logger.debug(f"Save result: {result}") \ No newline at end of file diff --git a/src/submissions/frontend/widgets/submission_widget.py b/src/submissions/frontend/widgets/submission_widget.py index ec29d71..34ae1e6 100644 --- a/src/submissions/frontend/widgets/submission_widget.py +++ b/src/submissions/frontend/widgets/submission_widget.py @@ -400,7 +400,7 @@ class SubmissionFormContainer(QWidget): # obj.ctx.database_session.add(sub) logger.debug(f"Existing {type(sub.pcr_info)}: {sub.pcr_info}") logger.debug(f"Inserting {type(json.dumps(parser.pcr))}: {json.dumps(parser.pcr)}") - sub.save() + sub.save(original=False) logger.debug(f"Got {len(parser.samples)} samples to update!") logger.debug(f"Parser samples: {parser.samples}") for sample in sub.samples: