Beginning prelim code cleanup.

This commit is contained in:
lwark
2025-03-07 10:36:27 -06:00
parent 919376c1ce
commit 942c46e8b2
3 changed files with 3 additions and 61 deletions

View File

@@ -8,7 +8,7 @@ from pydantic import BaseModel
from sqlalchemy import Column, INTEGER, String, JSON from sqlalchemy import Column, INTEGER, String, JSON
from sqlalchemy.orm import DeclarativeMeta, declarative_base, Query, Session, InstrumentedAttribute, ColumnProperty from sqlalchemy.orm import DeclarativeMeta, declarative_base, Query, Session, InstrumentedAttribute, ColumnProperty
from sqlalchemy.ext.declarative import declared_attr from sqlalchemy.ext.declarative import declared_attr
from sqlalchemy.exc import ArgumentError, InvalidRequestError from sqlalchemy.exc import ArgumentError
from typing import Any, List from typing import Any, List
from pathlib import Path from pathlib import Path
@@ -156,9 +156,6 @@ class BaseClass(Base):
Any: Subclass of this object Any: Subclass of this object
""" """
# if not name:
# logger.warning("You need to include a name of what you're looking for.")
# return cls
if " " in name: if " " in name:
search = name.title().replace(" ", "") search = name.title().replace(" ", "")
else: else:
@@ -343,7 +340,6 @@ class BaseClass(Base):
""" """
logger.debug(f"Incoming attributes: {attributes}") logger.debug(f"Incoming attributes: {attributes}")
for key, value in attributes.items(): for key, value in attributes.items():
# print(getattr(self.__class__, key).property)
if value.lower() == "none": if value.lower() == "none":
value = None value = None
logger.debug(f"Attempting to grab attribute: {key}") logger.debug(f"Attempting to grab attribute: {key}")
@@ -355,7 +351,6 @@ class BaseClass(Base):
else: else:
filter = class_attr.property filter = class_attr.property
match filter: match filter:
# match class_attr:
case ColumnProperty(): case ColumnProperty():
match class_attr.type: match class_attr.type:
case INTEGER(): case INTEGER():
@@ -397,8 +392,6 @@ class BaseClass(Base):
""" """
Custom dunder method to handle potential list relationship issues. Custom dunder method to handle potential list relationship issues.
""" """
# if key != "_sa_instance_state":
# logger.debug(f"Attempting to set {key} to {pformat(value)}")
try: try:
field_type = getattr(self.__class__, key) field_type = getattr(self.__class__, key)
except AttributeError: except AttributeError:

View File

@@ -1,7 +1,5 @@
from __future__ import annotations from __future__ import annotations
import logging import logging, sys
import sys
from pydantic import BaseModel, field_validator, Field from pydantic import BaseModel, field_validator, Field
from typing import List, ClassVar from typing import List, ClassVar
from backend.db.models import * from backend.db.models import *
@@ -37,7 +35,6 @@ class BaseOmni(BaseModel):
""" """
logger.debug(f"Incoming attributes: {attributes}") logger.debug(f"Incoming attributes: {attributes}")
for key, value in attributes.items(): for key, value in attributes.items():
# print(getattr(self.__class__, key).property)
if value.lower() == "none": if value.lower() == "none":
value = None value = None
logger.debug(f"Attempting to grab attribute: {key}") logger.debug(f"Attempting to grab attribute: {key}")
@@ -127,7 +124,6 @@ class BaseOmni(BaseModel):
if issubclass(value.__class__, self.__class__): if issubclass(value.__class__, self.__class__):
value = value.to_sql() value = value.to_sql()
value = [value] value = [value]
# value = list(set(value))
logger.debug(f"Final value for {key}: {value}") logger.debug(f"Final value for {key}: {value}")
return super().__setattr__(key, value) return super().__setattr__(key, value)
else: else:
@@ -243,7 +239,6 @@ class OmniSubmissionTypeKitTypeAssociation(BaseOmni):
mutable_cost_column: float = Field(default=0.0, description="property") mutable_cost_column: float = Field(default=0.0, description="property")
mutable_cost_sample: float = Field(default=0.0, description="property") mutable_cost_sample: float = Field(default=0.0, description="property")
constant_cost: float = Field(default=0.0, description="property") constant_cost: float = Field(default=0.0, description="property")
# processes: List[OmniProcess] | List[str] = Field(default=[], description="relationship", title="Process")
def __repr__(self): def __repr__(self):
if isinstance(self.submissiontype, str): if isinstance(self.submissiontype, str):
@@ -313,7 +308,6 @@ class OmniSubmissionTypeKitTypeAssociation(BaseOmni):
else: else:
kittype = KitType.query(name=self.kittype) kittype = KitType.query(name=self.kittype)
# logger.debug(f"Self kittype: {self.kittype}") # logger.debug(f"Self kittype: {self.kittype}")
# kittype = KitType.query(name=self.kittype)
logger.debug(f"Query or create with {kittype}, {submissiontype}") logger.debug(f"Query or create with {kittype}, {submissiontype}")
instance, is_new = self.class_object.query_or_create(kittype=kittype, submissiontype=submissiontype) instance, is_new = self.class_object.query_or_create(kittype=kittype, submissiontype=submissiontype)
instance.mutable_cost_column = self.mutable_cost_column instance.mutable_cost_column = self.mutable_cost_column
@@ -352,7 +346,6 @@ class OmniKitTypeReagentRoleAssociation(BaseOmni):
kit_type = self.kit_type.name kit_type = self.kit_type.name
else: else:
kit_type = self.kit_type kit_type = self.kit_type
# name = f"{kit_type} -> {self.reagent_role}"
# logger.debug(f"Using name: {name}") # logger.debug(f"Using name: {name}")
if isinstance(self.reagent_role, OmniReagentRole): if isinstance(self.reagent_role, OmniReagentRole):
reagent_role = self.reagent_role.name reagent_role = self.reagent_role.name
@@ -360,7 +353,6 @@ class OmniKitTypeReagentRoleAssociation(BaseOmni):
reagent_role = self.reagent_role reagent_role = self.reagent_role
return dict( return dict(
reagent_role=reagent_role, reagent_role=reagent_role,
# name=self.reagent_role.name,
submission_type=submission_type, submission_type=submission_type,
kit_type=kit_type kit_type=kit_type
) )
@@ -381,7 +373,6 @@ class OmniKitTypeReagentRoleAssociation(BaseOmni):
logger.debug(f"KTRRAssoc uses: {self.uses}") logger.debug(f"KTRRAssoc uses: {self.uses}")
instance.uses = self.uses instance.uses = self.uses
logger.debug(f"KitTypeReagentRoleAssociation: {pformat(instance.__dict__)}") logger.debug(f"KitTypeReagentRoleAssociation: {pformat(instance.__dict__)}")
return instance return instance
@@ -464,8 +455,6 @@ class OmniTipRole(BaseOmni):
instance, new = self.class_object.query_or_create(name=self.name) instance, new = self.class_object.query_or_create(name=self.name)
for tips in self.tips: for tips in self.tips:
tips.to_sql() tips.to_sql()
# if new_assoc not in instance.instances:
# instance.instances.append(new_assoc)
return instance return instance

View File

@@ -1,8 +1,7 @@
""" """
Provides a screen for managing all attributes of a database object. Provides a screen for managing all attributes of a database object.
""" """
import json, logging import json, logging, sys
import sys
from json.decoder import JSONDecodeError from json.decoder import JSONDecodeError
from datetime import datetime, timedelta from datetime import datetime, timedelta
from pprint import pformat from pprint import pformat
@@ -108,7 +107,6 @@ class ManagerWindow(QDialog):
self.options.setEditable(False) self.options.setEditable(False)
self.options.setMinimumWidth(self.minimumWidth()) self.options.setMinimumWidth(self.minimumWidth())
self.layout.addWidget(self.options, 1, 0, 1, 1) self.layout.addWidget(self.options, 1, 0, 1, 1)
# if len(options) > 0:
self.add_button = QPushButton("Add New") self.add_button = QPushButton("Add New")
self.layout.addWidget(self.add_button, 1, 1, 1, 1) self.layout.addWidget(self.add_button, 1, 1, 1, 1)
self.add_button.clicked.connect(self.add_new) self.add_button.clicked.connect(self.add_new)
@@ -191,7 +189,6 @@ class ManagerWindow(QDialog):
results = [item.parse_form() for item in self.findChildren(EditRelationship)] results = [item.parse_form() for item in self.findChildren(EditRelationship)]
for result in results: for result in results:
logger.debug(f"Incoming relationship result: {result}") logger.debug(f"Incoming relationship result: {result}")
# if not getattr(self.omni_object, result['field']):
setattr(self.omni_object, result['field'], result['value']) setattr(self.omni_object, result['field'], result['value'])
# logger.debug(f"Set result: {getattr(self.omni_object, result['field'])}") # logger.debug(f"Set result: {getattr(self.omni_object, result['field'])}")
# logger.debug(f"Instance coming from parsed form: {self.omni_object.__dict__}") # logger.debug(f"Instance coming from parsed form: {self.omni_object.__dict__}")
@@ -242,8 +239,6 @@ class EditProperty(QWidget):
self.widget.setValue(value.days) self.widget.setValue(value.days)
case dict(): case dict():
self.widget = JsonEditButton(parent=self, key=key, value=value) self.widget = JsonEditButton(parent=self, key=key, value=value)
# self.widget.viewButton.clicked.connect(lambda: self.parent().toggle_textedit(self.widget))
# self.widget.addButton.clicked.connect(lambda: self.parent().add_to_json(self.widget))
case bytes(): case bytes():
self.widget = QLabel("BLOB Under construction") self.widget = QLabel("BLOB Under construction")
case _: case _:
@@ -281,19 +276,12 @@ class EditRelationship(QWidget):
self.label = QLabel(key.title().replace("_", " ")) self.label = QLabel(key.title().replace("_", " "))
self.setObjectName(key) #: key is the name of the relationship this represents self.setObjectName(key) #: key is the name of the relationship this represents
logger.debug(f"Checking relationship for {self.parent().class_object}: {key}") logger.debug(f"Checking relationship for {self.parent().class_object}: {key}")
# try:
# self.relationship = getattr(self.parent().instance.__class__, key)
self.relationship = getattr(self.parent().class_object, key) self.relationship = getattr(self.parent().class_object, key)
#: relationship object for type differentiation
# except AttributeError:
# logger.warning(f"Could not get relationship for: {key}.")
# self.relationship = None
self.widget = QTableView() self.widget = QTableView()
self.add_button = QPushButton("Add New") self.add_button = QPushButton("Add New")
self.add_button.clicked.connect(self.add_new) self.add_button.clicked.connect(self.add_new)
self.existing_button = QPushButton("Add Existing") self.existing_button = QPushButton("Add Existing")
self.existing_button.clicked.connect(self.add_existing) self.existing_button.clicked.connect(self.add_existing)
# self.existing_button.setEnabled(self.class_object.level == 1)
if not isinstance(value, list): if not isinstance(value, list):
if value not in [None, ""]: if value not in [None, ""]:
value = [value] value = [value]
@@ -305,15 +293,6 @@ class EditRelationship(QWidget):
logger.debug(f"Parent manager: {self.parent().manager}") logger.debug(f"Parent manager: {self.parent().manager}")
checked_manager, is_primary = check_object_in_manager(self.parent().manager, self.objectName()) checked_manager, is_primary = check_object_in_manager(self.parent().manager, self.objectName())
if checked_manager: if checked_manager:
logger.debug(f"Checked manager for {self.objectName()}: {checked_manager}")
# logger.debug(f"Omni will inherit: {self.class_object.omni_inheritable} from {self.parent().class_object}")
# if checked_manager is not None:# and not self.data:# and self.objectName() in self.parent().class_object.omni_inheritable:
# # logger.debug(f"Setting {checked_manager} in self.data")
# # if isinstance(checked_manager, InstrumentedList):
# # self.data = [item.to_omni() for item in checked_manager]
# # else:
# # self.data = [checked_manager.to_omni()]
# self.data = [checked_manager]
if not self.data: if not self.data:
self.data = [checked_manager] self.data = [checked_manager]
try: try:
@@ -367,7 +346,6 @@ class EditRelationship(QWidget):
# logger.debug(f"Creating manager window for {instance}") # logger.debug(f"Creating manager window for {instance}")
manager = self.parent().manager manager = self.parent().manager
# logger.debug(f"Managers going into add new: {managers}") # logger.debug(f"Managers going into add new: {managers}")
# dlg = ManagerWindow(self.parent(), object_type=instance.__class__, extras=[], manager=manager, add_edit="add")
dlg = ManagerWindow(self.parent(), instance=instance, extras=[], manager=manager, add_edit=add_edit) dlg = ManagerWindow(self.parent(), instance=instance, extras=[], manager=manager, add_edit=add_edit)
if dlg.exec(): if dlg.exec():
new_instance = dlg.parse_form() new_instance = dlg.parse_form()
@@ -378,7 +356,6 @@ class EditRelationship(QWidget):
else: else:
instance.__dict__.update(new_instance.__dict__) instance.__dict__.update(new_instance.__dict__)
logger.debug(f"Final instance: {pformat(instance.__dict__)}") logger.debug(f"Final instance: {pformat(instance.__dict__)}")
# self.parent().instance.save()
self.parent().update_data() self.parent().update_data()
def add_existing(self): def add_existing(self):
@@ -392,7 +369,6 @@ class EditRelationship(QWidget):
if isinstance(instance, list): if isinstance(instance, list):
instance = instance[0] instance = instance[0]
self.parent().omni_object.__setattr__(self.objectName(), instance.to_omni()) self.parent().omni_object.__setattr__(self.objectName(), instance.to_omni())
# self.parent().instance.save()
self.parent().update_data() self.parent().update_data()
def set_data(self) -> None: def set_data(self) -> None:
@@ -401,7 +377,6 @@ class EditRelationship(QWidget):
""" """
# logger.debug(f"Self.data: {self.data}") # logger.debug(f"Self.data: {self.data}")
try: try:
# records = [{k: v['instance_attr'] for k, v in item.omnigui_instance_dict.items()} for item in self.data]
records = [item.to_dataframe_dict() for item in self.data] records = [item.to_dataframe_dict() for item in self.data]
except AttributeError: except AttributeError:
records = [] records = []
@@ -423,7 +398,6 @@ class EditRelationship(QWidget):
self.widget.resizeRowsToContents() self.widget.resizeRowsToContents()
self.widget.setSortingEnabled(True) self.widget.setSortingEnabled(True)
self.widget.doubleClicked.connect(self.parse_row) self.widget.doubleClicked.connect(self.parse_row)
# self.update_buttons()
def contextMenuEvent(self, event): def contextMenuEvent(self, event):
""" """
@@ -469,18 +443,8 @@ class EditRelationship(QWidget):
def remove_item(self, object): def remove_item(self, object):
logger.debug(f"Attempting to remove {object} from {self.parent().instance.__dict__}") logger.debug(f"Attempting to remove {object} from {self.parent().instance.__dict__}")
# editor = getattr(self.parent().instance, self.objectName().lower())
editor = getattr(self.parent().omni_object, self.objectName().lower()) editor = getattr(self.parent().omni_object, self.objectName().lower())
logger.debug(f"Editor: {editor}") logger.debug(f"Editor: {editor}")
# if object == self.parent().manager:
# logger.error(f"Can't remove manager object.")
# return
# logger.debug(f"Object: {object}")
# try:
# self.data.remove(object)
# except (AttributeError, ValueError) as e:
# logger.error(f"Couldn't remove object from self.data due to: {e}")
# self.data = []
try: try:
# logger.debug(f"Using remove technique") # logger.debug(f"Using remove technique")
editor.remove(object) editor.remove(object)
@@ -492,8 +456,6 @@ class EditRelationship(QWidget):
logger.debug(f"Setting {self.objectName()} to {editor}") logger.debug(f"Setting {self.objectName()} to {editor}")
setattr(self.parent().omni_object, self.objectName().lower(), editor) setattr(self.parent().omni_object, self.objectName().lower(), editor)
logger.debug(f"After set: {getattr(self.parent().omni_object, self.objectName().lower())}") logger.debug(f"After set: {getattr(self.parent().omni_object, self.objectName().lower())}")
# self.parent().instance.save()
# self.parent().update_data()
self.set_data() self.set_data()
self.update_buttons() self.update_buttons()
@@ -551,7 +513,6 @@ class JsonEditButton(QWidget):
def toggle_textedit(self): def toggle_textedit(self):
self.edit_box.setVisible(not self.edit_box.isVisible()) self.edit_box.setVisible(not self.edit_box.isVisible())
# data = getattr(self.omni_object, name)
# logger.debug(f"Data: {data}") # logger.debug(f"Data: {data}")
data = json.dumps(self.data, indent=4) data = json.dumps(self.data, indent=4)
self.edit_box.widget.setText(data) self.edit_box.widget.setText(data)
@@ -624,7 +585,6 @@ class JsonEditScreen(QDialog):
output.append(value) output.append(value)
else: else:
raise ValueError(f"Inappropriate data type: {type(self.json_field)}") raise ValueError(f"Inappropriate data type: {type(self.json_field)}")
# output[key] = value
return output return output