mirror of
https://github.com/mealie-recipes/mealie.git
synced 2026-02-06 16:03:12 -05:00
@@ -1,7 +1,8 @@
|
||||
from abc import ABC, abstractmethod
|
||||
from pathlib import Path
|
||||
|
||||
from pydantic import BaseModel, BaseSettings, PostgresDsn
|
||||
from pydantic import BaseModel, PostgresDsn
|
||||
from pydantic_settings import BaseSettings, SettingsConfigDict
|
||||
|
||||
|
||||
class AbstractDBProvider(ABC):
|
||||
@@ -38,15 +39,19 @@ class PostgresProvider(AbstractDBProvider, BaseSettings):
|
||||
POSTGRES_PORT: str = "5432"
|
||||
POSTGRES_DB: str = "mealie"
|
||||
|
||||
model_config = SettingsConfigDict(arbitrary_types_allowed=True, extra="allow")
|
||||
|
||||
@property
|
||||
def db_url(self) -> str:
|
||||
host = f"{self.POSTGRES_SERVER}:{self.POSTGRES_PORT}"
|
||||
return PostgresDsn.build(
|
||||
scheme="postgresql",
|
||||
user=self.POSTGRES_USER,
|
||||
password=self.POSTGRES_PASSWORD,
|
||||
host=host,
|
||||
path=f"/{self.POSTGRES_DB or ''}",
|
||||
return str(
|
||||
PostgresDsn.build(
|
||||
scheme="postgresql",
|
||||
username=self.POSTGRES_USER,
|
||||
password=self.POSTGRES_PASSWORD,
|
||||
host=host,
|
||||
path=f"{self.POSTGRES_DB or ''}",
|
||||
)
|
||||
)
|
||||
|
||||
@property
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
import secrets
|
||||
from pathlib import Path
|
||||
|
||||
from pydantic import BaseSettings, NoneStr, validator
|
||||
from pydantic import field_validator
|
||||
from pydantic_settings import BaseSettings, SettingsConfigDict
|
||||
|
||||
from mealie.core.settings.themes import Theme
|
||||
|
||||
@@ -55,7 +56,8 @@ class AppSettings(BaseSettings):
|
||||
SECURITY_USER_LOCKOUT_TIME: int = 24
|
||||
"time in hours"
|
||||
|
||||
@validator("BASE_URL")
|
||||
@field_validator("BASE_URL")
|
||||
@classmethod
|
||||
def remove_trailing_slash(cls, v: str) -> str:
|
||||
if v and v[-1] == "/":
|
||||
return v[:-1]
|
||||
@@ -100,12 +102,12 @@ class AppSettings(BaseSettings):
|
||||
# ===============================================
|
||||
# Email Configuration
|
||||
|
||||
SMTP_HOST: str | None
|
||||
SMTP_HOST: str | None = None
|
||||
SMTP_PORT: str | None = "587"
|
||||
SMTP_FROM_NAME: str | None = "Mealie"
|
||||
SMTP_FROM_EMAIL: str | None
|
||||
SMTP_USER: str | None
|
||||
SMTP_PASSWORD: str | None
|
||||
SMTP_FROM_EMAIL: str | None = None
|
||||
SMTP_USER: str | None = None
|
||||
SMTP_PASSWORD: str | None = None
|
||||
SMTP_AUTH_STRATEGY: str | None = "TLS" # Options: 'TLS', 'SSL', 'NONE'
|
||||
|
||||
@property
|
||||
@@ -122,11 +124,11 @@ class AppSettings(BaseSettings):
|
||||
|
||||
@staticmethod
|
||||
def validate_smtp(
|
||||
host: str | None,
|
||||
port: str | None,
|
||||
from_name: str | None,
|
||||
from_email: str | None,
|
||||
strategy: str | None,
|
||||
host: str | None = None,
|
||||
port: str | None = None,
|
||||
from_name: str | None = None,
|
||||
from_email: str | None = None,
|
||||
strategy: str | None = None,
|
||||
user: str | None = None,
|
||||
password: str | None = None,
|
||||
) -> bool:
|
||||
@@ -143,15 +145,15 @@ class AppSettings(BaseSettings):
|
||||
# LDAP Configuration
|
||||
|
||||
LDAP_AUTH_ENABLED: bool = False
|
||||
LDAP_SERVER_URL: NoneStr = None
|
||||
LDAP_SERVER_URL: str | None = None
|
||||
LDAP_TLS_INSECURE: bool = False
|
||||
LDAP_TLS_CACERTFILE: NoneStr = None
|
||||
LDAP_TLS_CACERTFILE: str | None = None
|
||||
LDAP_ENABLE_STARTTLS: bool = False
|
||||
LDAP_BASE_DN: NoneStr = None
|
||||
LDAP_QUERY_BIND: NoneStr = None
|
||||
LDAP_QUERY_PASSWORD: NoneStr = None
|
||||
LDAP_USER_FILTER: NoneStr = None
|
||||
LDAP_ADMIN_FILTER: NoneStr = None
|
||||
LDAP_BASE_DN: str | None = None
|
||||
LDAP_QUERY_BIND: str | None = None
|
||||
LDAP_QUERY_PASSWORD: str | None = None
|
||||
LDAP_USER_FILTER: str | None = None
|
||||
LDAP_ADMIN_FILTER: str | None = None
|
||||
LDAP_ID_ATTRIBUTE: str = "uid"
|
||||
LDAP_MAIL_ATTRIBUTE: str = "mail"
|
||||
LDAP_NAME_ATTRIBUTE: str = "name"
|
||||
@@ -173,9 +175,7 @@ class AppSettings(BaseSettings):
|
||||
# Testing Config
|
||||
|
||||
TESTING: bool = False
|
||||
|
||||
class Config:
|
||||
arbitrary_types_allowed = True
|
||||
model_config = SettingsConfigDict(arbitrary_types_allowed=True, extra="allow")
|
||||
|
||||
|
||||
def app_settings_constructor(data_dir: Path, production: bool, env_file: Path, env_encoding="utf-8") -> AppSettings:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from pydantic import BaseSettings
|
||||
from pydantic_settings import BaseSettings, SettingsConfigDict
|
||||
|
||||
|
||||
class Theme(BaseSettings):
|
||||
@@ -17,6 +17,4 @@ class Theme(BaseSettings):
|
||||
dark_info: str = "#1976D2"
|
||||
dark_warning: str = "#FF6D00"
|
||||
dark_error: str = "#EF5350"
|
||||
|
||||
class Config:
|
||||
env_prefix = "theme_"
|
||||
model_config = SettingsConfigDict(env_prefix="theme_", extra="allow")
|
||||
|
||||
Reference in New Issue
Block a user