Spaces:
Build error
Build error
import enum | |
import os | |
from typing import List, Optional | |
import yaml | |
from pydantic import ( | |
AnyHttpUrl, | |
BaseSettings, | |
EmailStr, | |
PostgresDsn, | |
) | |
class Settings(BaseSettings): | |
API_V1_STR: str | |
SECRET_KEY: str | |
SESSION_EXPIRE_TIME: int | |
SESSION_EXPIRE_TIME_EXTENDED: int | |
TWO_FA_TIMEOUT: int | |
PASSWORD_LESS_CREATE_TIMEOUT: int | |
SERVER_NAME: str | |
PROTOCOL = "http" | |
#PROTOCAL: str | |
MODE: str | |
BACKEND_HOST: str | |
BACKEND_PORT: int | |
def BACKEND_URL_BASE(self): | |
if self.BACKEND_PORT == 80: | |
return f"{self.PROTOCOL}://{self.BACKEND_HOST}" | |
else: | |
return f"{self.PROTOCOL}://{self.BACKEND_HOST}:{self.BACKEND_PORT}" | |
STATIC_HOST: str | |
STATIC_PORT: int | |
def STATIC_URL_BASE(self): | |
if self.STATIC_PORT == 80: | |
return f"{self.PROTOCOL}://{self.STATIC_HOST}" | |
else: | |
return f"{self.PROTOCOL}://{self.STATIC_HOST}:{self.STATIC_PORT}" | |
FRONTEND_HOST: str | |
FRONTEND_PORT: int | |
def FRONTEND_URL_BASE(self): | |
if self.FRONTEND_PORT == 80: | |
return f"{self.PROTOCOL}://{self.FRONTEND_HOST}" | |
else: | |
return f"{self.PROTOCOL}://{self.FRONTEND_HOST}:{self.FRONTEND_PORT}" | |
UPLOAD_DIR_ROOT: str | |
WORKERS: int | |
def DEV_MODE(self): | |
if self.MODE == "dev": | |
return True | |
else: | |
return False | |
BACKEND_CORS_ORIGINS: List[AnyHttpUrl] | |
ALLOWED_EMAIL_HOST: List[str] | |
PROJECT_NAME: str | |
POSTGRES_SERVER: str | |
POSTGRES_USER: str | |
POSTGRES_PASSWORD: str | |
POSTGRES_DB: str | |
def POSTGRES_DATABASE_URI(self): | |
return PostgresDsn.build( | |
scheme="postgresql", | |
user=self.POSTGRES_USER, | |
password=self.POSTGRES_PASSWORD, | |
host=self.POSTGRES_SERVER, | |
path=f"/{self.POSTGRES_DB or ''}", | |
) | |
REDIS_HOST: str | |
REDIS_PORT: str | |
REDIS_PASSWORD: str | |
SMTP_TLS: bool | |
SMTP_PORT: Optional[int] | |
SMTP_HOST: Optional[str] | |
SMTP_USER: Optional[str] | |
SMTP_PASSWORD: Optional[str] | |
EMAILS_FROM_EMAIL: Optional[EmailStr] | |
def EMAILS_FROM_NAME(self): | |
return self.PROJECT_NAME | |
EMAIL_RESET_TOKEN_EXPIRE_HOURS: int = 48 | |
EMAIL_VERIFY_EXPIRE_HOURS: int = 48 | |
EMAIL_TEMPLATES_DIR: str | |
def EMAILS_ENABLED(self): | |
return bool( | |
self.SMTP_HOST | |
and self.SMTP_PORT | |
and self.EMAILS_FROM_EMAIL | |
) | |
FIRST_SUPERUSER: EmailStr | |
FIRST_SUPERUSER_PASSWORD: str | |
USERS_OPEN_REGISTRATION: bool | |
class UserType(enum.Enum): | |
SUPERADMIN: int = 1 | |
ADMIN: int = 2 | |
TEACHER: int = 3 | |
STUDENT: int = 4 | |
class Config: | |
case_sensitive = True | |
configs = {} | |
with open("etc/base.yml", "r") as base_config_file: | |
configs = yaml.load(base_config_file.read(), yaml.Loader) | |
config_path = os.environ.get("CONFIG_PATH") or "etc/dev.yml" | |
with open(config_path, "r") as config_file: | |
custom_configs = yaml.load(config_file.read(), yaml.Loader) | |
configs.update(custom_configs) | |
settings = Settings(**configs) | |