diff --git a/junior/migrations/0025_alter_juniorarticle_junior.py b/junior/migrations/0025_alter_juniorarticle_junior.py new file mode 100644 index 0000000..26c7966 --- /dev/null +++ b/junior/migrations/0025_alter_juniorarticle_junior.py @@ -0,0 +1,19 @@ +# Generated by Django 4.2.2 on 2023-08-10 14:46 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('junior', '0024_juniorarticle_current_card_page_and_more'), + ] + + operations = [ + migrations.AlterField( + model_name='juniorarticle', + name='junior', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='juniors_article', to='junior.junior', verbose_name='Junior'), + ), + ] diff --git a/junior/models.py b/junior/models.py index d3912e0..025843e 100644 --- a/junior/models.py +++ b/junior/models.py @@ -167,7 +167,7 @@ class JuniorArticle(models.Model): Survey Options model """ # associated junior with the task - junior = models.OneToOneField(Junior, on_delete=models.CASCADE, related_name='juniors_article', + junior = models.ForeignKey(Junior, on_delete=models.CASCADE, related_name='juniors_article', verbose_name='Junior') article = models.ForeignKey(Article, on_delete=models.CASCADE, related_name='junior_articles_details') # article completed""" diff --git a/junior/views.py b/junior/views.py index 3ffea4c..a86083d 100644 --- a/junior/views.py +++ b/junior/views.py @@ -361,7 +361,7 @@ class JuniorPointsListAPIView(viewsets.ModelViewSet): """profile view""" try: update_positions_based_on_points() - queryset = JuniorTask.objects.filter(junior__auth__email=self.request.user).last() + queryset = JuniorPoints.objects.filter(junior__auth__email=self.request.user).last() # update position of junior serializer = JuniorPointsSerializer(queryset) return custom_response(None, serializer.data, response_status=status.HTTP_200_OK) diff --git a/web_admin/serializers/article_serializer.py b/web_admin/serializers/article_serializer.py index e78bd3e..29230eb 100644 --- a/web_admin/serializers/article_serializer.py +++ b/web_admin/serializers/article_serializer.py @@ -247,6 +247,9 @@ class ArticleQuestionSerializer(serializers.ModelSerializer): id = serializers.IntegerField(required=False) options = SurveyOptionSerializer(many=True) is_attempt = serializers.SerializerMethodField('get_is_attempt') + correct_answer = serializers.SerializerMethodField('get_correct_answer') + attempted_answer = serializers.SerializerMethodField('get_attempted_answer') + def get_is_attempt(self, obj): """attempt question or not""" @@ -256,12 +259,28 @@ class ArticleQuestionSerializer(serializers.ModelSerializer): return junior_article_obj.is_attempt return False + def get_correct_answer(self, obj): + """attempt question or not""" + ans_obj = SurveyOption.objects.filter(survey=obj, is_answer=True).last() + if ans_obj: + return ans_obj.id + return str("None") + + def get_attempted_answer(self, obj): + """attempt question or not""" + context_data = self.context.get('user') + junior_article_obj = JuniorArticlePoints.objects.filter(junior__auth=context_data, + question=obj, is_answer_correct=True).last() + if junior_article_obj: + return junior_article_obj.submitted_answer.id + return None + class Meta: """ meta class """ model = ArticleSurvey - fields = ('id', 'question', 'options', 'points', 'is_attempt') + fields = ('id', 'question', 'options', 'points', 'is_attempt', 'correct_answer', 'attempted_answer') class StartAssessmentSerializer(serializers.ModelSerializer): """