Merge pull request #1311 from smilerz/patch-2

fix bug creating food with create form
This commit is contained in:
vabene1111 2022-01-14 17:18:30 +01:00 committed by GitHub
commit 79c8d26e8c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 13 additions and 6 deletions

View File

@ -77,7 +77,10 @@ class TreeManager(MP_NodeManager):
for field in many_to_many:
field_model = getattr(obj, field).model
for related_obj in many_to_many[field]:
getattr(obj, field).add(field_model.objects.get(**dict(related_obj)))
if isinstance(related_obj, User):
getattr(obj, field).add(field_model.objects.get(id=related_obj.id))
else:
getattr(obj, field).add(field_model.objects.get(**dict(related_obj)))
return obj, True
except IntegrityError as e:
if 'Key (path)' in e.args[0]:

View File

@ -394,15 +394,20 @@ class FoodSerializer(UniqueFieldsMixin, WritableNestedModelSerializer, ExtendedR
validated_data['supermarket_category'], sc_created = SupermarketCategory.objects.get_or_create(
name=validated_data.pop('supermarket_category')['name'],
space=self.context['request'].space)
onhand = validated_data.get('food_onhand', None)
onhand = validated_data.pop('food_onhand', None)
# assuming if on hand for user also onhand for shopping_share users
if not onhand is None:
shared_users = [user := self.context['request'].user] + list(user.userpreference.shopping_share.all())
if onhand:
validated_data['onhand_users'] = list(self.instance.onhand_users.all()) + shared_users
if self.instance:
onhand_users = self.instance.onhand_users.all()
else:
validated_data['onhand_users'] = list(set(self.instance.onhand_users.all()) - set(shared_users))
onhand_users = []
if onhand:
validated_data['onhand_users'] = list(onhand_users) + shared_users
else:
validated_data['onhand_users'] = list(set(onhand_users) - set(shared_users))
obj, created = Food.objects.get_or_create(**validated_data)
return obj

View File

@ -238,7 +238,6 @@ export default {
})
popper.update()
this.over = false
this.$emit({ action: "drop", target: this.item, source: this.source })
} else {
this.isError = true
}