Moments before disaster.

This commit is contained in:
Landon Wark
2023-11-17 10:59:01 -06:00
parent 74957ee318
commit 283e77fee5
4 changed files with 34 additions and 17 deletions

View File

@@ -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",

View File

@@ -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

View File

@@ -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)

View File

@@ -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)