Add feedback type, add test feedback
This commit is contained in:
parent
b1ddedb52a
commit
22cfa6ff23
|
|
@ -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",
|
||||
},
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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 {}
|
||||
|
|
|
|||
|
|
@ -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] = []
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue