From 500a3768775acf4a84aa8e53c3bcb797d071a7f6 Mon Sep 17 00:00:00 2001 From: Livio Bieri Date: Thu, 12 Oct 2023 15:55:35 +0200 Subject: [PATCH] fix: filter out feedback experts that might have submitted just for testing -> should not be included in the feedback results / API --- .../vbv_lernwelt/feedback/tests/test_feedback_api.py | 12 ++++++++---- server/vbv_lernwelt/feedback/views.py | 5 +++++ 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/server/vbv_lernwelt/feedback/tests/test_feedback_api.py b/server/vbv_lernwelt/feedback/tests/test_feedback_api.py index c5898d85..99e8c258 100644 --- a/server/vbv_lernwelt/feedback/tests/test_feedback_api.py +++ b/server/vbv_lernwelt/feedback/tests/test_feedback_api.py @@ -3,7 +3,7 @@ from rest_framework.test import APITestCase from vbv_lernwelt.core.create_default_users import create_default_users from vbv_lernwelt.core.models import User from vbv_lernwelt.course.creators.test_course import create_test_course -from vbv_lernwelt.course.models import CourseSession, CourseSessionUser +from vbv_lernwelt.course.models import CourseSession from vbv_lernwelt.feedback.factories import FeedbackResponseFactory from vbv_lernwelt.feedback.models import FeedbackResponse from vbv_lernwelt.learnpath.models import Circle @@ -54,7 +54,7 @@ class FeedbackNotificationTestCase(FeedbackBaseTestCase): self.assertEqual(notification.course_session, self.course_session) def test_only_submitted_feedback_triggers_notification(self): - feedback = FeedbackResponse.objects.create( + FeedbackResponse.objects.create( circle=self.circle_basis, course_session=self.course_session, feedback_user=self.student, @@ -79,10 +79,14 @@ class FeedbackRestApiTestCase(FeedbackBaseTestCase): "course_negative_feedback": ["Maus", "Hase", "Fuchs"], } - self.students = [ + self.feedback_users = [ + # MEMBERS of the course session self.student, User.objects.get(username="test-student2@example.com"), User.objects.get(username="test-student3@example.com"), + # EXPERT has submitted feedback for "testing purposes" + # -> should be filtered out! + User.objects.get(username="test-trainer1@example.com"), ] for i in range(3): @@ -111,7 +115,7 @@ class FeedbackRestApiTestCase(FeedbackBaseTestCase): "course_negative_feedback" ][i], }, - feedback_user=self.students[i], + feedback_user=self.feedback_users[i], submitted=True, ) diff --git a/server/vbv_lernwelt/feedback/views.py b/server/vbv_lernwelt/feedback/views.py index 1211f30d..85267a9c 100644 --- a/server/vbv_lernwelt/feedback/views.py +++ b/server/vbv_lernwelt/feedback/views.py @@ -5,6 +5,7 @@ from rest_framework.decorators import api_view from rest_framework.exceptions import PermissionDenied from rest_framework.response import Response +from vbv_lernwelt.course.models import CourseSessionUser from vbv_lernwelt.course.permissions import is_course_session_expert from vbv_lernwelt.feedback.models import FeedbackResponse @@ -57,6 +58,10 @@ def get_feedback_for_circle(request, course_session_id, circle_id): course_session__id=course_session_id, submitted=True, circle_id=circle_id, + # filter out experts that might have submitted just for testing + feedback_user__in=CourseSessionUser.objects.filter( + course_session_id=course_session_id, role=CourseSessionUser.Role.MEMBER + ).values_list("user", flat=True), ).order_by("created_at") # I guess this is ok for the üK case