Spaces:
Running
Running
| """ | |
| Data loading utilities for CSV and Google Sheets | |
| """ | |
| import pandas as pd | |
| from functools import lru_cache | |
| from backend.config import SHEET_CSV_URL | |
| def load_script_data(path: str) -> pd.DataFrame: | |
| """ | |
| Load script master data from CSV file with caching | |
| Args: | |
| path: Path to CSV file | |
| Returns: | |
| DataFrame with script data | |
| """ | |
| df = pd.read_csv(path) | |
| df.dropna(how='all', axis=1, inplace=True) | |
| return df | |
| def load_detailed_script_data(path: str) -> pd.DataFrame: | |
| """ | |
| Load detailed script master data from CSV file with caching | |
| Args: | |
| path: Path to CSV file | |
| Returns: | |
| DataFrame with detailed script data | |
| """ | |
| try: | |
| df = pd.read_csv(path) | |
| # Ensure required columns exist or clean up validation if needed | |
| return df | |
| except Exception as e: | |
| print(f"Error loading detailed script data: {e}") | |
| return pd.DataFrame() | |
| def load_clients_from_sheet(url: str = SHEET_CSV_URL) -> pd.DataFrame: | |
| """ | |
| Load client details from Google Sheets | |
| Args: | |
| url: Google Sheets CSV export URL | |
| Returns: | |
| DataFrame with client details | |
| """ | |
| try: | |
| df = pd.read_csv(url) | |
| return df | |
| except Exception as e: | |
| print(f"Error loading clients from sheet: {e}") | |
| return pd.DataFrame() | |
| def safe_json_to_df(response, columns: list) -> pd.DataFrame: | |
| """ | |
| Convert requests.Response json to DataFrame with fallback to empty frame | |
| Args: | |
| response: requests.Response object | |
| columns: List of column names for fallback empty DataFrame | |
| Returns: | |
| DataFrame with response data or empty DataFrame | |
| """ | |
| if response is None: | |
| return pd.DataFrame(columns=columns) | |
| if response.status_code != 200: | |
| return pd.DataFrame(columns=columns) | |
| text = response.text.strip() | |
| if not text or text == "[]": | |
| return pd.DataFrame(columns=columns) | |
| try: | |
| return pd.DataFrame(response.json()) | |
| except Exception: | |
| return pd.DataFrame(columns=columns) | |