1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Fixes #5118: Specifying an empty list of tags should clear assigned tags (REST API)

This commit is contained in:
Jeremy Stretch
2020-09-09 13:43:10 -04:00
parent 47a6fc19ca
commit 4466458076
3 changed files with 30 additions and 5 deletions

View File

@ -101,24 +101,30 @@ class TaggedObjectSerializer(serializers.Serializer):
tags = NestedTagSerializer(many=True, required=False)
def create(self, validated_data):
tags = validated_data.pop('tags', [])
tags = validated_data.pop('tags', None)
instance = super().create(validated_data)
return self._save_tags(instance, tags)
if tags is not None:
return self._save_tags(instance, tags)
return instance
def update(self, instance, validated_data):
tags = validated_data.pop('tags', [])
tags = validated_data.pop('tags', None)
# Cache tags on instance for change logging
instance._tags = tags
instance._tags = tags or []
instance = super().update(instance, validated_data)
return self._save_tags(instance, tags)
if tags is not None:
return self._save_tags(instance, tags)
return instance
def _save_tags(self, instance, tags):
if tags:
instance.tags.set(*[t.name for t in tags])
else:
instance.tags.clear()
return instance