mirror of
https://github.com/mealie-recipes/mealie.git
synced 2025-07-09 03:04:54 -04:00
fixes #314
This commit is contained in:
parent
40fb5600b2
commit
50728a67b4
@ -2,6 +2,7 @@ from typing import List
|
|||||||
|
|
||||||
from mealie.db.models.model_base import SqlAlchemyBase
|
from mealie.db.models.model_base import SqlAlchemyBase
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
|
from sqlalchemy import func
|
||||||
from sqlalchemy.orm import load_only
|
from sqlalchemy.orm import load_only
|
||||||
from sqlalchemy.orm.session import Session
|
from sqlalchemy.orm.session import Session
|
||||||
|
|
||||||
@ -64,7 +65,9 @@ class BaseDocument:
|
|||||||
|
|
||||||
return session.query(self.sql_model).filter_by(**{match_key: match_value}).one()
|
return session.query(self.sql_model).filter_by(**{match_key: match_value}).one()
|
||||||
|
|
||||||
def get(self, session: Session, match_value: str, match_key: str = None, limit=1) -> BaseModel or List[BaseModel]:
|
def get(
|
||||||
|
self, session: Session, match_value: str, match_key: str = None, limit=1, any_case=False
|
||||||
|
) -> BaseModel or List[BaseModel]:
|
||||||
"""Retrieves an entry from the database by matching a key/value pair. If no
|
"""Retrieves an entry from the database by matching a key/value pair. If no
|
||||||
key is provided the class objects primary key will be used to match against.
|
key is provided the class objects primary key will be used to match against.
|
||||||
|
|
||||||
@ -80,7 +83,13 @@ class BaseDocument:
|
|||||||
if match_key is None:
|
if match_key is None:
|
||||||
match_key = self.primary_key
|
match_key = self.primary_key
|
||||||
|
|
||||||
result = session.query(self.sql_model).filter_by(**{match_key: match_value}).limit(limit).all()
|
if any_case:
|
||||||
|
search_attr = getattr(self.sql_model, match_key)
|
||||||
|
result = (
|
||||||
|
session.query(self.sql_model).filter(func.lower(search_attr) == match_value.lower()).limit(limit).all()
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
result = session.query(self.sql_model).filter_by(**{match_key: match_value}).limit(limit).all()
|
||||||
|
|
||||||
if limit == 1:
|
if limit == 1:
|
||||||
try:
|
try:
|
||||||
|
@ -6,6 +6,7 @@ from mealie.db.models.group import Group
|
|||||||
from mealie.db.models.users import User
|
from mealie.db.models.users import User
|
||||||
from mealie.schema.category import CategoryBase
|
from mealie.schema.category import CategoryBase
|
||||||
from mealie.schema.meal import MealPlanInDB
|
from mealie.schema.meal import MealPlanInDB
|
||||||
|
from pydantic.types import constr
|
||||||
from pydantic.utils import GetterDict
|
from pydantic.utils import GetterDict
|
||||||
|
|
||||||
|
|
||||||
@ -23,7 +24,7 @@ class GroupBase(CamelModel):
|
|||||||
|
|
||||||
class UserBase(CamelModel):
|
class UserBase(CamelModel):
|
||||||
full_name: Optional[str] = None
|
full_name: Optional[str] = None
|
||||||
email: str
|
email: constr(to_lower=True, strip_whitespace=True)
|
||||||
admin: bool
|
admin: bool
|
||||||
group: Optional[str]
|
group: Optional[str]
|
||||||
|
|
||||||
@ -31,7 +32,7 @@ class UserBase(CamelModel):
|
|||||||
orm_mode = True
|
orm_mode = True
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def getter_dict(_cls, name_orm: User):
|
def getter_dict(cls, name_orm: User):
|
||||||
return {
|
return {
|
||||||
**GetterDict(name_orm),
|
**GetterDict(name_orm),
|
||||||
"group": name_orm.group.name,
|
"group": name_orm.group.name,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user