diff options
-rw-r--r-- | api/serializers.py | 19 | ||||
-rw-r--r-- | yaksh/models.py | 13 |
2 files changed, 29 insertions, 3 deletions
diff --git a/api/serializers.py b/api/serializers.py index df66730..1c1e6a4 100644 --- a/api/serializers.py +++ b/api/serializers.py @@ -6,15 +6,21 @@ from yaksh.models import ( class QuestionSerializer(serializers.ModelSerializer): + test_cases = serializers.SerializerMethodField() + + def get_test_cases(self, obj): + test_cases = obj.get_test_cases_as_dict() + return test_cases + class Meta: model = Question - fields = '__all__' + exclude = ('partial_grading', ) class QuizSerializer(serializers.ModelSerializer): class Meta: model = Quiz - fields = '__all__' + exclude = ('view_answerpaper', ) class QuestionPaperSerializer(serializers.ModelSerializer): @@ -63,4 +69,11 @@ class CourseSerializer(serializers.ModelSerializer): class Meta: model = Course - fields = '__all__' + exclude = ( + 'teachers', + 'rejected', + 'requests', + 'students', + 'grading_system', + 'view_grade', + ) diff --git a/yaksh/models.py b/yaksh/models.py index 949b87e..813453d 100644 --- a/yaksh/models.py +++ b/yaksh/models.py @@ -1426,6 +1426,19 @@ class Question(models.Model): tc_list.extend(test_case) return tc_list + def get_test_cases_as_dict(self, **kwargs): + tc_list = [] + for tc in self.testcase_set.values_list("type", flat=True).distinct(): + test_case_ctype = ContentType.objects.get(app_label="yaksh", + model=tc) + test_case = test_case_ctype.get_all_objects_for_this_type( + question=self, + **kwargs + ) + for tc in test_case: + tc_list.append(model_to_dict(tc)) + return tc_list + def get_test_case(self, **kwargs): for tc in self.testcase_set.all(): test_case_type = tc.type |