Add feedback type, add test feedback

This commit is contained in:
Christian Cueni 2023-12-07 07:40:43 +01:00
parent b1ddedb52a
commit 22cfa6ff23
6 changed files with 86 additions and 14 deletions

View File

@ -32,7 +32,7 @@ from vbv_lernwelt.course_session.services.attendance import AttendanceUserStatus
from vbv_lernwelt.feedback.models import FeedbackResponse
from vbv_lernwelt.learnpath.models import (
LearningContentAttendanceCourse,
LearningContentFeedbackUK,
LearningContentFeedbackUK, LearningContentFeedbackVV,
)
from vbv_lernwelt.notify.models import Notification
@ -155,6 +155,8 @@ def command(
if create_feedback_responses:
print("create_feedback_responses")
course_session = CourseSession.objects.get(id=TEST_COURSE_SESSION_BERN_ID)
# feedback fahrzeug
learning_content_feedback_page = LearningContentFeedbackUK.objects.get(
slug="test-lehrgang-lp-circle-fahrzeug-lc-feedback"
)
@ -174,6 +176,7 @@ def command(
"would_recommend": True,
"course_negative_feedback": "Nichts Schlechtes",
"course_positive_feedback": "Nur Gutes.",
"feedback_type": "uk",
},
)
@ -193,6 +196,7 @@ def command(
"would_recommend": True,
"course_negative_feedback": "Es wäre praktisch, Zugang zu einer FAQ zu haben.",
"course_positive_feedback": "Das Beispiel mit der Katze fand ich sehr gut veranschaulicht!",
"feedback_type": "uk",
},
)
@ -212,6 +216,62 @@ def command(
"would_recommend": False,
"course_negative_feedback": "Mehr Videos wären schön.",
"course_positive_feedback": "Die Präsentation war super",
"feedback_type": "uk",
},
)
# feedback reisen
learning_content_feedback_page = LearningContentFeedbackVV.objects.get(
slug="test-lehrgang-lp-circle-reisen-lc-feedback"
)
create_feedback_response_data(
feedback_user=User.objects.get(id=TEST_STUDENT1_USER_ID),
course_session=course_session,
learning_content_feedback_page=learning_content_feedback_page,
submitted=True,
feedback_data={
"satisfaction": 4,
"goal_attainment": 3,
"proficiency": 80,
"preparation_task_clarity": True,
"would_recommend": True,
"course_negative_feedback": "Nichts Schlechtes",
"course_positive_feedback": "Nur Gutes.",
"feedback_type": "vv",
},
)
create_feedback_response_data(
feedback_user=User.objects.get(id=TEST_STUDENT2_USER_ID),
course_session=course_session,
learning_content_feedback_page=learning_content_feedback_page,
submitted=True,
feedback_data={
"satisfaction": 4,
"goal_attainment": 4,
"proficiency": 100,
"preparation_task_clarity": True,
"would_recommend": True,
"course_negative_feedback": "Es wäre praktisch, Zugang zu einer FAQ zu haben.",
"course_positive_feedback": "Das Beispiel mit der Katze fand ich sehr gut veranschaulicht!",
"feedback_type": "vv",
},
)
create_feedback_response_data(
feedback_user=User.objects.get(id=TEST_STUDENT3_USER_ID),
course_session=course_session,
learning_content_feedback_page=learning_content_feedback_page,
submitted=True,
feedback_data={
"satisfaction": 2,
"goal_attainment": 2,
"proficiency": 40,
"preparation_task_clarity": True,
"would_recommend": False,
"course_negative_feedback": "Mehr Videos wären schön.",
"course_positive_feedback": "Die Präsentation war super",
"feedback_type": "vv",
},
)

View File

@ -361,6 +361,7 @@ def create_feedback_response_data(
"would_recommend": True,
"course_negative_feedback": "Nichts Schlechtes",
"course_positive_feedback": "Nur Gutes.",
"feedback_type": "uk",
}
return update_feedback_response(

View File

@ -50,8 +50,19 @@ class SendFeedbackMutation(graphene.Mutation):
if learning_content_type == "learnpath.LearningContentFeedbackVV":
learningContentFeedbackModel = LearningContentFeedbackVV
else:
serializerClass = CourseFeedbackSerializerVV
data["feedback_type"] = "vv"
elif learning_content_type == "learnpath.LearningContentFeedbackUK":
learningContentFeedbackModel = LearningContentFeedbackUK
serializerClass = CourseFeedbackSerializerUK
data["feedback_type"] = "uk"
else:
errors = [
ErrorType(
field="learningContentType", messages="Invalid learningContentType"
)
]
return SendFeedbackMutation(errors=errors)
learning_content = learningContentFeedbackModel.objects.get(
id=learning_content_page_id
@ -79,17 +90,7 @@ class SendFeedbackMutation(graphene.Mutation):
course_session_id=course_session_id,
)
if learning_content_type == "learnpath.LearningContentFeedbackVV":
serializer = CourseFeedbackSerializerVV(data=data)
elif learning_content_type == "learnpath.LearningContentFeedbackUK":
serializer = CourseFeedbackSerializerUK(data=data)
else:
errors = [
ErrorType(
field="learningContentType", messages="Invalid learningContentType"
)
]
return SendFeedbackMutation(errors=errors)
serializer = serializerClass(data=data)
if not serializer.is_valid():
logger.error(

View File

@ -5,6 +5,11 @@ from vbv_lernwelt.feedback.models import FeedbackResponse
logger = structlog.get_logger(__name__)
FEEDBACK_TYPES = (
('uk', 'Feedback UK'),
('vv', 'Feedback VV'),
)
class FeedbackIntegerField(serializers.IntegerField):
def __init__(self, **kwargs):
@ -14,6 +19,7 @@ class FeedbackIntegerField(serializers.IntegerField):
class CourseFeedbackSerializerUK(serializers.Serializer):
feedback_type = serializers.ChoiceField(choices=FEEDBACK_TYPES)
satisfaction = FeedbackIntegerField()
goal_attainment = FeedbackIntegerField()
proficiency = serializers.IntegerField(required=False, allow_null=True)

View File

@ -86,6 +86,7 @@ def initial_data_for_feedback_page(
"would_recommend": None,
"course_negative_feedback": "",
"course_positive_feedback": "",
"feedback_type": "uk",
}
if hasattr(learning_content_feedback_page, "learningcontentfeedbackvv"):
return {
@ -96,5 +97,6 @@ def initial_data_for_feedback_page(
"would_recommend": None,
"course_negative_feedback": "",
"course_positive_feedback": "",
"feedback_type": "vv",
}
return {}

View File

@ -62,11 +62,13 @@ def get_feedback_for_circle(request, course_session_id, circle_id):
).order_by("created_at")
# I guess this is ok for the üK case
feedback_data = {"amount": len(feedbacks), "questions": {}}
feedback_data = {"amount": len(feedbacks), "questions": {}, "feedbackType": None}
if feedback_data["amount"] == 0:
return Response(status=200, data=feedback_data)
feedback_data["feedbackType"] = feedbacks[0].data.get("feedback_type", None)
for field in FEEDBACK_FIELDS:
feedback_data["questions"][field] = []