diff --git a/src/submissions/configure/__init__.py b/src/submissions/configure/__init__.py index 26e3054..4873d5b 100644 --- a/src/submissions/configure/__init__.py +++ b/src/submissions/configure/__init__.py @@ -168,20 +168,27 @@ def setup_logger(verbosity:int=3): logger.setLevel(logging.DEBUG) # create file handler which logs even debug messages try: - fh = GroupWriteRotatingFileHandler(LOGDIR.joinpath('submissions.log'), mode='a', maxBytes=100000, backupCount=3, encoding=None, delay=False) - except FileNotFoundError as e: - Path(LOGDIR).mkdir(parents=True, exist_ok=True) - fh = GroupWriteRotatingFileHandler(LOGDIR.joinpath('submissions.log'), mode='a', maxBytes=100000, backupCount=3, encoding=None, delay=False) + Path(LOGDIR).mkdir(parents=True) + # fh = GroupWriteRotatingFileHandler(LOGDIR.joinpath('submissions.log'), mode='a', maxBytes=100000, backupCount=3, encoding=None, delay=False) + # except FileNotFoundError as e: + except FileExistsError: + pass + fh = GroupWriteRotatingFileHandler(LOGDIR.joinpath('submissions.log'), mode='a', maxBytes=100000, backupCount=3, encoding=None, delay=False) fh.setLevel(logging.DEBUG) fh.name = "File" # create console handler with a higher log level ch = logging.StreamHandler(stream=sys.stdout) + # create custom logger with STERR -> log + # ch = StreamToLogger(logger=logger, log_level=verbosity) match verbosity: case 3: + # verb = logging.DEBUG ch.setLevel(logging.DEBUG) case 2: + # verb = logging.INFO ch.setLevel(logging.INFO) case 1: + # verb = logging.WARNING ch.setLevel(logging.WARNING) ch.name = "Stream" # create formatter and add it to the handlers @@ -190,14 +197,28 @@ def setup_logger(verbosity:int=3): ch.setFormatter(formatter) # ch.setLevel(logging.ERROR) # add the handlers to the logger + logger.addHandler(fh) logger.addHandler(ch) + def handle_exception(exc_type, exc_value, exc_traceback): + if issubclass(exc_type, KeyboardInterrupt): + sys.__excepthook__(exc_type, exc_value, exc_traceback) + return + + logger.critical("Uncaught exception", exc_info=(exc_type, exc_value, exc_traceback)) + sys.exit(f"Uncaught error: {exc_type}, {exc_traceback}, check logs.") + + sys.excepthook = handle_exception # stderr_logger = logging.getLogger('STDERR') - + # sys.stderr = logger return logger # sl = StreamToLogger(stderr_logger, logging.ERROR) # sys.stderr = sl + + + + # def set_logger_verbosity(verbosity): # """Does what it says. # """ diff --git a/src/submissions/frontend/__init__.py b/src/submissions/frontend/__init__.py index 6233cd9..81acbf0 100644 --- a/src/submissions/frontend/__init__.py +++ b/src/submissions/frontend/__init__.py @@ -4,11 +4,10 @@ from PyQt6.QtWidgets import ( QTabWidget, QWidget, QVBoxLayout, QPushButton, QMenuBar, QFileDialog, QLineEdit, QMessageBox, QComboBox, QDateEdit, QHBoxLayout, - QSpinBox, QScrollArea + QSpinBox, QScrollArea, QScrollBar, QSizePolicy ) from PyQt6.QtGui import QAction, QIcon -from PyQt6.QtCore import QDateTime, QDate, QSignalBlocker -from PyQt6.QtCore import pyqtSlot +from PyQt6.QtCore import pyqtSlot, QDateTime, QDate, QSignalBlocker, Qt from PyQt6.QtWebEngineWidgets import QWebEngineView import pandas as pd @@ -198,25 +197,27 @@ class App(QMainWindow): submit_btn = QPushButton("Submit") self.table_widget.formlayout.addWidget(submit_btn) submit_btn.clicked.connect(self.submit_new_sample) + # self.table_widget.interior.setSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.MinimumExpanding) + print(self.table_widget.formwidget.size()) + - - def renderPage(self): - """ - Test function for plotly chart rendering - """ - df = pd.read_excel("C:\\Users\\lwark\\Desktop\\test_df.xlsx", engine="openpyxl") - fig = px.bar(df, x="submitted_date", y="kraken_percent", color="genus", title="Long-Form Input") - fig.update_layout( - xaxis_title="Submitted Date (* - Date parsed from fastq file creation date)", - yaxis_title="Kraken Percent", - showlegend=True, - barmode='stack' - ) - html = '' - html += plotly.offline.plot(fig, output_type='div', include_plotlyjs='cdn', auto_open=True, image = 'png', image_filename='plot_image') - html += '' - self.table_widget.webengineview.setHtml(html) - self.table_widget.webengineview.update() + # def renderPage(self): + # """ + # Test function for plotly chart rendering + # """ + # df = pd.read_excel("C:\\Users\\lwark\\Desktop\\test_df.xlsx", engine="openpyxl") + # fig = px.bar(df, x="submitted_date", y="kraken_percent", color="genus", title="Long-Form Input") + # fig.update_layout( + # xaxis_title="Submitted Date (* - Date parsed from fastq file creation date)", + # yaxis_title="Kraken Percent", + # showlegend=True, + # barmode='stack' + # ) + # html = '' + # html += plotly.offline.plot(fig, output_type='div', include_plotlyjs='cdn', auto_open=True, image = 'png', image_filename='plot_image') + # html += '' + # self.table_widget.webengineview.setHtml(html) + # self.table_widget.webengineview.update() @@ -429,10 +430,13 @@ class AddSubForm(QWidget): self.formwidget.setLayout(self.formlayout) self.formwidget.setFixedWidth(300) - self.interior = QScrollArea() + self.interior = QScrollArea(self.tab1) + # self.interior.verticalScrollBar() + # self.interior.setVerticalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAlwaysOn) self.interior.setWidgetResizable(True) + self.interior.setFixedWidth(325) - self.interior.setParent(self.tab1) + # self.interior.setParent(self.tab1) self.interior.setWidget(self.formwidget) self.sheetwidget = QWidget(self) @@ -445,8 +449,8 @@ class AddSubForm(QWidget): self.tab1.setLayout(self.tab1.layout) # self.tab1.layout.addLayout(self.formlayout) + self.tab1.layout.addWidget(self.interior) # self.tab1.layout.addWidget(self.formwidget) - self.tab1.layout.addWidget(self.formwidget) self.tab1.layout.addWidget(self.sheetwidget) # self.tab1.layout.addLayout(self.sheetlayout) self.datepicker = ControlsDatePicker()