Beispiel #1
0
    def create(self, validated_data):
        request = self.context.get('request')
        if not request.session.session_key:
            request.session.save()
        session_id = request.session.session_key
        poll_pk = self.context.get('view').kwargs.get('poll_pk')
        question_pk = self.context.get('view').kwargs.get('question_pk')
        choice_pk = self.context.get('view').kwargs.get('choice_pk')

        poll = get_object_or_404(Poll, pk=poll_pk)
        question = get_object_or_404(Question, pk=question_pk, poll=poll)
        choice = None
        if question.question_type == 'multiple_choice':
            choice = get_object_or_404(Choice, pk=choice_pk, question=question)

            answer = Answer(
                session_id=session_id,
                question=question,
                poll=poll,
                choice=choice,
                numeric_answer=None,
                date_answer=None,
            )
        else:
            raise serializers.ValidationError(
                "This is not a valid type question.")

        try:
            answer.save()
        except:
            answer = get_object_or_404(Answer,
                                       session_id=session_id,
                                       question=question,
                                       poll=poll)
            answer.choice = choice
            answer.save()
        return answer