解决跨越问题
parent
31812c706d
commit
6699538e0a
|
|
@ -1,28 +1,38 @@
|
||||||
"""
|
"""
|
||||||
Application configuration
|
Application configuration
|
||||||
"""
|
"""
|
||||||
from pydantic_settings import BaseSettings
|
from typing import Union
|
||||||
from pydantic import Field, field_validator
|
from pydantic_settings import BaseSettings, SettingsConfigDict
|
||||||
|
from pydantic import Field, field_validator, ValidationInfo
|
||||||
|
|
||||||
|
|
||||||
|
def parse_cors_origins(v: Union[str, list]) -> list[str]:
|
||||||
|
"""Parse CORS origins from comma-separated string or list"""
|
||||||
|
if isinstance(v, str):
|
||||||
|
# Parse comma-separated string
|
||||||
|
return [origin.strip() for origin in v.split(',') if origin.strip()]
|
||||||
|
if isinstance(v, list):
|
||||||
|
return v
|
||||||
|
return ["*"]
|
||||||
|
|
||||||
|
|
||||||
class Settings(BaseSettings):
|
class Settings(BaseSettings):
|
||||||
"""Application settings"""
|
"""Application settings"""
|
||||||
|
|
||||||
|
model_config = SettingsConfigDict(env_file=".env")
|
||||||
|
|
||||||
# Application
|
# Application
|
||||||
app_name: str = "Cosmo - Deep Space Explorer"
|
app_name: str = "Cosmo - Deep Space Explorer"
|
||||||
api_prefix: str = "/api"
|
api_prefix: str = "/api"
|
||||||
|
|
||||||
# CORS settings - allow all origins for development (IP access support)
|
# CORS settings - allow all origins for development (IP access support)
|
||||||
cors_origins: list[str] = ["*"]
|
cors_origins: list[str] = Field(default_factory=lambda: ["*"])
|
||||||
|
|
||||||
@field_validator('cors_origins', mode='before')
|
@field_validator('cors_origins', mode='before')
|
||||||
@classmethod
|
@classmethod
|
||||||
def parse_cors_origins(cls, v):
|
def validate_cors_origins(cls, v: Union[str, list], info: ValidationInfo) -> list[str]:
|
||||||
"""Parse CORS origins from comma-separated string or JSON array"""
|
"""Parse CORS origins from comma-separated string or JSON array"""
|
||||||
if isinstance(v, str):
|
return parse_cors_origins(v)
|
||||||
# Parse comma-separated string
|
|
||||||
return [origin.strip() for origin in v.split(',') if origin.strip()]
|
|
||||||
return v
|
|
||||||
|
|
||||||
# Cache settings
|
# Cache settings
|
||||||
cache_ttl_days: int = 3
|
cache_ttl_days: int = 3
|
||||||
|
|
@ -67,8 +77,5 @@ class Settings(BaseSettings):
|
||||||
return f"redis://:{self.redis_password}@{self.redis_host}:{self.redis_port}/{self.redis_db}"
|
return f"redis://:{self.redis_password}@{self.redis_host}:{self.redis_port}/{self.redis_db}"
|
||||||
return f"redis://{self.redis_host}:{self.redis_port}/{self.redis_db}"
|
return f"redis://{self.redis_host}:{self.redis_port}/{self.redis_db}"
|
||||||
|
|
||||||
class Config:
|
|
||||||
env_file = ".env"
|
|
||||||
|
|
||||||
|
|
||||||
settings = Settings()
|
settings = Settings()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue