diff --git a/api/event/serializers.py b/api/event/serializers.py index a18794f..cd7ba7a 100644 --- a/api/event/serializers.py +++ b/api/event/serializers.py @@ -70,23 +70,41 @@ class ActivityTemplateSerializer(serializers.ModelSerializer): 'min_perm', 'max_perm', 'description', 'remarks', 'tags',) def update(self, instance, validated_data): + """ + @tags comportement attendu : si l'id existe déjà on ne change pas + les autres champs et si l'id n'existe pas on le créé + """ tags_data = validated_data.pop('tags') validated_data.pop('event_pk') event = instance.event [setattr(instance, key, value) for key, value in validated_data.items()] instance.save() + # TODO: en fonction de si backbone envoie un `id` ou non lorsque le tag + # n'existe pas encore il faudra faire un premier passage sur `tags` i + # pour s'assurer que le get ne foire pas le get si, par exemple, le tag + # été modifié entre temps dans la base de donnée (mais pas sur la + # classe backbone tags = [ActivityTag.objects.get_or_create(event=event, **tag_data)[0] for tag_data in tags_data] instance.tags.set(tags) return instance def create(self, validated_data): + """ + @tags comportement attendu : si l'id existe déjà on ne change pas + les autres champs et si l'id n'existe pas on le créé + """ tags_data = validated_data.pop('tags') event_pk = validated_data.pop('event_pk') event = event_pk and get_object_or_404(Event, id=event_pk) or None activity_template = ActivityTemplate.objects.create(event=event, **validated_data) + # TODO: en fonction de si backbone envoie un `id` ou non lorsque le tag + # n'existe pas encore il faudra faire un premier passage sur `tags` i + # pour s'assurer que le get ne foire pas le get si, par exemple, le tag + # été modifié entre temps dans la base de donnée (mais pas sur la + # classe backbone tags = [ActivityTag.objects.get_or_create(event=event, **tag_data)[0] for tag_data in tags_data] activity_template.tags = tags