""" Application constants and configuration values. Migrated from Discord app constants.py """ import os from typing import Optional, Literal class Settings: """Application settings and configuration.""" # Database settings DATABASE_URL: str = os.getenv( "DATABASE_URL", "postgresql+psycopg://paper_dynasty_user:paper_dynasty_dev_password@localhost:5432/paper_dynasty" ) DATABASE_TEST_URL: str = os.getenv( "DATABASE_TEST_URL", "postgresql+psycopg://paper_dynasty_user:paper_dynasty_dev_password@localhost:5432/paper_dynasty_test" ) # Discord OAuth settings DISCORD_CLIENT_ID: Optional[str] = os.getenv("DISCORD_CLIENT_ID") DISCORD_CLIENT_SECRET: Optional[str] = os.getenv("DISCORD_CLIENT_SECRET") DISCORD_REDIRECT_URI: Optional[str] = os.getenv("DISCORD_REDIRECT_URI") # Security settings SECRET_KEY: str = os.getenv("SECRET_KEY", "development-secret-key-change-in-production") SESSION_EXPIRE_HOURS: int = int(os.getenv("SESSION_EXPIRE_HOURS", "24")) # Application settings DEBUG: bool = os.getenv("DEBUG", "false").lower() == "true" ENVIRONMENT: str = os.getenv("ENVIRONMENT", "development") # Game settings MAX_CONCURRENT_GAMES: int = int(os.getenv("MAX_CONCURRENT_GAMES", "100")) GAME_TIMEOUT_HOURS: int = int(os.getenv("GAME_TIMEOUT_HOURS", "4")) # Global settings instance settings = Settings() # Constants migrated from Discord app class GameConstants: """Game constants migrated from Discord app constants.py""" # Season Configuration (from Discord app) SBA_SEASON = 11 PD_SEASON = 9 LIVE_CARDSET_ID = 24 LIVE_PROMO_CARDSET_ID = 25 MAX_CARDSET_ID = 30 # Ranked cardsets for web app RANKED_CARDSETS = [20, 21, 22, 17, 18, 19] # Application Configuration SBA_COLOR = 'a6ce39' PD_PLAYERS = 'Paper Dynasty Players' # External URLs and Resources PD_IMAGE_BUCKET = 'https://paper-dynasty.s3.us-east-1.amazonaws.com/static-images' # Player Rarity Values (from Discord app) RARITY = { 'HoF': 8, 'MVP': 5, 'All-Star': 3, 'Starter': 2, 'Reserve': 1, 'Replacement': 0 } # Color Definitions COLORS = { 'sba': int('a6ce39', 16), 'yellow': int('FFEA00', 16), 'red': int('C70039', 16), 'white': int('FFFFFF', 16) } # MLB Teams Lookup (migrated from Discord app) ALL_MLB_TEAMS = { 'Arizona Diamondbacks': ['ARI', 'Diamondbacks'], 'Atlanta Braves': ['ATL', 'MLN', 'Braves'], 'Baltimore Orioles': ['BAL', 'Orioles'], 'Boston Red Sox': ['BOS', 'Red Sox'], 'Chicago Cubs': ['CHC', 'Cubs'], 'Chicago White Sox': ['CHW', 'White Sox'], 'Cincinnati Reds': ['CIN', 'Reds'], 'Cleveland Guardians': ['CLE', 'Guardians'], 'Colorado Rockies': ['COL', 'Rockies'], 'Detroit Tigers': ['DET', 'Tigers'], 'Houston Astros': ['HOU', 'Astros'], 'Kansas City Royals': ['KCR', 'Royals'], 'Los Angeles Angels': ['LAA', 'CAL', 'Angels'], 'Los Angeles Dodgers': ['LAD', 'Dodgers'], 'Miami Marlins': ['MIA', 'Marlins'], 'Milwaukee Brewers': ['MIL', 'MKE', 'Brewers'], 'Minnesota Twins': ['MIN', 'Twins'], 'New York Mets': ['NYM', 'Mets'], 'New York Yankees': ['NYY', 'Yankees'], 'Oakland Athletics': ['OAK', 'Athletics'], 'Philadelphia Phillies': ['PHI', 'Phillies'], 'Pittsburgh Pirates': ['PIT', 'Pirates'], 'San Diego Padres': ['SDP', 'Padres'], 'Seattle Mariners': ['SEA', 'Mariners'], 'San Francisco Giants': ['SFG', 'Giants'], 'St Louis Cardinals': ['STL', 'Cardinals'], 'Tampa Bay Rays': ['TBR', 'Rays'], 'Texas Rangers': ['TEX', 'Senators', 'Rangers'], 'Toronto Blue Jays': ['TOR', 'Jays'], 'Washington Nationals': ['WSN', 'WAS', 'Nationals'], } # Type Definitions (from Discord app) DEFENSE_LITERAL = Literal['Pitcher', 'Catcher', 'First Base', 'Second Base', 'Third Base', 'Shortstop', 'Left Field', 'Center Field', 'Right Field'] DEFENSE_NO_PITCHER_LITERAL = Literal['Catcher', 'First Base', 'Second Base', 'Third Base', 'Shortstop', 'Left Field', 'Center Field', 'Right Field']