Some serialization BS

This commit is contained in:
Aarni Halinen
2020-08-04 01:04:38 +03:00
parent e03b6e6606
commit 38669947cd
7 changed files with 80 additions and 39 deletions
+19 -17
View File
@@ -7,7 +7,6 @@ class SignupSerializer(serializers.ModelSerializer):
source="signupForm",
queryset=SignupForm.objects.all()
)
answer = serializers.JSONField()
list_name = serializers.CharField(read_only=True)
def add_extra_fields(self, validated_data):
@@ -44,8 +43,7 @@ class SignupSerializer(serializers.ModelSerializer):
}
class SignupFormSerializer(serializers.HyperlinkedModelSerializer):
questions = serializers.JSONField()
class SignupFormSerializer(serializers.ModelSerializer):
signups = serializers.SlugRelatedField(
slug_field="list_name",
many=True,
@@ -55,36 +53,37 @@ class SignupFormSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = SignupForm
fields = ('id', 'title', 'visible', 'start_time', 'end_time', 'questions', 'schema', 'signups', 'quota')
fields = ('id', 'title', 'visible', 'isOpen', 'start_time', 'end_time', 'questions', 'schema', 'signups', 'quota')
class EventSerializer(serializers.ModelSerializer):
signupForm = SignupFormSerializer(
source='filtered_signup_forms',
many=True,
read_only=True,
required=False,
)
signup_id = serializers.PrimaryKeyRelatedField(
many=True,
source="signupForm",
queryset=SignupForm.objects.all(),
required=False
many=True,
write_only=True,
)
tag_id = serializers.PrimaryKeyRelatedField(
queryset=Tag.objects.all(),
many=True,
source="tags",
queryset=Tag.objects.all()
write_only=True,
)
class Meta:
model = Event
fields = ('id', 'tag_id', 'tags', 'visible', 'image', 'title_fi', 'title_en', 'description_fi', 'description_en',
'content_fi', 'content_en', 'start_time', 'end_time', 'location', 'signup_id', 'signupForm')
read_only_fields = ['tags', 'signupForm']
depth = 1
def create(self, validated_data):
signupForms = validated_data.pop('signupForm', [])
tags = validated_data.pop('tags')
signupForms = validated_data.pop('signup_id', [])
tags = validated_data.pop('tag_id')
event = Event.objects.create(**validated_data)
for form in signupForms:
event.signupForm.add(form)
@@ -94,12 +93,15 @@ class EventSerializer(serializers.ModelSerializer):
return event
def update(self, instance, validated_data):
signupForms = validated_data.pop('signupForm', [])
instance = super(EventSerializer, self).update(instance, validated_data)
signupForms = validated_data.pop('signup_id', [])
tags = validated_data.pop('tag_id')
instance.signupForm.clear()
for form_data in signupForms:
# form_qs = SignupForms.objects.filter(id=form['id'])
instance.signupForm.add(form_data)
instance.tags.clear()
for form in signupForms:
instance.signupForm.add(form)
for tag in tags:
instance.tags.add(tag)
instance = super(EventSerializer, self).update(instance, validated_data)
return instance