diff --git a/src/pages/screener/canslim_screener_page.py b/src/pages/screener/canslim_screener_page.py index 6b1adac..0eb0bce 100644 --- a/src/pages/screener/canslim_screener_page.py +++ b/src/pages/screener/canslim_screener_page.py @@ -3,30 +3,8 @@ import pandas as pd from datetime import datetime from screener.canslim_controller import run_canslim_screener from db.db_connection import create_client +from utils.report_utils import load_scanner_reports -def load_scanner_reports(): - """Load and return available scanner reports""" - import os - import pandas as pd - from datetime import datetime - - reports = [] - reports_dir = "reports" - - if os.path.exists(reports_dir): - for file in os.listdir(reports_dir): - if file.endswith(".csv"): - file_path = os.path.join(reports_dir, file) - # Get file creation time - created = datetime.fromtimestamp(os.path.getctime(file_path)) - reports.append({ - 'name': file, - 'path': file_path, - 'created': created - }) - - # Sort by creation time, newest first - return sorted(reports, key=lambda x: x['created'], reverse=True) def canslim_screener_page(): st.header("CANSLIM Screener") @@ -106,7 +84,7 @@ def canslim_screener_page(): with reports_tab: st.subheader("CANSLIM Reports") - reports = load_scanner_reports() + reports = load_scanner_reports(scanner_type="canslim") if reports: # Create a selectbox to choose the report selected_report = st.selectbox( diff --git a/src/pages/screener/technical_scanner_page.py b/src/pages/screener/technical_scanner_page.py index a2409ec..3e8924d 100644 --- a/src/pages/screener/technical_scanner_page.py +++ b/src/pages/screener/technical_scanner_page.py @@ -1,6 +1,6 @@ import streamlit as st from screener.scanner_controller import run_technical_scanner -from pages.screener.canslim_screener_page import load_scanner_reports +from utils.report_utils import load_scanner_reports import pandas as pd def technical_scanner_page(): @@ -83,7 +83,7 @@ def technical_scanner_page(): with reports_tab: st.subheader("Scanner Reports") - reports = load_scanner_reports() + reports = load_scanner_reports(scanner_type="technical") if reports: # Create a selectbox to choose the report selected_report = st.selectbox( diff --git a/src/utils/report_utils.py b/src/utils/report_utils.py new file mode 100644 index 0000000..820a7f9 --- /dev/null +++ b/src/utils/report_utils.py @@ -0,0 +1,38 @@ +import os +from datetime import datetime +from pathlib import Path + +def load_scanner_reports(scanner_type: str = None): + """ + Load and return available scanner reports + + Args: + scanner_type (str, optional): Filter reports by scanner type (e.g., 'technical', 'canslim') + + Returns: + list: List of dictionaries containing report information + """ + reports = [] + reports_dir = Path("src/reports") + + # Create reports directory if it doesn't exist + reports_dir.mkdir(parents=True, exist_ok=True) + + if reports_dir.exists(): + for file in reports_dir.glob("*.csv"): + # Get file creation time + created = datetime.fromtimestamp(file.stat().st_ctime) + + # If scanner_type is specified, only include matching reports + if scanner_type: + if not file.name.lower().startswith(scanner_type.lower()): + continue + + reports.append({ + 'name': file.name, + 'path': str(file), + 'created': created + }) + + # Sort by creation time, newest first + return sorted(reports, key=lambda x: x['created'], reverse=True)