import structlog from rest_framework import serializers from vbv_lernwelt.feedback.models import FeedbackResponse logger = structlog.get_logger(__name__) FEEDBACK_TYPES = ( ("uk", "Feedback UK"), ("vv", "Feedback VV"), ) class FeedbackIntegerField(serializers.IntegerField): def __init__(self, **kwargs): super().__init__( required=False, allow_null=True, min_value=1, max_value=5, **kwargs ) class CourseFeedbackSerializerUK(serializers.Serializer): feedback_type = serializers.ChoiceField(choices=FEEDBACK_TYPES) satisfaction = FeedbackIntegerField() goal_attainment = FeedbackIntegerField() proficiency = serializers.IntegerField(required=False, allow_null=True) preparation_task_clarity = serializers.BooleanField(required=False, allow_null=True) materials_rating = FeedbackIntegerField() instructor_competence = FeedbackIntegerField() instructor_respect = FeedbackIntegerField() instructor_open_feedback = serializers.CharField( required=False, allow_null=True, allow_blank=True ) would_recommend = serializers.BooleanField(required=False, allow_null=True) course_positive_feedback = serializers.CharField( required=False, allow_null=True, allow_blank=True ) course_negative_feedback = serializers.CharField( required=False, allow_null=True, allow_blank=True ) class CourseFeedbackSerializerVV(serializers.Serializer): feedback_type = serializers.ChoiceField(choices=FEEDBACK_TYPES) satisfaction = FeedbackIntegerField() goal_attainment = FeedbackIntegerField() proficiency = serializers.IntegerField(required=False, allow_null=True) preparation_task_clarity = serializers.BooleanField(required=False, allow_null=True) materials_rating = FeedbackIntegerField() would_recommend = serializers.BooleanField(required=False, allow_null=True) course_positive_feedback = serializers.CharField( required=False, allow_null=True, allow_blank=True ) course_negative_feedback = serializers.CharField( required=False, allow_null=True, allow_blank=True ) class CypressFeedbackResponseSerializer(serializers.ModelSerializer): class Meta: model = FeedbackResponse fields = "__all__"