mirror of
https://github.com/mealie-recipes/mealie.git
synced 2025-05-24 01:12:54 -04:00
ugggghghhhhh
This commit is contained in:
parent
be372dbc51
commit
206f92cdda
@ -2,7 +2,7 @@ from abc import ABC, abstractmethod
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
from pydantic import BaseModel, PostgresDsn
|
from pydantic import BaseModel, PostgresDsn
|
||||||
from pydantic_settings import BaseSettings
|
from pydantic_settings import BaseSettings, SettingsConfigDict
|
||||||
|
|
||||||
|
|
||||||
class AbstractDBProvider(ABC):
|
class AbstractDBProvider(ABC):
|
||||||
@ -35,6 +35,8 @@ class SQLiteProvider(AbstractDBProvider, BaseModel):
|
|||||||
|
|
||||||
|
|
||||||
class PostgresProvider(AbstractDBProvider, BaseSettings):
|
class PostgresProvider(AbstractDBProvider, BaseSettings):
|
||||||
|
model_config = SettingsConfigDict(strict=False, arbitrary_types_allowed=True, extra="ignore")
|
||||||
|
|
||||||
POSTGRES_USER: str = "mealie"
|
POSTGRES_USER: str = "mealie"
|
||||||
POSTGRES_PASSWORD: str = "mealie"
|
POSTGRES_PASSWORD: str = "mealie"
|
||||||
POSTGRES_SERVER: str = "postgres"
|
POSTGRES_SERVER: str = "postgres"
|
||||||
@ -46,7 +48,7 @@ class PostgresProvider(AbstractDBProvider, BaseSettings):
|
|||||||
host = f"{self.POSTGRES_SERVER}:{self.POSTGRES_PORT}"
|
host = f"{self.POSTGRES_SERVER}:{self.POSTGRES_PORT}"
|
||||||
return PostgresDsn.build(
|
return PostgresDsn.build(
|
||||||
scheme="postgresql",
|
scheme="postgresql",
|
||||||
user=self.POSTGRES_USER,
|
username=self.POSTGRES_USER,
|
||||||
password=self.POSTGRES_PASSWORD,
|
password=self.POSTGRES_PASSWORD,
|
||||||
host=host,
|
host=host,
|
||||||
path=f"/{self.POSTGRES_DB or ''}",
|
path=f"/{self.POSTGRES_DB or ''}",
|
||||||
|
@ -87,7 +87,7 @@ class AppSettings(BaseSettings):
|
|||||||
# Email Configuration
|
# Email Configuration
|
||||||
|
|
||||||
SMTP_HOST: str | None
|
SMTP_HOST: str | None
|
||||||
SMTP_PORT: str | None = "587"
|
SMTP_PORT: str = "587"
|
||||||
SMTP_FROM_NAME: str | None = "Mealie"
|
SMTP_FROM_NAME: str | None = "Mealie"
|
||||||
SMTP_FROM_EMAIL: str | None
|
SMTP_FROM_EMAIL: str | None
|
||||||
SMTP_USER: str | None
|
SMTP_USER: str | None
|
||||||
@ -159,7 +159,7 @@ class AppSettings(BaseSettings):
|
|||||||
# Testing Config
|
# Testing Config
|
||||||
|
|
||||||
TESTING: bool = False
|
TESTING: bool = False
|
||||||
model_config = SettingsConfigDict(arbitrary_types_allowed=True)
|
model_config = SettingsConfigDict(strict=False, arbitrary_types_allowed=True, extra="ignore")
|
||||||
|
|
||||||
|
|
||||||
def app_settings_constructor(data_dir: Path, production: bool, env_file: Path, env_encoding="utf-8") -> AppSettings:
|
def app_settings_constructor(data_dir: Path, production: bool, env_file: Path, env_encoding="utf-8") -> AppSettings:
|
||||||
|
@ -2,6 +2,7 @@ from collections.abc import Generator
|
|||||||
from contextlib import contextmanager
|
from contextlib import contextmanager
|
||||||
|
|
||||||
import sqlalchemy as sa
|
import sqlalchemy as sa
|
||||||
|
from pydantic_core import MultiHostUrl
|
||||||
from sqlalchemy.orm import sessionmaker
|
from sqlalchemy.orm import sessionmaker
|
||||||
from sqlalchemy.orm.session import Session
|
from sqlalchemy.orm.session import Session
|
||||||
|
|
||||||
@ -10,12 +11,17 @@ from mealie.core.config import get_app_settings
|
|||||||
settings = get_app_settings()
|
settings = get_app_settings()
|
||||||
|
|
||||||
|
|
||||||
def sql_global_init(db_url: str):
|
def sql_global_init(db_url: MultiHostUrl | str):
|
||||||
connect_args = {}
|
connect_args = {}
|
||||||
if "sqlite" in db_url:
|
|
||||||
|
con_url = ""
|
||||||
|
if type(db_url) is MultiHostUrl:
|
||||||
|
con_url = db_url.unicode_string()
|
||||||
|
else: # Sqlite
|
||||||
|
con_url = db_url
|
||||||
connect_args["check_same_thread"] = False
|
connect_args["check_same_thread"] = False
|
||||||
|
|
||||||
engine = sa.create_engine(db_url, echo=False, connect_args=connect_args, pool_pre_ping=True, future=True)
|
engine = sa.create_engine(con_url, echo=False, connect_args=connect_args, pool_pre_ping=True, future=True)
|
||||||
|
|
||||||
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine, future=True)
|
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine, future=True)
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
from functools import wraps
|
from functools import wraps
|
||||||
from uuid import UUID
|
from uuid import UUID
|
||||||
|
|
||||||
from pydantic import BaseModel, Field, NoneStr
|
from pydantic import BaseModel, Field
|
||||||
from sqlalchemy import select
|
from sqlalchemy import select
|
||||||
from sqlalchemy.orm import MANYTOMANY, MANYTOONE, ONETOMANY, Session
|
from sqlalchemy.orm import MANYTOMANY, MANYTOONE, ONETOMANY, Session
|
||||||
from sqlalchemy.orm.mapper import Mapper
|
from sqlalchemy.orm.mapper import Mapper
|
||||||
@ -21,7 +21,7 @@ class AutoInitConfig(BaseModel):
|
|||||||
Config class for `auto_init` decorator.
|
Config class for `auto_init` decorator.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
get_attr: NoneStr = None
|
get_attr: str | None = None
|
||||||
exclude: set = Field(default_factory=_default_exclusion)
|
exclude: set = Field(default_factory=_default_exclusion)
|
||||||
# auto_create: bool = False
|
# auto_create: bool = False
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
from pydantic import UUID4, ConfigDict, NoneStr
|
from pydantic import UUID4, ConfigDict
|
||||||
from sqlalchemy.orm import joinedload
|
from sqlalchemy.orm import joinedload
|
||||||
from sqlalchemy.orm.interfaces import LoaderOption
|
from sqlalchemy.orm.interfaces import LoaderOption
|
||||||
|
|
||||||
@ -74,7 +74,7 @@ class GroupEventNotifierSave(GroupEventNotifierCreate):
|
|||||||
|
|
||||||
class GroupEventNotifierUpdate(GroupEventNotifierSave):
|
class GroupEventNotifierUpdate(GroupEventNotifierSave):
|
||||||
id: UUID4
|
id: UUID4
|
||||||
apprise_url: NoneStr = None
|
apprise_url: str | None = None
|
||||||
|
|
||||||
|
|
||||||
class GroupEventNotifierOut(MealieModel):
|
class GroupEventNotifierOut(MealieModel):
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
from uuid import UUID
|
from uuid import UUID
|
||||||
|
|
||||||
from pydantic import ConfigDict, NoneStr
|
from pydantic import ConfigDict
|
||||||
|
|
||||||
from mealie.schema._mealie import MealieModel
|
from mealie.schema._mealie import MealieModel
|
||||||
|
|
||||||
@ -29,4 +29,4 @@ class EmailInvitation(MealieModel):
|
|||||||
|
|
||||||
class EmailInitationResponse(MealieModel):
|
class EmailInitationResponse(MealieModel):
|
||||||
success: bool
|
success: bool
|
||||||
error: NoneStr = None
|
error: str | None = None
|
||||||
|
@ -1,15 +1,14 @@
|
|||||||
from typing import Annotated
|
from typing import Annotated
|
||||||
|
|
||||||
from pydantic import StringConstraints, validator
|
from pydantic import StringConstraints, validator
|
||||||
from pydantic.types import NoneStr
|
|
||||||
|
|
||||||
from mealie.schema._mealie import MealieModel
|
from mealie.schema._mealie import MealieModel
|
||||||
from mealie.schema._mealie.validators import validate_locale
|
from mealie.schema._mealie.validators import validate_locale
|
||||||
|
|
||||||
|
|
||||||
class CreateUserRegistration(MealieModel):
|
class CreateUserRegistration(MealieModel):
|
||||||
group: NoneStr = None
|
group: str | None = None
|
||||||
group_token: NoneStr = None
|
group_token: str | None = None
|
||||||
email: Annotated[str, StringConstraints(to_lower=True, strip_whitespace=True)] # type: ignore
|
email: Annotated[str, StringConstraints(to_lower=True, strip_whitespace=True)] # type: ignore
|
||||||
username: Annotated[str, StringConstraints(to_lower=True, strip_whitespace=True)] # type: ignore
|
username: Annotated[str, StringConstraints(to_lower=True, strip_whitespace=True)] # type: ignore
|
||||||
password: str
|
password: str
|
||||||
|
Loading…
x
Reference in New Issue
Block a user