Some serialization BS
This commit is contained in:
+19
-17
@@ -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
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user