From 4712994242734a990bae156a06a22ea09c581b34 Mon Sep 17 00:00:00 2001 From: Michael Genson <71845777+michael-genson@users.noreply.github.com> Date: Fri, 27 Sep 2024 09:06:45 -0500 Subject: [PATCH] feat: Add Household Filter to Meal Plan Rules (#4231) --- ...cc8_add_households_filter_to_meal_plans.py | 53 ++++++ .../Household/GroupHouseholdSelector.vue | 91 ++++++++++ .../Household/GroupMealPlanRuleForm.vue | 33 +++- frontend/lang/messages/en-US.json | 4 + frontend/lib/api/types/meal-plan.ts | 27 ++- .../pages/household/mealplan/settings.vue | 54 +++++- mealie/db/models/household/mealplan.py | 12 +- mealie/repos/repository_generic.py | 7 + mealie/repos/repository_recipes.py | 25 +-- .../routes/households/controller_mealplan.py | 101 ++++++----- mealie/schema/meal_plan/__init__.py | 12 +- mealie/schema/meal_plan/plan_rules.py | 37 +++- .../test_group_mealplan.py | 164 ++++++++++++++++++ 13 files changed, 533 insertions(+), 87 deletions(-) create mode 100644 alembic/versions/2024-09-18-14.52.55_1fe4bd37ccc8_add_households_filter_to_meal_plans.py create mode 100644 frontend/components/Domain/Household/GroupHouseholdSelector.vue diff --git a/alembic/versions/2024-09-18-14.52.55_1fe4bd37ccc8_add_households_filter_to_meal_plans.py b/alembic/versions/2024-09-18-14.52.55_1fe4bd37ccc8_add_households_filter_to_meal_plans.py new file mode 100644 index 000000000000..a127e72f44a3 --- /dev/null +++ b/alembic/versions/2024-09-18-14.52.55_1fe4bd37ccc8_add_households_filter_to_meal_plans.py @@ -0,0 +1,53 @@ +"""add households filter to meal plans + +Revision ID: 1fe4bd37ccc8 +Revises: be568e39ffdf +Create Date: 2024-09-18 14:52:55.831540 + +""" + +import sqlalchemy as sa + +import mealie.db.migration_types +from alembic import op + +# revision identifiers, used by Alembic. +revision = "1fe4bd37ccc8" +down_revision: str | None = "be568e39ffdf" +branch_labels: str | tuple[str, ...] | None = None +depends_on: str | tuple[str, ...] | None = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.create_table( + "plan_rules_to_households", + sa.Column("group_plan_rule_id", mealie.db.migration_types.GUID(), nullable=True), + sa.Column("household_id", mealie.db.migration_types.GUID(), nullable=True), + sa.ForeignKeyConstraint( + ["group_plan_rule_id"], + ["group_meal_plan_rules.id"], + ), + sa.ForeignKeyConstraint( + ["household_id"], + ["households.id"], + ), + sa.UniqueConstraint("group_plan_rule_id", "household_id", name="group_plan_rule_id_household_id_key"), + ) + with op.batch_alter_table("plan_rules_to_households", schema=None) as batch_op: + batch_op.create_index( + batch_op.f("ix_plan_rules_to_households_group_plan_rule_id"), ["group_plan_rule_id"], unique=False + ) + batch_op.create_index(batch_op.f("ix_plan_rules_to_households_household_id"), ["household_id"], unique=False) + + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table("plan_rules_to_households", schema=None) as batch_op: + batch_op.drop_index(batch_op.f("ix_plan_rules_to_households_household_id")) + batch_op.drop_index(batch_op.f("ix_plan_rules_to_households_group_plan_rule_id")) + + op.drop_table("plan_rules_to_households") + # ### end Alembic commands ### diff --git a/frontend/components/Domain/Household/GroupHouseholdSelector.vue b/frontend/components/Domain/Household/GroupHouseholdSelector.vue new file mode 100644 index 000000000000..fcdf63e40047 --- /dev/null +++ b/frontend/components/Domain/Household/GroupHouseholdSelector.vue @@ -0,0 +1,91 @@ + + + diff --git a/frontend/components/Domain/Household/GroupMealPlanRuleForm.vue b/frontend/components/Domain/Household/GroupMealPlanRuleForm.vue index cf71112a3eee..1f263eb3621b 100644 --- a/frontend/components/Domain/Household/GroupMealPlanRuleForm.vue +++ b/frontend/components/Domain/Household/GroupMealPlanRuleForm.vue @@ -5,8 +5,15 @@ - - +
+ + + +
{{ $t('meal-plan.this-rule-will-apply', { @@ -18,11 +25,13 @@