settings.py 3.3 KB

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