added auto shopping functionality. fixed bug when there are no matching recipes
This commit is contained in:
parent
df684f591a
commit
ecd828008e
@ -988,6 +988,7 @@ class AutoMealPlanSerializer(serializers.Serializer):
|
||||
keywords = KeywordSerializer(many=True)
|
||||
servings = CustomDecimalField()
|
||||
shared = UserSerializer(many=True, required=False, allow_null=True)
|
||||
addshopping = serializers.BooleanField()
|
||||
|
||||
|
||||
class ShoppingListRecipeSerializer(serializers.ModelSerializer):
|
||||
|
@ -688,6 +688,8 @@ class AutoPlanViewSet(viewsets.ViewSet):
|
||||
for keyword in keywords:
|
||||
recipes = recipes.filter(keywords__name=keyword['name'])
|
||||
|
||||
if len(recipes) == 0:
|
||||
return Response(serializer.data)
|
||||
recipes = recipes.order_by('?')[:days]
|
||||
recipes = list(recipes)
|
||||
|
||||
@ -707,7 +709,7 @@ class AutoPlanViewSet(viewsets.ViewSet):
|
||||
for m in meal_plans:
|
||||
m.shared.set(shared_pks)
|
||||
|
||||
if request.data.get('addshopping', False) and request.data.get('recipe', None):
|
||||
if request.data.get('addshopping', False):
|
||||
SLR = RecipeShoppingEditor(user=request.user, space=request.space)
|
||||
SLR.create(mealplan=m, servings=servings)
|
||||
|
||||
|
@ -372,7 +372,8 @@ export default {
|
||||
date: Date.now(),
|
||||
startDay: null,
|
||||
endDay: null,
|
||||
shared: []
|
||||
shared: [],
|
||||
addshopping: false
|
||||
},
|
||||
showDate: new Date(),
|
||||
plan_entries: [],
|
||||
@ -695,7 +696,8 @@ export default {
|
||||
"meal_type_id" : autoPlan.meal_types[mealTypeIndex].id,
|
||||
"keywords" : autoPlan.keywords[mealTypeIndex],
|
||||
"servings" : autoPlan.servings,
|
||||
"shared" : autoPlan.shared
|
||||
"shared" : autoPlan.shared,
|
||||
"addshopping": autoPlan.addshopping
|
||||
}
|
||||
await apiClient.createAutoPlanViewSet(data)
|
||||
|
||||
|
@ -47,6 +47,12 @@
|
||||
></generic-multiselect>
|
||||
<small tabindex="-1" class="form-text text-muted">{{ $t("Share") }}</small>
|
||||
</b-form-group>
|
||||
<b-input-group v-if="!autoMealPlan">
|
||||
<b-form-checkbox id="AddToShopping" v-model="mealplan_settings.addshopping"/>
|
||||
<small tabindex="-1" class="form-text text-muted">{{
|
||||
$t("AddToShopping")
|
||||
}}</small>
|
||||
</b-input-group>
|
||||
|
||||
<div class="">
|
||||
<div class="row m-3 mb-0">
|
||||
@ -77,11 +83,14 @@ import {BootstrapVue} from "bootstrap-vue"
|
||||
import GenericMultiselect from "@/components/GenericMultiselect"
|
||||
import {ApiMixin} from "@/utils/utils"
|
||||
import {useUserPreferenceStore} from "@/stores/UserPreferenceStore";
|
||||
import VueCookies from "vue-cookies";
|
||||
|
||||
const { ApiApiFactory } = require("@/utils/openapi/api")
|
||||
const { StandardToasts } = require("@/utils/utils")
|
||||
|
||||
Vue.use(BootstrapVue)
|
||||
Vue.use(VueCookies)
|
||||
let MEALPLAN_COOKIE_NAME = "mealplan_settings"
|
||||
|
||||
export default {
|
||||
name: "AutoMealPlanModal",
|
||||
@ -106,16 +115,38 @@ export default {
|
||||
date: Date.now(),
|
||||
startDay: null,
|
||||
endDay: null,
|
||||
shared: []
|
||||
}
|
||||
shared: [],
|
||||
addshopping: false
|
||||
},
|
||||
mealplan_settings: {
|
||||
addshopping: false,
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted: function () {},
|
||||
watch: {
|
||||
mealplan_settings: {
|
||||
handler(newVal) {
|
||||
this.$cookies.set(MEALPLAN_COOKIE_NAME, this.mealplan_settings)
|
||||
},
|
||||
deep: true,
|
||||
},
|
||||
},
|
||||
mounted: function () {
|
||||
useUserPreferenceStore().updateIfStaleOrEmpty()
|
||||
},
|
||||
computed: {
|
||||
autoMealPlan: function () {
|
||||
return useUserPreferenceStore().getStaleData()?.mealplan_autoadd_shopping
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
genericSelectChanged: function (obj) {
|
||||
this.AutoPlan.keywords[obj.var] = obj.val
|
||||
},
|
||||
showModal() {
|
||||
if (this.$cookies.isKey(MEALPLAN_COOKIE_NAME)) {
|
||||
this.mealplan_settings = Object.assign({}, this.mealplan_settings, this.$cookies.get(MEALPLAN_COOKIE_NAME))
|
||||
}
|
||||
this.refreshMealTypes()
|
||||
|
||||
this.AutoPlan.servings = 1
|
||||
@ -164,6 +195,7 @@ export default {
|
||||
},
|
||||
createPlan() {
|
||||
this.$bvModal.hide(`autoplan-modal`)
|
||||
this.AutoPlan.addshopping = this.mealplan_settings.addshopping
|
||||
this.$emit("create-plan", this.AutoPlan)
|
||||
},
|
||||
updateStartDay(date){
|
||||
|
Loading…
Reference in New Issue
Block a user