77 lines
2.9 KiB
Python
77 lines
2.9 KiB
Python
"""
|
|
Entry point for the Employee Workstation Activity Tracking application.
|
|
|
|
This script initializes the Flask application and runs the development server.
|
|
"""
|
|
import os
|
|
|
|
# Removed unused import sys
|
|
from app import create_app, init_db
|
|
from sqlalchemy.exc import SQLAlchemyError # Import SQLAlchemyError
|
|
|
|
# Create the application instance using the factory function
|
|
app = create_app()
|
|
|
|
if __name__ == "__main__":
|
|
# Print some diagnostic information
|
|
# Consider using app.logger for some of these if appropriate after app init
|
|
app.logger.info("Starting application via run.py...") # Changed to app.logger
|
|
app.logger.info(f"Instance path: {app.instance_path}") # Changed to app.logger
|
|
app.logger.info(
|
|
f"Instance path exists: {os.path.exists(app.instance_path)}"
|
|
) # Changed to app.logger
|
|
|
|
# Make sure the instance directory exists
|
|
if not os.path.exists(app.instance_path):
|
|
try:
|
|
os.makedirs(app.instance_path)
|
|
app.logger.info(
|
|
f"Created instance directory: {app.instance_path}"
|
|
) # Changed to app.logger
|
|
except OSError as e: # Changed from Exception to OSError
|
|
app.logger.error(
|
|
f"Error creating instance directory: {e}"
|
|
) # Changed to app.logger
|
|
|
|
# Check instance directory permissions
|
|
has_write_access = os.access(app.instance_path, os.W_OK)
|
|
app.logger.info(
|
|
f"Instance path write access: {has_write_access}"
|
|
) # Changed to app.logger
|
|
|
|
# Print database configuration
|
|
db_uri = app.config["SQLALCHEMY_DATABASE_URI"]
|
|
masked_uri = db_uri
|
|
if "@" in db_uri:
|
|
parts = db_uri.split("@")
|
|
masked_uri = "****@" + parts[1]
|
|
app.logger.info(f"Database URI: {masked_uri}") # Changed to app.logger
|
|
|
|
# Initialize the database if needed
|
|
try:
|
|
app.logger.info("Initializing database from run.py...") # Changed to app.logger
|
|
init_db(app) # Pass the app instance
|
|
app.logger.info(
|
|
"Database initialization successful from run.py"
|
|
) # Changed to app.logger
|
|
except SQLAlchemyError as db_e: # Specific for DB issues
|
|
app.logger.error(f"Database error during initialization from run.py: {db_e}")
|
|
# Optionally log full traceback for SQLAlchemyErrors if they are complex
|
|
# import traceback
|
|
# app.logger.error(traceback.format_exc())
|
|
except Exception as e: # For other unexpected errors during init
|
|
app.logger.error(
|
|
f"Unexpected error during database initialization from run.py: {e}"
|
|
) # Changed to app.logger
|
|
import traceback
|
|
|
|
# Run the Flask application
|
|
host = os.environ.get("HOST", "0.0.0.0")
|
|
port = int(os.environ.get("PORT", 5000))
|
|
debug = os.environ.get("DEBUG", "False").lower() == "true"
|
|
|
|
app.logger.info(
|
|
f"Starting Flask application on {host}:{port} (debug={debug})"
|
|
) # Changed to app.logger
|
|
app.run(host=host, port=port, debug=debug)
|