cascade create agenda

This commit is contained in:
Kuroshini 2020-01-16 16:40:17 +03:00
parent da1fa9d83a
commit 783e2e5931

View File

@ -22,7 +22,9 @@ from utils.serializers import (
class AgendaSerializer(ProjectModelSerializer):
start_datetime = serializers.DateTimeField()
end_datetime = serializers.DateTimeField()
address = AddressBaseSerializer()
address = AddressBaseSerializer(read_only=True)
address_id = serializers.PrimaryKeyRelatedField(write_only=True, queryset=location_models.Address.objects.all(),
source='address')
event_name_translated = TranslatedField()
content_translated = TranslatedField()
@ -36,7 +38,8 @@ class AgendaSerializer(ProjectModelSerializer):
'end_datetime',
'address',
'content_translated',
'event_name_translated'
'event_name_translated',
'address_id',
)
@ -248,11 +251,17 @@ class NewsBackOfficeBaseSerializer(NewsBaseSerializer):
user = request.user
validated_data['created_by'] = user
agenda = validated_data.get('agenda')
if agenda is not None and (agenda.event_name is None or agenda.content is None):
raise serializers.ValidationError({'agenda': _('Agenda is empty')})
agenda_data = validated_data.pop('agenda')
agenda_data['address_id'] = agenda_data.pop('address').pk
agenda_serializer = AgendaSerializer(data=agenda_data)
agenda_serializer.is_valid(raise_exception=True)
agenda = agenda_serializer.save()
return super().create(validated_data)
instance = super().create(validated_data)
instance.agenda = agenda
instance.save()
return instance
def update(self, instance, validated_data):
slugs = validated_data.get('slugs')