EventSpecificSerializer is now a mixin

This commit is contained in:
Qwann 2017-07-27 11:50:47 +02:00
parent 2ac3cd345c
commit 9362d4c1f0

View file

@ -15,7 +15,7 @@ class EventSerializer(serializers.HyperlinkedModelSerializer):
# Classes utilitaires # Classes utilitaires
class EventSpecificSerializer(serializers.ModelSerializer): class EventSpecificSerializerMixin():
""" """
Provide `update` and `create` methods for nested view with an Event Provide `update` and `create` methods for nested view with an Event
For example for Models which extends EventSpecificMixin For example for Models which extends EventSpecificMixin
@ -46,14 +46,16 @@ class EventSpecificSerializer(serializers.ModelSerializer):
# Serializers # Serializers
# TODO rajouter des permissions # TODO rajouter des permissions
class PlaceSerializer(EventSpecificSerializer): class PlaceSerializer(serializers.ModelSerializer,
EventSpecificSerializerMixin):
class Meta: class Meta:
model = Place model = Place
fields = ('url', 'id', 'name', 'description', 'event') fields = ('url', 'id', 'name', 'description', 'event')
# TODO rajouter des permissions # TODO rajouter des permissions
class ActivityTagSerializer(EventSpecificSerializer): class ActivityTagSerializer(serializers.ModelSerializer,
EventSpecificSerializerMixin):
class Meta: class Meta:
model = ActivityTag model = ActivityTag
fields = ('url', 'id', 'name', 'is_public', 'color', 'event') fields = ('url', 'id', 'name', 'is_public', 'color', 'event')
@ -85,6 +87,8 @@ class ActivityTemplateSerializer(serializers.ModelSerializer):
# pour s'assurer que le get ne foire pas le get si, par exemple, le tag # 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 # été modifié entre temps dans la base de donnée (mais pas sur la
# classe backbone # classe backbone
for tag_data in tags_data:
tag_data.pop('event', None)
tags = [ActivityTag.objects.get_or_create(event=event, **tag_data)[0] tags = [ActivityTag.objects.get_or_create(event=event, **tag_data)[0]
for tag_data in tags_data] for tag_data in tags_data]
instance.tags.set(tags) instance.tags.set(tags)
@ -105,6 +109,8 @@ class ActivityTemplateSerializer(serializers.ModelSerializer):
# pour s'assurer que le get ne foire pas le get si, par exemple, le tag # 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 # été modifié entre temps dans la base de donnée (mais pas sur la
# classe backbone # classe backbone
for tag_data in tags_data:
tag_data.pop('event', None)
tags = [ActivityTag.objects.get_or_create(event=event, **tag_data)[0] tags = [ActivityTag.objects.get_or_create(event=event, **tag_data)[0]
for tag_data in tags_data] for tag_data in tags_data]
activity_template.tags = tags activity_template.tags = tags