From 206f92cddadb88de1e7b374cc9e3838366b74217 Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Sun, 13 Aug 2023 18:04:12 -0500 Subject: [PATCH] ugggghghhhhh --- mealie/core/settings/db_providers.py | 6 ++++-- mealie/core/settings/settings.py | 4 ++-- mealie/db/db_setup.py | 12 +++++++++--- mealie/db/models/_model_utils/auto_init.py | 4 ++-- mealie/schema/group/group_events.py | 4 ++-- mealie/schema/group/invite_token.py | 4 ++-- mealie/schema/user/registration.py | 5 ++--- 7 files changed, 23 insertions(+), 16 deletions(-) diff --git a/mealie/core/settings/db_providers.py b/mealie/core/settings/db_providers.py index e94781bcddf3..ede4f0f6b6c0 100644 --- a/mealie/core/settings/db_providers.py +++ b/mealie/core/settings/db_providers.py @@ -2,7 +2,7 @@ from abc import ABC, abstractmethod from pathlib import Path from pydantic import BaseModel, PostgresDsn -from pydantic_settings import BaseSettings +from pydantic_settings import BaseSettings, SettingsConfigDict class AbstractDBProvider(ABC): @@ -35,6 +35,8 @@ class SQLiteProvider(AbstractDBProvider, BaseModel): class PostgresProvider(AbstractDBProvider, BaseSettings): + model_config = SettingsConfigDict(strict=False, arbitrary_types_allowed=True, extra="ignore") + POSTGRES_USER: str = "mealie" POSTGRES_PASSWORD: str = "mealie" POSTGRES_SERVER: str = "postgres" @@ -46,7 +48,7 @@ class PostgresProvider(AbstractDBProvider, BaseSettings): host = f"{self.POSTGRES_SERVER}:{self.POSTGRES_PORT}" return PostgresDsn.build( scheme="postgresql", - user=self.POSTGRES_USER, + username=self.POSTGRES_USER, password=self.POSTGRES_PASSWORD, host=host, path=f"/{self.POSTGRES_DB or ''}", diff --git a/mealie/core/settings/settings.py b/mealie/core/settings/settings.py index c7a72bef40f4..2c864b1191c5 100644 --- a/mealie/core/settings/settings.py +++ b/mealie/core/settings/settings.py @@ -87,7 +87,7 @@ class AppSettings(BaseSettings): # Email Configuration SMTP_HOST: str | None - SMTP_PORT: str | None = "587" + SMTP_PORT: str = "587" SMTP_FROM_NAME: str | None = "Mealie" SMTP_FROM_EMAIL: str | None SMTP_USER: str | None @@ -159,7 +159,7 @@ class AppSettings(BaseSettings): # Testing Config 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: diff --git a/mealie/db/db_setup.py b/mealie/db/db_setup.py index e70f36849e8c..b7a14c2ae3c7 100644 --- a/mealie/db/db_setup.py +++ b/mealie/db/db_setup.py @@ -2,6 +2,7 @@ from collections.abc import Generator from contextlib import contextmanager import sqlalchemy as sa +from pydantic_core import MultiHostUrl from sqlalchemy.orm import sessionmaker from sqlalchemy.orm.session import Session @@ -10,12 +11,17 @@ from mealie.core.config import get_app_settings settings = get_app_settings() -def sql_global_init(db_url: str): +def sql_global_init(db_url: MultiHostUrl | str): 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 - 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) diff --git a/mealie/db/models/_model_utils/auto_init.py b/mealie/db/models/_model_utils/auto_init.py index d61308b3f6b4..38386ad9d53e 100644 --- a/mealie/db/models/_model_utils/auto_init.py +++ b/mealie/db/models/_model_utils/auto_init.py @@ -1,7 +1,7 @@ from functools import wraps from uuid import UUID -from pydantic import BaseModel, Field, NoneStr +from pydantic import BaseModel, Field from sqlalchemy import select from sqlalchemy.orm import MANYTOMANY, MANYTOONE, ONETOMANY, Session from sqlalchemy.orm.mapper import Mapper @@ -21,7 +21,7 @@ class AutoInitConfig(BaseModel): Config class for `auto_init` decorator. """ - get_attr: NoneStr = None + get_attr: str | None = None exclude: set = Field(default_factory=_default_exclusion) # auto_create: bool = False diff --git a/mealie/schema/group/group_events.py b/mealie/schema/group/group_events.py index 2d7e4f93b80a..648f57390286 100644 --- a/mealie/schema/group/group_events.py +++ b/mealie/schema/group/group_events.py @@ -1,4 +1,4 @@ -from pydantic import UUID4, ConfigDict, NoneStr +from pydantic import UUID4, ConfigDict from sqlalchemy.orm import joinedload from sqlalchemy.orm.interfaces import LoaderOption @@ -74,7 +74,7 @@ class GroupEventNotifierSave(GroupEventNotifierCreate): class GroupEventNotifierUpdate(GroupEventNotifierSave): id: UUID4 - apprise_url: NoneStr = None + apprise_url: str | None = None class GroupEventNotifierOut(MealieModel): diff --git a/mealie/schema/group/invite_token.py b/mealie/schema/group/invite_token.py index dc59ff0536a4..61e2787f1c02 100644 --- a/mealie/schema/group/invite_token.py +++ b/mealie/schema/group/invite_token.py @@ -1,6 +1,6 @@ from uuid import UUID -from pydantic import ConfigDict, NoneStr +from pydantic import ConfigDict from mealie.schema._mealie import MealieModel @@ -29,4 +29,4 @@ class EmailInvitation(MealieModel): class EmailInitationResponse(MealieModel): success: bool - error: NoneStr = None + error: str | None = None diff --git a/mealie/schema/user/registration.py b/mealie/schema/user/registration.py index 9f6b66597e9a..ad98c8dc47e6 100644 --- a/mealie/schema/user/registration.py +++ b/mealie/schema/user/registration.py @@ -1,15 +1,14 @@ from typing import Annotated from pydantic import StringConstraints, validator -from pydantic.types import NoneStr from mealie.schema._mealie import MealieModel from mealie.schema._mealie.validators import validate_locale class CreateUserRegistration(MealieModel): - group: NoneStr = None - group_token: NoneStr = None + group: str | None = None + group_token: str | None = None email: 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