fixed merging and added shopping ignored ingredients
This commit is contained in:
@ -140,7 +140,7 @@ class UnitSerializer(UniqueFieldsMixin, serializers.ModelSerializer):
|
|||||||
read_only_fields = ('id',)
|
read_only_fields = ('id',)
|
||||||
|
|
||||||
|
|
||||||
class SupermarketCategorySerializer(UniqueFieldsMixin, serializers.ModelSerializer):
|
class SupermarketCategorySerializer(UniqueFieldsMixin, WritableNestedModelSerializer):
|
||||||
|
|
||||||
def create(self, validated_data):
|
def create(self, validated_data):
|
||||||
# since multi select tags dont have id's
|
# since multi select tags dont have id's
|
||||||
@ -156,7 +156,7 @@ class SupermarketCategorySerializer(UniqueFieldsMixin, serializers.ModelSerializ
|
|||||||
fields = ('id', 'name')
|
fields = ('id', 'name')
|
||||||
|
|
||||||
|
|
||||||
class FoodSerializer(UniqueFieldsMixin, serializers.ModelSerializer):
|
class FoodSerializer(UniqueFieldsMixin, WritableNestedModelSerializer):
|
||||||
supermarket_category = SupermarketCategorySerializer(read_only=True)
|
supermarket_category = SupermarketCategorySerializer(read_only=True)
|
||||||
|
|
||||||
def create(self, validated_data):
|
def create(self, validated_data):
|
||||||
@ -171,7 +171,6 @@ class FoodSerializer(UniqueFieldsMixin, serializers.ModelSerializer):
|
|||||||
class Meta:
|
class Meta:
|
||||||
model = Food
|
model = Food
|
||||||
fields = ('id', 'name', 'recipe', 'ignore_shopping', 'supermarket_category')
|
fields = ('id', 'name', 'recipe', 'ignore_shopping', 'supermarket_category')
|
||||||
read_only_fields = ('id',)
|
|
||||||
|
|
||||||
|
|
||||||
class IngredientSerializer(WritableNestedModelSerializer):
|
class IngredientSerializer(WritableNestedModelSerializer):
|
||||||
@ -326,8 +325,8 @@ class ShoppingListRecipeSerializer(serializers.ModelSerializer):
|
|||||||
|
|
||||||
|
|
||||||
class ShoppingListEntrySerializer(WritableNestedModelSerializer):
|
class ShoppingListEntrySerializer(WritableNestedModelSerializer):
|
||||||
food = FoodSerializer(allow_null=True, read_only=True)
|
food = FoodSerializer(allow_null=True)
|
||||||
unit = UnitSerializer(allow_null=True, read_only=True)
|
unit = UnitSerializer(allow_null=True)
|
||||||
amount = CustomDecimalField()
|
amount = CustomDecimalField()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
@ -335,7 +334,6 @@ class ShoppingListEntrySerializer(WritableNestedModelSerializer):
|
|||||||
fields = (
|
fields = (
|
||||||
'id', 'list_recipe', 'food', 'unit', 'amount', 'order', 'checked'
|
'id', 'list_recipe', 'food', 'unit', 'amount', 'order', 'checked'
|
||||||
)
|
)
|
||||||
read_only_fields = ('id',)
|
|
||||||
|
|
||||||
|
|
||||||
class ShoppingListEntryCheckedSerializer(serializers.ModelSerializer):
|
class ShoppingListEntryCheckedSerializer(serializers.ModelSerializer):
|
||||||
|
@ -361,8 +361,9 @@
|
|||||||
this.shopping_list.entries.forEach(element => {
|
this.shopping_list.entries.forEach(element => {
|
||||||
let item = {}
|
let item = {}
|
||||||
Object.assign(item, element);
|
Object.assign(item, element);
|
||||||
if (entries.filter(item => (item.food.id === element.food.id) && (item.unit.id === element.unit.id)).length > 0) {
|
|
||||||
let entry = entries.filter(item => item.food.id === element.food.id)[0]
|
let entry = this.findMergeEntry(entries, item)
|
||||||
|
if (entry !== undefined) {
|
||||||
entry.amount += item.amount * this.servings_cache[item.list_recipe]
|
entry.amount += item.amount * this.servings_cache[item.list_recipe]
|
||||||
entry.entries.push(item.id)
|
entry.entries.push(item.id)
|
||||||
} else {
|
} else {
|
||||||
@ -373,7 +374,6 @@
|
|||||||
item.entries = [element.id]
|
item.entries = [element.id]
|
||||||
entries.push(item)
|
entries.push(item)
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
return entries
|
return entries
|
||||||
@ -416,6 +416,17 @@
|
|||||||
this.searchUsers('')
|
this.searchUsers('')
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
findMergeEntry: function (entries, entry) {
|
||||||
|
return entries.find(item => {
|
||||||
|
if (entry.food.id === item.food.id) {
|
||||||
|
if (entry.unit === null && item.unit === null) {
|
||||||
|
return true
|
||||||
|
} else if (entry.unit.id === item.unit.id) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
updateOnlineStatus(e) {
|
updateOnlineStatus(e) {
|
||||||
const {
|
const {
|
||||||
type
|
type
|
||||||
@ -612,7 +623,7 @@
|
|||||||
this.$http.get('{% url 'api:recipe-detail' 123456 %}'.replace('123456', recipe.id)).then((response) => {
|
this.$http.get('{% url 'api:recipe-detail' 123456 %}'.replace('123456', recipe.id)).then((response) => {
|
||||||
for (let s of response.data.steps) {
|
for (let s of response.data.steps) {
|
||||||
for (let i of s.ingredients) {
|
for (let i of s.ingredients) {
|
||||||
if (!i.is_header && i.food !== null) {
|
if (!i.is_header && i.food !== null && i.food.ignore_shopping === false) {
|
||||||
this.shopping_list.entries.push({
|
this.shopping_list.entries.push({
|
||||||
'list_recipe': slr.id,
|
'list_recipe': slr.id,
|
||||||
'food': i.food,
|
'food': i.food,
|
||||||
|
Reference in New Issue
Block a user