settings.py 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import os
  2. from dotenv import load_dotenv
  3. import logging
  4. from httpx import get
  5. # Load environment variables from .env file
  6. load_dotenv()
  7. APPNAME = "Pedidos Express"
  8. MAIL = os.getenv("MAIL_DIRECTION","")
  9. MAIL_PASSWORD = os.getenv("MAIL_PASSWORD","")
  10. LOGS_FOLDER = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'logs')
  11. if not os.path.exists(LOGS_FOLDER):
  12. os.makedirs(LOGS_FOLDER)
  13. LOG_LEVEL = os.getenv("LOG_LEVEL", "INFO").upper()
  14. # Configure logging
  15. logging.basicConfig(
  16. level=getattr(logging, LOG_LEVEL),
  17. format='%(asctime)s - %(name)s:%(lineno)d - %(levelname)s - %(message)s',
  18. handlers=[
  19. logging.FileHandler(os.path.join(LOGS_FOLDER, 'app.log')),
  20. logging.StreamHandler()
  21. ]
  22. )
  23. # Configuration
  24. APP_NAME = os.getenv("APP_NAME", "Pedidos Express")
  25. FEEDBACK_PATH = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'logs', 'feedback.json')
  26. OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
  27. IMAGE_PATH = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'public', 'images')
  28. PORT = int(os.getenv("PORT", 6001))
  29. CURRENT_URL = os.getenv("CURRENT_URL", "http://localhost:6001")
  30. PIN_KEY = os.getenv("PIN_KEY", "-1")
  31. DEVELOPMENT = True if os.getenv("NODE_ENV", "development").lower() == "development" else False
  32. if PIN_KEY == "-1":
  33. logging.warning("Using default PIN_KEY. Please set a strong PIN_KEY in your .env file for production.")
  34. # SECRET_KEY is crucial for signing session cookies.
  35. # Fallback to a default if not set, but warn that this is insecure for production.
  36. SECRET_KEY = os.getenv("SECRET_KEY", "your_very_very_secret_key_for_signing_cookies_python_v2")
  37. # Data paths
  38. BG_DATA_PATH = os.path.join(os.path.dirname(os.path.dirname(__file__)),'data', 'llm_data.json')
  39. PRODUCT_DATA_PATH = os.path.join(os.path.dirname(os.path.dirname(__file__)),'data', 'products.json')
  40. #postgresql connection settings
  41. POSTGRESQL_DB_CONFIG = {
  42. 'dbname': os.getenv('POSTGRES_DB', 'pedidos_express_pruebas'),
  43. 'user': os.getenv('POSTGRES_USER', 'superti'),
  44. 'password': os.getenv('POSTGRES_PASSWORD', 'BTD2DALN55N'),
  45. 'host': os.getenv('POSTGRES_HOST', 'localhost'),
  46. 'port': os.getenv('POSTGRES_PORT', '5432')
  47. }
  48. def validate_config():
  49. logger = logging.getLogger(__name__)
  50. """Validate configuration and show warnings"""
  51. if SECRET_KEY == "your_very_very_secret_key_for_signing_cookies_python_v2":
  52. logger.warning("Using default SECRET_KEY. Please set a strong SECRET_KEY in your .env file for production.")
  53. if POSTGRESQL_DB_CONFIG['dbname'] == 'pedidos_express_pruebas':
  54. logger.warning("Using default database name 'pedidos_express_pruebas'. Please set a valid database name in your .env file for production.")
  55. if not POSTGRESQL_DB_CONFIG['user'] or not POSTGRESQL_DB_CONFIG['password']:
  56. logger.critical("CRITICAL ERROR: POSTGRES_USER and POSTGRES_PASSWORD environment variables not set. The application will not work correctly.")
  57. return False
  58. if not MAIL or not MAIL_PASSWORD:
  59. logger.critical("CRITICAL ERROR: MAIL and MAIL_PASSWORD environment variables not set. The application will not work correctly.")
  60. return False
  61. if not OPENAI_API_KEY:
  62. logger.critical("CRITICAL ERROR: OPENAI_API_KEY environment variable not set. The application will not work correctly.")
  63. return False
  64. return True