- Implemented a new API router for managing report templates, including endpoints for listing, creating, retrieving, updating, and deleting templates. - Added a new HTML partial for a unified SLM settings modal, allowing users to configure SLM settings with dynamic modem selection and FTP credentials. - Created a report preview page with an editable data table using jspreadsheet, enabling users to modify report details and download the report as an Excel file.
89 lines
2.7 KiB
Python
89 lines
2.7 KiB
Python
"""
|
|
Migration script to add report_templates table.
|
|
|
|
This creates a new table for storing report generation configurations:
|
|
- Template name and project association
|
|
- Time filtering settings (start/end time)
|
|
- Date range filtering (optional)
|
|
- Report title defaults
|
|
|
|
Run this script once to migrate an existing database.
|
|
"""
|
|
|
|
import sqlite3
|
|
import os
|
|
|
|
# Database path
|
|
DB_PATH = "./data/seismo_fleet.db"
|
|
|
|
def migrate_database():
|
|
"""Create report_templates table"""
|
|
|
|
if not os.path.exists(DB_PATH):
|
|
print(f"Database not found at {DB_PATH}")
|
|
print("The database will be created automatically when you run the application.")
|
|
return
|
|
|
|
print(f"Migrating database: {DB_PATH}")
|
|
|
|
conn = sqlite3.connect(DB_PATH)
|
|
cursor = conn.cursor()
|
|
|
|
# Check if report_templates table already exists
|
|
cursor.execute("SELECT name FROM sqlite_master WHERE type='table' AND name='report_templates'")
|
|
table_exists = cursor.fetchone()
|
|
|
|
if table_exists:
|
|
print("Migration already applied - report_templates table exists")
|
|
conn.close()
|
|
return
|
|
|
|
print("Creating report_templates table...")
|
|
|
|
try:
|
|
cursor.execute("""
|
|
CREATE TABLE report_templates (
|
|
id TEXT PRIMARY KEY,
|
|
name TEXT NOT NULL,
|
|
project_id TEXT,
|
|
report_title TEXT DEFAULT 'Background Noise Study',
|
|
start_time TEXT,
|
|
end_time TEXT,
|
|
start_date TEXT,
|
|
end_date TEXT,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
)
|
|
""")
|
|
print(" ✓ Created report_templates table")
|
|
|
|
# Insert default templates
|
|
import uuid
|
|
|
|
default_templates = [
|
|
(str(uuid.uuid4()), "Nighttime (7PM-7AM)", None, "Background Noise Study", "19:00", "07:00", None, None),
|
|
(str(uuid.uuid4()), "Daytime (7AM-7PM)", None, "Background Noise Study", "07:00", "19:00", None, None),
|
|
(str(uuid.uuid4()), "Full Day (All Data)", None, "Background Noise Study", None, None, None, None),
|
|
]
|
|
|
|
cursor.executemany("""
|
|
INSERT INTO report_templates (id, name, project_id, report_title, start_time, end_time, start_date, end_date)
|
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
|
""", default_templates)
|
|
print(" ✓ Inserted default templates (Nighttime, Daytime, Full Day)")
|
|
|
|
conn.commit()
|
|
print("\nMigration completed successfully!")
|
|
|
|
except sqlite3.Error as e:
|
|
print(f"\nError during migration: {e}")
|
|
conn.rollback()
|
|
raise
|
|
|
|
finally:
|
|
conn.close()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
migrate_database()
|