2025-05-16 17:55:30 +04:00

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)