diff --git a/src/submissions/backend/db/models/kits.py b/src/submissions/backend/db/models/kits.py index f104670..6f0b572 100644 --- a/src/submissions/backend/db/models/kits.py +++ b/src/submissions/backend/db/models/kits.py @@ -577,7 +577,7 @@ class SubmissionType(Base): info_map = Column(JSON) #: Where basic information is found in the excel workbook corresponding to this type. instances = relationship("BasicSubmission", backref="submission_type") # regex = Column(String(512)) - template_file = Column(BLOB) + # template_file = Column(BLOB) submissiontype_kit_associations = relationship( "SubmissionTypeKitTypeAssociation", diff --git a/src/submissions/backend/db/models/submissions.py b/src/submissions/backend/db/models/submissions.py index 4417416..7920f63 100644 --- a/src/submissions/backend/db/models/submissions.py +++ b/src/submissions/backend/db/models/submissions.py @@ -7,7 +7,7 @@ import math from pprint import pformat from . import Reagent, SubmissionType, KitType, Organization from sqlalchemy import Column, String, TIMESTAMP, INTEGER, ForeignKey, Table, JSON, FLOAT, case -from sqlalchemy.orm import relationship, validates, Query +from sqlalchemy.orm import relationship, validates, Query, declared_attr import logging import json from json.decoder import JSONDecodeError @@ -42,7 +42,9 @@ class BasicSubmission(Base): """ Concrete of basic submission which polymorphs into BacterialCulture and Wastewater """ - + # @declared_attr + # def __tablename__(cls): + # return cls.__name__.lower() __tablename__ = "_submissions" __table_args__ = {'extend_existing': True} @@ -601,6 +603,7 @@ class BacterialCulture(BasicSubmission): """ derivative submission type from BasicSubmission """ + # id = Column(INTEGER, ForeignKey('basicsubmission.id'), primary_key=True) controls = relationship("Control", back_populates="submission", uselist=True) #: A control sample added to submission __mapper_args__ = {"polymorphic_identity": "Bacterial Culture", "polymorphic_load": "inline"} @@ -714,6 +717,7 @@ class Wastewater(BasicSubmission): """ derivative submission type from BasicSubmission """ + # id = Column(INTEGER, ForeignKey('basicsubmission.id'), primary_key=True) ext_technician = Column(String(64)) pcr_technician = Column(String(64)) __mapper_args__ = {"polymorphic_identity": "Wastewater", "polymorphic_load": "inline"} @@ -840,6 +844,7 @@ class WastewaterArtic(BasicSubmission): """ derivative submission type for artic wastewater """ + # id = Column(INTEGER, ForeignKey('basicsubmission.id'), primary_key=True) __mapper_args__ = {"polymorphic_identity": "Wastewater Artic", "polymorphic_load": "inline"} artic_technician = Column(String(64)) @@ -924,10 +929,10 @@ class WastewaterArtic(BasicSubmission): source_row = lookup_ssa.row source_column = lookup_ssa.column except AttributeError: - plate = "Error" - source_row = 0 - source_column = 0 - # continue + # plate = "Error" + # source_row = 0 + # source_column = 0 + continue samples.append(dict( sample=sample.submitter_id, destination_column=destination_column, @@ -955,6 +960,9 @@ class BasicSample(Base): Base of basic sample which polymorphs into BCSample and WWSample """ + # @declared_attr + # def __tablename__(cls): + # return cls.__name__.lower() __tablename__ = "_samples" __table_args__ = {'extend_existing': True} @@ -1147,6 +1155,7 @@ class WastewaterSample(BasicSample): """ Derivative wastewater sample """ + # id = Column(INTEGER, ForeignKey('basicsample.id'), primary_key=True) ww_processing_num = Column(String(64)) #: wastewater processing number ww_full_sample_id = Column(String(64)) rsl_number = Column(String(64)) #: rsl plate identification number @@ -1212,6 +1221,7 @@ class BacterialCultureSample(BasicSample): """ base of bacterial culture sample """ + # id = Column(INTEGER, ForeignKey('basicsample.id'), primary_key=True) organism = Column(String(64)) #: bacterial specimen concentration = Column(String(16)) #: sample concentration __mapper_args__ = {"polymorphic_identity": "Bacterial Culture Sample", "polymorphic_load": "inline"} @@ -1234,6 +1244,10 @@ class SubmissionSampleAssociation(Base): table containing submission/sample associations DOC: https://docs.sqlalchemy.org/en/14/orm/extensions/associationproxy.html """ + + # @declared_attr + # def __tablename__(cls): + # return cls.__name__.lower() __tablename__ = "_submission_sample" __table_args__ = {'extend_existing': True} @@ -1393,6 +1407,9 @@ class WastewaterAssociation(SubmissionSampleAssociation): """ Derivative custom Wastewater/Submission Association... fancy. """ + # submission_id = Column(INTEGER, ForeignKey("submissionsampleassociation.submission_id"), primary_key=True) + # row = Column(INTEGER, ForeignKey("submissionsampleassociation.row"), nullable=False) + # column = Column(INTEGER, ForeignKey("submissionsampleassociation.column"), primary_key=True) ct_n1 = Column(FLOAT(2)) #: AKA ct for N1 ct_n2 = Column(FLOAT(2)) #: AKA ct for N2 n1_status = Column(String(32)) #: positive or negative for N1 diff --git a/src/submissions/frontend/widgets/submission_table.py b/src/submissions/frontend/widgets/submission_table.py index d4e11a8..1acccf4 100644 --- a/src/submissions/frontend/widgets/submission_table.py +++ b/src/submissions/frontend/widgets/submission_table.py @@ -18,7 +18,7 @@ from PyQt6.QtGui import QAction, QCursor, QPixmap, QPainter from backend.db.functions import submissions_to_df from backend.db.models import BasicSubmission from backend.excel import make_hitpicks, make_report_html, make_report_xlsx -from tools import check_if_app, Settings, Report, Result +from tools import check_if_app, Report, Result from tools import jinja_template_loading from xhtml2pdf import pisa from pathlib import Path @@ -159,19 +159,19 @@ class SubmissionsSheet(QTableView): self.menu = QMenu(self) renameAction = QAction('Delete', self) detailsAction = QAction('Details', self) - barcodeAction = QAction("Print Barcode", self) + # barcodeAction = QAction("Print Barcode", self) commentAction = QAction("Add Comment", self) - hitpickAction = QAction("Hitpicks", self) + # hitpickAction = QAction("Hitpicks", self) renameAction.triggered.connect(lambda: self.delete_item(event)) detailsAction.triggered.connect(lambda: self.show_details()) - barcodeAction.triggered.connect(lambda: self.create_barcode()) + # barcodeAction.triggered.connect(lambda: self.create_barcode()) commentAction.triggered.connect(lambda: self.add_comment()) - hitpickAction.triggered.connect(lambda: self.hit_pick()) + # hitpickAction.triggered.connect(lambda: self.hit_pick()) self.menu.addAction(detailsAction) self.menu.addAction(renameAction) - self.menu.addAction(barcodeAction) + # self.menu.addAction(barcodeAction) self.menu.addAction(commentAction) - self.menu.addAction(hitpickAction) + # self.menu.addAction(hitpickAction) # add other required actions self.menu.popup(QCursor.pos()) @@ -456,7 +456,7 @@ class SubmissionDetails(QDialog): super().__init__(parent) # self.ctx = ctx try: - self.app = parent.parent().parent().parent().parent().parent().parent + self.app = parent.parent().parent().parent().parent().parent().parent() except AttributeError: self.app = None self.setWindowTitle("Submission Details") @@ -643,7 +643,7 @@ class SubmissionComment(QDialog): try: # 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: + except (AttributeError, TypeError) as e: logger.error(f"Hit error {e} creating comment") sub.comment = full_comment # logger.debug(sub.comment) diff --git a/src/submissions/frontend/widgets/submission_widget.py b/src/submissions/frontend/widgets/submission_widget.py index 8928143..5159684 100644 --- a/src/submissions/frontend/widgets/submission_widget.py +++ b/src/submissions/frontend/widgets/submission_widget.py @@ -32,7 +32,7 @@ class SubmissionFormContainer(QWidget): def __init__(self, parent: QWidget) -> None: logger.debug(f"Setting form widget...") super().__init__(parent) - self.app = self.parent().parent#().parent().parent().parent().parent().parent + self.app = self.parent().parent() self.report = Report() # self.parent = parent self.setAcceptDrops(True)