From 13f532a67b64a220f6a05cbe9d8547508ba2843a Mon Sep 17 00:00:00 2001 From: Patrick Magauran Date: Tue, 6 Feb 2024 22:21:37 -0500 Subject: [PATCH 1/5] Add serving size to recipe url so it loads with num --- cookbook/templates/recipe_view.html | 1 + cookbook/urls.py | 2 ++ cookbook/views/views.py | 6 +++--- vue/src/components/RecipeViewComponent.vue | 9 +++++++-- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/cookbook/templates/recipe_view.html b/cookbook/templates/recipe_view.html index 2ec2b117..c0f62d47 100644 --- a/cookbook/templates/recipe_view.html +++ b/cookbook/templates/recipe_view.html @@ -79,6 +79,7 @@ window.CUSTOM_LOCALE = '{{ request.LANGUAGE_CODE }}' window.RECIPE_ID = {{recipe.pk}}; + window.RECIPE_SERVINGS = '{{ servings }}' window.SHARE_UID = '{{ share }}'; window.USER_PREF = { 'use_fractions': {% if request.user.userpreference.use_fractions %} true {% else %} false {% endif %}, diff --git a/cookbook/urls.py b/cookbook/urls.py index 9566541a..954281d6 100644 --- a/cookbook/urls.py +++ b/cookbook/urls.py @@ -101,6 +101,8 @@ urlpatterns = [ path('export-file//', import_export.export_file, name='view_export_file'), path('view/recipe/', views.recipe_view, name='view_recipe'), + path('view/recipe/-', views.recipe_view, name='view_recipe'), + path('view/recipe/-/', views.recipe_view, name='view_recipe'), path('view/recipe//', views.recipe_view, name='view_recipe'), path('new/recipe-import//', new.create_new_external_recipe, name='new_recipe_import'), diff --git a/cookbook/views/views.py b/cookbook/views/views.py index 1c12c77d..c7975dec 100644 --- a/cookbook/views/views.py +++ b/cookbook/views/views.py @@ -130,7 +130,7 @@ def no_perm(request): return render(request, 'no_perm_info.html') -def recipe_view(request, pk, share=None): +def recipe_view(request, pk, servings=None, share=None): with scopes_disabled(): recipe = get_object_or_404(Recipe, pk=pk) @@ -171,9 +171,9 @@ def recipe_view(request, pk, share=None): created_at__gt=(timezone.now() - timezone.timedelta(minutes=5)), space=request.space).exists(): ViewLog.objects.create(recipe=recipe, created_by=request.user, space=request.space) - + return render(request, 'recipe_view.html', - {'recipe': recipe, 'comments': comments, 'comment_form': comment_form, 'share': share, }) + {'recipe': recipe, 'comments': comments, 'comment_form': comment_form, 'share': share, 'servings': servings }) @group_required('user') diff --git a/vue/src/components/RecipeViewComponent.vue b/vue/src/components/RecipeViewComponent.vue index 07a051ad..c8317a73 100644 --- a/vue/src/components/RecipeViewComponent.vue +++ b/vue/src/components/RecipeViewComponent.vue @@ -237,6 +237,7 @@ export default { }, props: { recipe_id: Number, + def_servings: Number, recipe_obj: {type: Object, default: null}, show_context_menu: {type: Boolean, default: true}, enable_keyword_links: {type: Boolean, default: true}, @@ -320,8 +321,12 @@ export default { if (this.recipe.image === null) this.printReady() - - this.servings = this.servings_cache[this.rootrecipe.id] = this.recipe.servings + if (window.RECIPE_SERVINGS && window.RECIPE_SERVINGS !== "None") { + //I am not sure this is the best way. This overwrites our servings cache, which may not be intended? + this.servings = window.RECIPE_SERVINGS + } else { + this.servings = this.servings_cache[this.rootrecipe.id] = this.recipe.servings + } this.loading = false setTimeout(() => { From e8db2b6401fa460e90b2c5082f8085ef27ed5ce0 Mon Sep 17 00:00:00 2001 From: Patrick Magauran Date: Tue, 6 Feb 2024 22:37:25 -0500 Subject: [PATCH 2/5] Clicking on Recipe in Meal Plan auto does servings --- vue/src/apps/MealPlanView/MealPlanView.vue | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/vue/src/apps/MealPlanView/MealPlanView.vue b/vue/src/apps/MealPlanView/MealPlanView.vue index 58793c70..4e431ee2 100644 --- a/vue/src/apps/MealPlanView/MealPlanView.vue +++ b/vue/src/apps/MealPlanView/MealPlanView.vue @@ -126,7 +126,7 @@
- {{ plan.entry.recipe.name }} + {{ plan.entry.recipe.name }} {{ plan.entry.title }}
@@ -169,7 +169,7 @@ v-if="contextData && contextData.originalItem && contextData.originalItem.entry.recipe != null" @click=" $refs.menu.close() - openRecipe(contextData.originalItem.entry.recipe) + openRecipe(contextData.originalItem.entry.recipe, contextData.originalItem.entry.servings) " > @@ -392,8 +392,10 @@ export default { }, }, methods: { - openRecipe: function (recipe) { - window.open(this.resolveDjangoUrl("view_recipe", recipe.id)) + openRecipe: function (recipe, servings) { + let ur = this.resolveDjangoUrl("view_recipe", `${recipe.id}-${servings}`) + console.log(ur) + window.open(ur) }, setStartingDay(days) { if (this.settings.startingDayOfWeek + days < 0) { From 768e9f8801da2d7343c8922ba6a4138812a23f61 Mon Sep 17 00:00:00 2001 From: Patrick Magauran Date: Tue, 6 Feb 2024 22:52:59 -0500 Subject: [PATCH 3/5] Add Setting to enable / disable feature --- vue/src/apps/MealPlanView/MealPlanView.vue | 18 ++++++++++++++---- .../Settings/MealPlanSettingsComponent.vue | 5 +++++ vue/src/locales/en.json | 2 ++ vue/src/stores/MealPlanStore.js | 1 + 4 files changed, 22 insertions(+), 4 deletions(-) diff --git a/vue/src/apps/MealPlanView/MealPlanView.vue b/vue/src/apps/MealPlanView/MealPlanView.vue index 4e431ee2..99d70fbc 100644 --- a/vue/src/apps/MealPlanView/MealPlanView.vue +++ b/vue/src/apps/MealPlanView/MealPlanView.vue @@ -126,7 +126,7 @@
- {{ plan.entry.recipe.name }} + {{ plan.entry.recipe.name }} {{ plan.entry.title }}
@@ -298,6 +298,7 @@ export default { displayPeriodCount: 2, startingDayOfWeek: 1, displayWeekNumbers: true, + autoLoadServings: true, }, dragged_item: null, meal_types: [], @@ -392,10 +393,19 @@ export default { }, }, methods: { + + getRecipeURL: function (recipe, servings) { + let slug + if (this.settings.autoLoadServings) { + slug = `${recipe.id}-${servings}` + } else { + slug = recipe.id + } + return this.resolveDjangoUrl("view_recipe",slug) + }, + openRecipe: function (recipe, servings) { - let ur = this.resolveDjangoUrl("view_recipe", `${recipe.id}-${servings}`) - console.log(ur) - window.open(ur) + window.open(this.getRecipeURL(recipe, servings)) }, setStartingDay(days) { if (this.settings.startingDayOfWeek + days < 0) { diff --git a/vue/src/components/Settings/MealPlanSettingsComponent.vue b/vue/src/components/Settings/MealPlanSettingsComponent.vue index 34cad698..0ee53b7c 100644 --- a/vue/src/components/Settings/MealPlanSettingsComponent.vue +++ b/vue/src/components/Settings/MealPlanSettingsComponent.vue @@ -35,6 +35,11 @@ {{ $t("Show_Week_Numbers") }} + + + {{ $t("Auto_Link_servings") }} + +
diff --git a/vue/src/locales/en.json b/vue/src/locales/en.json index e085bd92..6c375ff3 100644 --- a/vue/src/locales/en.json +++ b/vue/src/locales/en.json @@ -264,6 +264,8 @@ "Add_Servings_to_Shopping": "Add {servings} Servings to Shopping", "Week_Numbers": "Week numbers", "Show_Week_Numbers": "Show week numbers ?", + "Auto_Servings": "Servings Link", + "Auto_Link_servings": "Open Recipes with number of servings specified in plan ?", "Export_As_ICal": "Export current period to iCal format", "Export_To_ICal": "Export .ics", "Cannot_Add_Notes_To_Shopping": "Notes cannot be added to the shopping list", diff --git a/vue/src/stores/MealPlanStore.js b/vue/src/stores/MealPlanStore.js index daac0cb9..bd72558d 100644 --- a/vue/src/stores/MealPlanStore.js +++ b/vue/src/stores/MealPlanStore.js @@ -108,6 +108,7 @@ export const useMealPlanStore = defineStore(_STORE_ID, { displayPeriodCount: 3, startingDayOfWeek: 1, displayWeekNumbers: true, + autoLoadServings: true, } } else { return JSON.parse(s) From a9a3dd6e510538fa744dfca91a4f8cbc24edca0b Mon Sep 17 00:00:00 2001 From: Patrick Magauran Date: Tue, 13 Feb 2024 20:30:59 -0500 Subject: [PATCH 4/5] Revert "Add Setting to enable / disable feature" This reverts commit 768e9f8801da2d7343c8922ba6a4138812a23f61. --- vue/src/apps/MealPlanView/MealPlanView.vue | 9 +-------- .../components/Settings/MealPlanSettingsComponent.vue | 5 ----- vue/src/locales/en.json | 2 -- vue/src/stores/MealPlanStore.js | 1 - 4 files changed, 1 insertion(+), 16 deletions(-) diff --git a/vue/src/apps/MealPlanView/MealPlanView.vue b/vue/src/apps/MealPlanView/MealPlanView.vue index 99d70fbc..5119194b 100644 --- a/vue/src/apps/MealPlanView/MealPlanView.vue +++ b/vue/src/apps/MealPlanView/MealPlanView.vue @@ -298,7 +298,6 @@ export default { displayPeriodCount: 2, startingDayOfWeek: 1, displayWeekNumbers: true, - autoLoadServings: true, }, dragged_item: null, meal_types: [], @@ -395,13 +394,7 @@ export default { methods: { getRecipeURL: function (recipe, servings) { - let slug - if (this.settings.autoLoadServings) { - slug = `${recipe.id}-${servings}` - } else { - slug = recipe.id - } - return this.resolveDjangoUrl("view_recipe",slug) + return this.resolveDjangoUrl("view_recipe",`${recipe.id}-${servings}`) }, openRecipe: function (recipe, servings) { diff --git a/vue/src/components/Settings/MealPlanSettingsComponent.vue b/vue/src/components/Settings/MealPlanSettingsComponent.vue index 0ee53b7c..34cad698 100644 --- a/vue/src/components/Settings/MealPlanSettingsComponent.vue +++ b/vue/src/components/Settings/MealPlanSettingsComponent.vue @@ -35,11 +35,6 @@ {{ $t("Show_Week_Numbers") }} - - - {{ $t("Auto_Link_servings") }} - -
diff --git a/vue/src/locales/en.json b/vue/src/locales/en.json index 6c375ff3..e085bd92 100644 --- a/vue/src/locales/en.json +++ b/vue/src/locales/en.json @@ -264,8 +264,6 @@ "Add_Servings_to_Shopping": "Add {servings} Servings to Shopping", "Week_Numbers": "Week numbers", "Show_Week_Numbers": "Show week numbers ?", - "Auto_Servings": "Servings Link", - "Auto_Link_servings": "Open Recipes with number of servings specified in plan ?", "Export_As_ICal": "Export current period to iCal format", "Export_To_ICal": "Export .ics", "Cannot_Add_Notes_To_Shopping": "Notes cannot be added to the shopping list", diff --git a/vue/src/stores/MealPlanStore.js b/vue/src/stores/MealPlanStore.js index bd72558d..daac0cb9 100644 --- a/vue/src/stores/MealPlanStore.js +++ b/vue/src/stores/MealPlanStore.js @@ -108,7 +108,6 @@ export const useMealPlanStore = defineStore(_STORE_ID, { displayPeriodCount: 3, startingDayOfWeek: 1, displayWeekNumbers: true, - autoLoadServings: true, } } else { return JSON.parse(s) From cf190734b21f4289d40c88c1f944693474a02ea0 Mon Sep 17 00:00:00 2001 From: Patrick Magauran Date: Tue, 13 Feb 2024 20:59:04 -0500 Subject: [PATCH 5/5] Switches to named GET Parameter for servings --- cookbook/urls.py | 2 -- cookbook/views/views.py | 5 +++-- vue/src/apps/MealPlanView/MealPlanView.vue | 2 +- vue/src/components/RecipeViewComponent.vue | 3 ++- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/cookbook/urls.py b/cookbook/urls.py index 954281d6..9566541a 100644 --- a/cookbook/urls.py +++ b/cookbook/urls.py @@ -101,8 +101,6 @@ urlpatterns = [ path('export-file//', import_export.export_file, name='view_export_file'), path('view/recipe/', views.recipe_view, name='view_recipe'), - path('view/recipe/-', views.recipe_view, name='view_recipe'), - path('view/recipe/-/', views.recipe_view, name='view_recipe'), path('view/recipe//', views.recipe_view, name='view_recipe'), path('new/recipe-import//', new.create_new_external_recipe, name='new_recipe_import'), diff --git a/cookbook/views/views.py b/cookbook/views/views.py index c7975dec..6454cf0d 100644 --- a/cookbook/views/views.py +++ b/cookbook/views/views.py @@ -130,7 +130,7 @@ def no_perm(request): return render(request, 'no_perm_info.html') -def recipe_view(request, pk, servings=None, share=None): +def recipe_view(request, pk, share=None): with scopes_disabled(): recipe = get_object_or_404(Recipe, pk=pk) @@ -171,7 +171,8 @@ def recipe_view(request, pk, servings=None, share=None): created_at__gt=(timezone.now() - timezone.timedelta(minutes=5)), space=request.space).exists(): ViewLog.objects.create(recipe=recipe, created_by=request.user, space=request.space) - + if request.method == "GET": + servings = request.GET.get("servings") return render(request, 'recipe_view.html', {'recipe': recipe, 'comments': comments, 'comment_form': comment_form, 'share': share, 'servings': servings }) diff --git a/vue/src/apps/MealPlanView/MealPlanView.vue b/vue/src/apps/MealPlanView/MealPlanView.vue index 5119194b..dc51fa23 100644 --- a/vue/src/apps/MealPlanView/MealPlanView.vue +++ b/vue/src/apps/MealPlanView/MealPlanView.vue @@ -394,7 +394,7 @@ export default { methods: { getRecipeURL: function (recipe, servings) { - return this.resolveDjangoUrl("view_recipe",`${recipe.id}-${servings}`) + return this.resolveDjangoUrl("view_recipe",`${recipe.id}?servings=${servings}`) }, openRecipe: function (recipe, servings) { diff --git a/vue/src/components/RecipeViewComponent.vue b/vue/src/components/RecipeViewComponent.vue index c8317a73..584d354b 100644 --- a/vue/src/components/RecipeViewComponent.vue +++ b/vue/src/components/RecipeViewComponent.vue @@ -321,7 +321,8 @@ export default { if (this.recipe.image === null) this.printReady() - if (window.RECIPE_SERVINGS && window.RECIPE_SERVINGS !== "None") { + window.RECIPE_SERVINGS = Number(window.RECIPE_SERVINGS) + if (window.RECIPE_SERVINGS && ! isNaN(window.RECIPE_SERVINGS)) { //I am not sure this is the best way. This overwrites our servings cache, which may not be intended? this.servings = window.RECIPE_SERVINGS } else {