mirror of
https://github.com/mealie-recipes/mealie.git
synced 2025-12-26 20:25:11 -05:00
fix(backend): 🐛 Fix recipe page issues (#778)
* fix(backend): 🐛 Fix favorite assignment on backend * fix(frontend): 🐛 fix printer button on recipe page * style(frontend): 🚸 add user feadback on copy of recipe link * fix(frontend): 🐛 Fix enableLandscape incorrect bindings to remove duplicate values * feat(frontend): ✨ add ingredient copy button for markdown list -[ ] format * feat(frontend): ✨ add remove prefix button to bulk entry * fix(frontend): 🐛 disable random button when no recipes are present * fix(frontend): ✨ fix .zip download error * fix(frontend): 🚸 close image dialog on upload/get * fix(frontend): 🐛 fix assignment on creation for categories and tags * feat(frontend): ✨ Open editor on creation / fix edit button on main screen * fix(frontend): 🐛 fix false negative regex match for urls on creationg page * feat(frontend): 🚸 provide better user feadback when recipe exists * feat(frontend): ✨ lock bulk importer on submit * remove zip from navigation * fix(frontend): ✨ rerender recipes on delete Co-authored-by: Hayden K <hay-kot@pm.me>
This commit is contained in:
@@ -74,23 +74,23 @@ def handle_many_to_many(session, get_attr, relation_cls, all_elements: list[dict
|
||||
return handle_one_to_many_list(session, get_attr, relation_cls, all_elements)
|
||||
|
||||
|
||||
def handle_one_to_many_list(session: Session, get_attr, relation_cls, all_elements: list[dict]):
|
||||
def handle_one_to_many_list(session: Session, get_attr, relation_cls, all_elements: list[dict] | list[str]):
|
||||
elems_to_create: list[dict] = []
|
||||
updated_elems: list[dict] = []
|
||||
|
||||
for elem in all_elements:
|
||||
elem_id = elem.get(get_attr, None)
|
||||
|
||||
elem_id = elem.get(get_attr, None) if isinstance(elem, dict) else elem
|
||||
existing_elem = session.query(relation_cls).filter_by(**{get_attr: elem_id}).one_or_none()
|
||||
|
||||
if existing_elem is None:
|
||||
elems_to_create.append(elem)
|
||||
continue
|
||||
|
||||
else:
|
||||
elif isinstance(elem, dict):
|
||||
for key, value in elem.items():
|
||||
setattr(existing_elem, key, value)
|
||||
|
||||
updated_elems.append(existing_elem)
|
||||
updated_elems.append(existing_elem)
|
||||
|
||||
new_elems = [safe_call(relation_cls, elem) for elem in elems_to_create]
|
||||
return new_elems + updated_elems
|
||||
|
||||
@@ -3,6 +3,7 @@ from sqlalchemy import Boolean, Column, ForeignKey, Integer, String, orm
|
||||
from mealie.core.config import get_app_settings
|
||||
|
||||
from .._model_base import BaseMixins, SqlAlchemyBase
|
||||
from .._model_utils import auto_init
|
||||
from ..group import Group
|
||||
from .user_to_favorite import users_to_favorites
|
||||
|
||||
@@ -56,41 +57,37 @@ class User(SqlAlchemyBase, BaseMixins):
|
||||
|
||||
favorite_recipes = orm.relationship("RecipeModel", secondary=users_to_favorites, back_populates="favorited_by")
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
session,
|
||||
full_name,
|
||||
email,
|
||||
password,
|
||||
favorite_recipes: list[str] = None,
|
||||
group: str = settings.DEFAULT_GROUP,
|
||||
advanced=False,
|
||||
**kwargs
|
||||
) -> None:
|
||||
group = group or settings.DEFAULT_GROUP
|
||||
favorite_recipes = favorite_recipes or []
|
||||
class Config:
|
||||
exclude = {
|
||||
"password",
|
||||
"admin",
|
||||
"can_manage",
|
||||
"can_invite",
|
||||
"can_organize",
|
||||
"group",
|
||||
"username",
|
||||
}
|
||||
|
||||
@auto_init()
|
||||
def __init__(self, session, full_name, password, group: str = settings.DEFAULT_GROUP, **kwargs) -> None:
|
||||
self.group = Group.get_ref(session, group)
|
||||
|
||||
self.full_name = full_name
|
||||
self.email = email
|
||||
self.password = password
|
||||
self.advanced = advanced
|
||||
|
||||
self.favorite_recipes = []
|
||||
|
||||
self.password = password
|
||||
|
||||
if self.username is None:
|
||||
self.username = full_name
|
||||
|
||||
self._set_permissions(**kwargs)
|
||||
|
||||
def update(self, full_name, email, group, username, session=None, favorite_recipes=None, advanced=False, **kwargs):
|
||||
favorite_recipes = favorite_recipes or []
|
||||
@auto_init()
|
||||
def update(self, full_name, email, group, username, session=None, **kwargs):
|
||||
self.username = username
|
||||
self.full_name = full_name
|
||||
self.email = email
|
||||
|
||||
self.group = Group.get_ref(session, group)
|
||||
self.advanced = advanced
|
||||
|
||||
if self.username is None:
|
||||
self.username = full_name
|
||||
|
||||
Reference in New Issue
Block a user