From 0c20ade65aa9c1d5b650b8a4ccf74ad701bbe9ec Mon Sep 17 00:00:00 2001 From: lwark Date: Thu, 4 Sep 2025 14:46:25 -0500 Subject: [PATCH] Code cleanup for excel.writers complete. --- .../backend/excel/writers/__init__.py | 17 +++------- .../excel/writers/clientsubmission_writer.py | 5 +-- .../writers/procedure_writers/__init__.py | 19 +++-------- .../results_writers/pcr_results_writer.py | 34 ++----------------- 4 files changed, 15 insertions(+), 60 deletions(-) diff --git a/src/submissions/backend/excel/writers/__init__.py b/src/submissions/backend/excel/writers/__init__.py index 0fea86f..e3097c5 100644 --- a/src/submissions/backend/excel/writers/__init__.py +++ b/src/submissions/backend/excel/writers/__init__.py @@ -1,11 +1,12 @@ +""" +Module for default excel writers +""" +from __future__ import annotations import logging, sys from datetime import datetime, date from pprint import pformat -from types import NoneType from typing import Any, Literal - from openpyxl.styles import Alignment, PatternFill -from openpyxl.utils import get_column_letter from openpyxl.workbook.workbook import Workbook from openpyxl.worksheet.worksheet import Worksheet from pandas import DataFrame @@ -47,7 +48,6 @@ class DefaultWriter(object): case _: value = str(value) - # logger.debug(f"Returning value: {value}") return value @classmethod @@ -60,7 +60,6 @@ class DefaultWriter(object): def write_to_workbook(self, workbook: Workbook, sheet: str | None = None, start_row: int | None = None, *args, **kwargs): - logger.debug(f"Writing to workbook with {self.__class__.__name__}") if not start_row: try: start_row = self.__class__.start_row @@ -81,14 +80,11 @@ class DefaultWriter(object): self.worksheet = self.prewrite(self.worksheet, start_row=start_row) self.start_row = self.delineate_start_row(start_row=start_row) self.end_row = self.delineate_end_row(start_row=start_row) - logger.debug(f"{self.__class__.__name__} Start row: {self.start_row}, end row: {self.end_row}") return workbook def delineate_start_row(self, start_row: int = 1): - logger.debug(f"Attempting to find start row from {start_row}") for iii, row in enumerate(self.worksheet.iter_rows(min_row=start_row), start=start_row): if all([item.value is None for item in row]): - logger.debug(f"Returning {iii} for start row.") return iii if self.worksheet.max_row == 1: return self.worksheet.max_row + 1 @@ -109,7 +105,7 @@ class DefaultWriter(object): if len(str(cell.value)) > setlen: setlen = len(str(cell.value)) set_col_width = setlen + 5 - # Setting the column width + # Note: Setting the column width worksheet.column_dimensions[column].width = set_col_width return worksheet @@ -130,7 +126,6 @@ class DefaultKEYVALUEWriter(DefaultWriter): @classmethod def check_location(cls, locations: list, sheet: str): - logger.debug(f"Checking for location against {sheet}") return any([item['sheet'] == sheet for item in locations]) def write_to_workbook(self, workbook: Workbook, sheet: str | None = None, @@ -193,7 +188,6 @@ class DefaultTABLEWriter(DefaultWriter): start_row: int | None = None, *args, **kwargs) -> Workbook: workbook = super().write_to_workbook(workbook=workbook, sheet=sheet, start_row=start_row, *args, **kwargs) self.header_list = self.sort_header_row(list(set(flatten_list([item.fields for item in self.pydant_obj])))) - logger.debug(f"Header row: {self.header_list}") self.worksheet = self.write_header_row(worksheet=self.worksheet) for iii, object in enumerate(self.pydant_obj, start=1): write_row = self.start_row + iii @@ -219,7 +213,6 @@ class DefaultTABLEWriter(DefaultWriter): @classmethod def sort_header_row(cls, header_list: list) -> list: output = [] - logger.debug(cls.exclude) for item in cls.header_order: if item in [header for header in header_list if header not in cls.exclude]: output.append(header_list.pop(header_list.index(item))) diff --git a/src/submissions/backend/excel/writers/clientsubmission_writer.py b/src/submissions/backend/excel/writers/clientsubmission_writer.py index 4efec8a..c2d6c5c 100644 --- a/src/submissions/backend/excel/writers/clientsubmission_writer.py +++ b/src/submissions/backend/excel/writers/clientsubmission_writer.py @@ -1,3 +1,6 @@ +""" +Module for ClientSubmission writing +""" from __future__ import annotations import logging from pprint import pformat @@ -17,10 +20,8 @@ class ClientSubmissionInfoWriter(DefaultKEYVALUEWriter): def __init__(self, pydant_obj, *args, **kwargs): super().__init__(pydant_obj=pydant_obj, *args, **kwargs) - logger.debug(f"{self.__class__.__name__} recruited!") def prewrite(self, worksheet: Worksheet, start_row: int) -> Worksheet: - # worksheet.merge_cells(start_row=start_row, start_column=1, end_row=start_row, end_column=4) worksheet.cell(row=start_row, column=1, value="Submitter Info") worksheet.cell(row=start_row, column=1).alignment = Alignment(horizontal="center") return worksheet diff --git a/src/submissions/backend/excel/writers/procedure_writers/__init__.py b/src/submissions/backend/excel/writers/procedure_writers/__init__.py index 3c2eda4..519d168 100644 --- a/src/submissions/backend/excel/writers/procedure_writers/__init__.py +++ b/src/submissions/backend/excel/writers/procedure_writers/__init__.py @@ -1,14 +1,11 @@ +""" +Default +""" from __future__ import annotations -import logging -import sys +import logging, sys from pprint import pformat - from openpyxl.workbook import Workbook - from backend.excel.writers import DefaultKEYVALUEWriter, DefaultTABLEWriter -from typing import TYPE_CHECKING -if TYPE_CHECKING: - from backend.db.models import ProcedureType logger = logging.getLogger(f"submissions.{__name__}") @@ -25,10 +22,6 @@ class ProcedureInfoWriter(DefaultKEYVALUEWriter): super().__init__(pydant_obj=pydant_obj, *args, **kwargs) self.fill_dictionary = {k: v for k, v in self.fill_dictionary.items() if k not in self.__class__.exclude} - # logger.debug(pformat(self.fill_dictionary)) - # for rng in self.range_dict: - # if "sheet" not in rng or rng['sheet'] == "": - # rng['sheet'] = f"{pydant_obj.proceduretype.name} Quality" def write_to_workbook(self, workbook: Workbook, sheet: str | None = None, start_row: int = 1, *args, **kwargs) -> Workbook: @@ -48,7 +41,6 @@ class ProcedureReagentWriter(DefaultTABLEWriter): def write_to_workbook(self, workbook: Workbook, sheet: str | None = None, start_row: int = 1, *args, **kwargs) -> Workbook: - logger.debug(self.pydant_obj) workbook = super().write_to_workbook(workbook=workbook, sheet=self.sheet) return workbook @@ -65,7 +57,6 @@ class ProcedureEquipmentWriter(DefaultTABLEWriter): def write_to_workbook(self, workbook: Workbook, sheet: str | None = None, start_row: int = 1, *args, **kwargs) -> Workbook: - logger.debug(self.pydant_obj) workbook = super().write_to_workbook(workbook=workbook, sheet=self.sheet) return workbook @@ -78,11 +69,9 @@ class ProcedureSampleWriter(DefaultTABLEWriter): def __init__(self, pydant_obj, range_dict: dict | None = None, *args, **kwargs): super().__init__(pydant_obj=pydant_obj, range_dict=range_dict, *args, **kwargs) self.sheet = f"{self.pydant_obj.proceduretype.name} Quality" - # self.pydant_obj = self.pydant_obj.sample self.pydant_obj = self.pad_samples_to_length(row_count=pydant_obj.max_sample_rank, mode="procedure") def write_to_workbook(self, workbook: Workbook, sheet: str | None = None, start_row: int = 1, *args, **kwargs) -> Workbook: - logger.debug(self.pydant_obj) workbook = super().write_to_workbook(workbook=workbook, sheet=self.sheet) return workbook diff --git a/src/submissions/backend/excel/writers/results_writers/pcr_results_writer.py b/src/submissions/backend/excel/writers/results_writers/pcr_results_writer.py index 118beed..256178f 100644 --- a/src/submissions/backend/excel/writers/results_writers/pcr_results_writer.py +++ b/src/submissions/backend/excel/writers/results_writers/pcr_results_writer.py @@ -1,12 +1,12 @@ +""" + +""" from __future__ import annotations import logging -from pathlib import Path from pprint import pformat from typing import Generator, TYPE_CHECKING - from openpyxl import Workbook from openpyxl.styles import Alignment - from backend.excel.writers import DefaultKEYVALUEWriter, DefaultTABLEWriter from tools import flatten_list if TYPE_CHECKING: @@ -21,26 +21,10 @@ class PCRInfoWriter(DefaultKEYVALUEWriter): def __init__(self, pydant_obj, proceduretype: "ProcedureType" | None = None, *args, **kwargs): super().__init__(pydant_obj=pydant_obj, proceduretype=proceduretype, *args, **kwargs) self.fill_dictionary = self.pydant_obj.improved_dict()['result'] - logger.debug(pformat(self.fill_dictionary)) def write_to_workbook(self, workbook: Workbook, sheet: str | None = None, start_row: int | None = None, *args, **kwargs) -> Workbook: workbook = super().write_to_workbook(workbook=workbook, sheet=f"{self.proceduretype.name} Results") - # if not start_row: - # try: - # start_row = self.__class__.start_row - # except AttributeError as e: - # logger.error(f"Couldn't get start row due to {e}") - # start_row = 1 - # # worksheet = workbook[f"{self.proceduretype.name} Results"] - # self.worksheet = workbook.create_sheet(f"{self.proceduretype.name} Results") - # self.worksheet = self.prewrite(self.worksheet, start_row=start_row) - # # self.start_row = self.delineate_start_row(start_row=start_row) - # # self.end_row = self.delineate_end_row(start_row=start_row) - # # for key, value in self.fill_dictionary['result'].items(): - # # # logger.debug(f"Filling in {key} with {value}") - # # self.worksheet.cell(value['location']['row'], value['location']['key_column'], value=key.replace("_", " ").title()) - # # self.worksheet.cell(value['location']['row'], value['location']['value_column'], value=value['value']) return workbook @@ -56,7 +40,6 @@ class PCRSampleWriter(DefaultTABLEWriter): columns.append((iii, header)) columns = sorted(columns, key=lambda x: x[0]) columns = proto_columns + columns - # logger.debug(columns) all_results = flatten_list([[item for item in self.rearrange_results(result)] for result in self.pydant_obj]) if len(all_results) > 0 : worksheet.cell(row=header_row, column=1, value="Sample") @@ -83,21 +66,10 @@ class PCRSampleWriter(DefaultTABLEWriter): def column_headers(self): output = [] for item in self.pydant_obj: - # logger.debug(item) dicto: dict = item.result for value in dicto.values(): if not isinstance(value, dict): - # logger.debug(f"Will not include {value} in column headers.") continue for key in value.keys(): output.append(key) return sorted(list(set(output))) - - - - - - - - -