1
0
Fork 0
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:
Michael Genson 2023-11-14 09:39:07 -06:00 committed by GitHub
parent 4b55b838ed
commit d440d51ffe
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
17 changed files with 1181 additions and 104 deletions

View file

@ -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)