Added Postgres support.
This commit is contained in:
@@ -7,8 +7,8 @@ from PyQt6.QtWidgets import QTableView, QMenu
|
||||
from PyQt6.QtCore import Qt, QAbstractTableModel, QSortFilterProxyModel
|
||||
from PyQt6.QtGui import QAction, QCursor
|
||||
from backend.db.models import BasicSubmission
|
||||
from backend.excel import make_report_html, make_report_xlsx, ReportMaker
|
||||
from tools import Report, Result, row_map, get_first_blank_df_row, html_to_pdf
|
||||
from backend.excel import ReportMaker
|
||||
from tools import Report, Result, report_result
|
||||
from .functions import select_save_file, select_open_file
|
||||
from .misc import ReportDatePicker
|
||||
import pandas as pd
|
||||
@@ -129,14 +129,15 @@ class SubmissionsSheet(QTableView):
|
||||
func = self.con_actions[action_name]
|
||||
func(obj=self)
|
||||
|
||||
@report_result
|
||||
def link_extractions(self):
|
||||
"""
|
||||
Pull extraction logs into the db
|
||||
"""
|
||||
self.link_extractions_function()
|
||||
self.app.report.add_result(self.report)
|
||||
"""
|
||||
self.report = Report()
|
||||
self.app.result_reporter()
|
||||
self.link_extractions_function()
|
||||
self.report.add_result(self.report)
|
||||
return self.report
|
||||
|
||||
def link_extractions_function(self):
|
||||
"""
|
||||
@@ -179,6 +180,7 @@ class SubmissionsSheet(QTableView):
|
||||
sub.save()
|
||||
self.report.add_result(Result(msg=f"We added {count} logs to the database.", status='Information'))
|
||||
|
||||
@report_result
|
||||
def link_pcr(self):
|
||||
"""
|
||||
Pull pcr logs into the db
|
||||
@@ -186,7 +188,7 @@ class SubmissionsSheet(QTableView):
|
||||
self.link_pcr_function()
|
||||
self.app.report.add_result(self.report)
|
||||
self.report = Report()
|
||||
self.app.result_reporter()
|
||||
return self.report
|
||||
|
||||
def link_pcr_function(self):
|
||||
"""
|
||||
@@ -225,15 +227,15 @@ class SubmissionsSheet(QTableView):
|
||||
# NOTE: check if pcr_info already exists
|
||||
sub.save()
|
||||
self.report.add_result(Result(msg=f"We added {count} logs to the database.", status='Information'))
|
||||
|
||||
|
||||
@report_result
|
||||
def generate_report(self):
|
||||
"""
|
||||
Make a report
|
||||
"""
|
||||
self.generate_report_function()
|
||||
self.app.report.add_result(self.report)
|
||||
"""
|
||||
self.report = Report()
|
||||
self.app.result_reporter()
|
||||
self.generate_report_function()
|
||||
return self.report
|
||||
|
||||
def generate_report_function(self):
|
||||
"""
|
||||
@@ -250,43 +252,7 @@ class SubmissionsSheet(QTableView):
|
||||
dlg = ReportDatePicker()
|
||||
if dlg.exec():
|
||||
info = dlg.parse_form()
|
||||
# logger.debug(f"Report info: {info}")
|
||||
# NOTE: find submissions based on date range
|
||||
subs = BasicSubmission.query(start_date=info['start_date'], end_date=info['end_date'])
|
||||
# NOTE: convert each object to dict
|
||||
records = [item.to_dict(report=True) for item in subs]
|
||||
# logger.debug(f"Records: {pformat(records)}")
|
||||
# NOTE: make dataframe from record dictionaries
|
||||
detailed_df, summary_df = make_report_xlsx(records=records)
|
||||
html = make_report_html(df=summary_df, start_date=info['start_date'], end_date=info['end_date'])
|
||||
# NOTE: get save location of report
|
||||
fname = select_save_file(obj=self, default_name=f"Submissions_Report_{info['start_date']}-{info['end_date']}.docx", extension="docx")
|
||||
# html_to_pdf(html=html, output_file=fname)
|
||||
# writer = pd.ExcelWriter(fname.with_suffix(".xlsx"), engine='openpyxl')
|
||||
# summary_df.to_excel(writer, sheet_name="Report")
|
||||
# detailed_df.to_excel(writer, sheet_name="Details", index=False)
|
||||
# worksheet: Worksheet = writer.sheets['Report']
|
||||
# for idx, col in enumerate(summary_df, start=1): # loop through all columns
|
||||
# series = summary_df[col]
|
||||
# max_len = max((
|
||||
# series.astype(str).map(len).max(), # len of largest item
|
||||
# len(str(series.name)) # len of column name/header
|
||||
# )) + 20 # adding a little extra space
|
||||
# try:
|
||||
# # NOTE: Convert idx to letter
|
||||
# col_letter = chr(ord('@') + idx)
|
||||
# worksheet.column_dimensions[col_letter].width = max_len
|
||||
# except ValueError:
|
||||
# pass
|
||||
# blank_row = get_first_blank_df_row(summary_df) + 1
|
||||
# # logger.debug(f"Blank row index = {blank_row}")
|
||||
# for col in range(3,6):
|
||||
# col_letter = row_map[col]
|
||||
# worksheet.cell(row=blank_row, column=col, value=f"=SUM({col_letter}2:{col_letter}{str(blank_row-1)})")
|
||||
# for cell in worksheet['D']:
|
||||
# if cell.row > 1:
|
||||
# cell.style = 'Currency'
|
||||
# writer.close()
|
||||
rp = ReportMaker(start_date=info['start_date'], end_date=info['end_date'])
|
||||
rp.write_report(filename=fname, obj=self)
|
||||
self.report.add_result(report)
|
||||
|
||||
Reference in New Issue
Block a user