mirror of
https://github.com/mealie-recipes/mealie.git
synced 2025-08-02 20:15:24 +02:00
feat: plural foods and units, and aliases (#2674)
* added plural names and alias tables to foods/units
* updated models to include plural names and aliases
* updated parser to include plural and aliases
* fixed migrations
* fixed recursive models
* added plural abbreviation to migration
* updated parser and display prop
* update displays to use plurals
* fix display edgecase and remove print
* added/updated display tests
* fixed model bug and added parser tests
* added tests for aliases
* added new plural options to data management page
* removed unique constraint
* made base dialog more customizable
* added alias management to food and unit data pages
* removed unused awaits
* 🧹
This commit is contained in:
parent
4b55b838ed
commit
d440d51ffe
17 changed files with 1181 additions and 104 deletions
|
@ -10,7 +10,7 @@ from dataclasses import dataclass
|
|||
from typing import Any
|
||||
|
||||
import sqlalchemy as sa
|
||||
from sqlalchemy.orm import Session
|
||||
from sqlalchemy.orm import Session, load_only
|
||||
|
||||
import mealie.db.migration_types
|
||||
from alembic import op
|
||||
|
@ -44,7 +44,7 @@ def _is_postgres():
|
|||
|
||||
def _get_duplicates(session: Session, model: SqlAlchemyBase) -> defaultdict[str, list[str]]:
|
||||
duplicate_map: defaultdict[str, list[str]] = defaultdict(list)
|
||||
for obj in session.query(model).all():
|
||||
for obj in session.query(model).options(load_only(model.id, model.group_id, model.name)).all():
|
||||
key = f"{obj.group_id}$${obj.name}"
|
||||
duplicate_map[key].append(str(obj.id))
|
||||
|
||||
|
@ -117,9 +117,9 @@ def _resolve_duplivate_foods_units_labels():
|
|||
continue
|
||||
|
||||
keep_id = ids[0]
|
||||
keep_obj = session.query(model).filter_by(id=keep_id).first()
|
||||
keep_obj = session.query(model).options(load_only(model.id)).filter_by(id=keep_id).first()
|
||||
for dupe_id in ids[1:]:
|
||||
dupe_obj = session.query(model).filter_by(id=dupe_id).first()
|
||||
dupe_obj = session.query(model).options(load_only(model.id)).filter_by(id=dupe_id).first()
|
||||
resolve_func(session, keep_obj, dupe_obj)
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue