Beginning prelim code cleanup.
This commit is contained in:
@@ -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:
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user