diff --git a/arkav/arkalogica/serializers.py b/arkav/arkalogica/serializers.py index 46598b5..90f683f 100644 --- a/arkav/arkalogica/serializers.py +++ b/arkav/arkalogica/serializers.py @@ -47,7 +47,7 @@ class Meta: class AnswerReqSerializer(serializers.Serializer): - tag = serializers.CharField(min_length=1, max_length=1) + tag = serializers.CharField(allow_blank=True, max_length=1) question = serializers.PrimaryKeyRelatedField(queryset=Question.objects.all()) class Meta: @@ -55,7 +55,7 @@ class Meta: class SubmissionSerializer(serializers.ModelSerializer): - answers = AnswerRespSerializer(many=True, read_only=True) + answers = AnswerRespSerializer(source='answer', many=True, read_only=True) class Meta: model = Submission diff --git a/arkav/arkalogica/services.py b/arkav/arkalogica/services.py index bce856c..9a64aae 100644 --- a/arkav/arkalogica/services.py +++ b/arkav/arkalogica/services.py @@ -51,10 +51,13 @@ def submit_answer(self, answer_data, requested_user): ) sub, state = Submission.objects.get_or_create(user=requested_user) qt = answer_data['question'] - choice = get_object_or_404(Choice.objects.all(), question=qt, tag=(answer_data['tag'])) - answer, state = Answer.objects.update_or_create( - submission=sub, question=qt, - defaults={"choice": choice} - ) + if (len(answer_data['tag']) == 1): + choice = get_object_or_404(Choice.objects.all(), question=qt, tag=(answer_data['tag'])) + answer, state = Answer.objects.update_or_create( + submission=sub, question=qt, + defaults={"choice": choice} + ) + elif (Answer.objects.filter(submission=sub, question=qt).exists()): + Answer.objects.filter(submission=sub, question=qt).delete() sub.save() # Untuk update waktu terakhir kali ngerjain (end_time) return sub