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.feedback.models import FeedbackResponse
|
||||||
from vbv_lernwelt.learnpath.models import (
|
from vbv_lernwelt.learnpath.models import (
|
||||||
LearningContentAttendanceCourse,
|
LearningContentAttendanceCourse,
|
||||||
LearningContentFeedbackUK,
|
LearningContentFeedbackUK, LearningContentFeedbackVV,
|
||||||
)
|
)
|
||||||
from vbv_lernwelt.notify.models import Notification
|
from vbv_lernwelt.notify.models import Notification
|
||||||
|
|
||||||
|
|
@ -155,6 +155,8 @@ def command(
|
||||||
if create_feedback_responses:
|
if create_feedback_responses:
|
||||||
print("create_feedback_responses")
|
print("create_feedback_responses")
|
||||||
course_session = CourseSession.objects.get(id=TEST_COURSE_SESSION_BERN_ID)
|
course_session = CourseSession.objects.get(id=TEST_COURSE_SESSION_BERN_ID)
|
||||||
|
|
||||||
|
# feedback fahrzeug
|
||||||
learning_content_feedback_page = LearningContentFeedbackUK.objects.get(
|
learning_content_feedback_page = LearningContentFeedbackUK.objects.get(
|
||||||
slug="test-lehrgang-lp-circle-fahrzeug-lc-feedback"
|
slug="test-lehrgang-lp-circle-fahrzeug-lc-feedback"
|
||||||
)
|
)
|
||||||
|
|
@ -174,6 +176,7 @@ def command(
|
||||||
"would_recommend": True,
|
"would_recommend": True,
|
||||||
"course_negative_feedback": "Nichts Schlechtes",
|
"course_negative_feedback": "Nichts Schlechtes",
|
||||||
"course_positive_feedback": "Nur Gutes.",
|
"course_positive_feedback": "Nur Gutes.",
|
||||||
|
"feedback_type": "uk",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -193,6 +196,7 @@ def command(
|
||||||
"would_recommend": True,
|
"would_recommend": True,
|
||||||
"course_negative_feedback": "Es wäre praktisch, Zugang zu einer FAQ zu haben.",
|
"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!",
|
"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,
|
"would_recommend": False,
|
||||||
"course_negative_feedback": "Mehr Videos wären schön.",
|
"course_negative_feedback": "Mehr Videos wären schön.",
|
||||||
"course_positive_feedback": "Die Präsentation war super",
|
"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,
|
"would_recommend": True,
|
||||||
"course_negative_feedback": "Nichts Schlechtes",
|
"course_negative_feedback": "Nichts Schlechtes",
|
||||||
"course_positive_feedback": "Nur Gutes.",
|
"course_positive_feedback": "Nur Gutes.",
|
||||||
|
"feedback_type": "uk",
|
||||||
}
|
}
|
||||||
|
|
||||||
return update_feedback_response(
|
return update_feedback_response(
|
||||||
|
|
|
||||||
|
|
@ -50,8 +50,19 @@ class SendFeedbackMutation(graphene.Mutation):
|
||||||
|
|
||||||
if learning_content_type == "learnpath.LearningContentFeedbackVV":
|
if learning_content_type == "learnpath.LearningContentFeedbackVV":
|
||||||
learningContentFeedbackModel = LearningContentFeedbackVV
|
learningContentFeedbackModel = LearningContentFeedbackVV
|
||||||
else:
|
serializerClass = CourseFeedbackSerializerVV
|
||||||
|
data["feedback_type"] = "vv"
|
||||||
|
elif learning_content_type == "learnpath.LearningContentFeedbackUK":
|
||||||
learningContentFeedbackModel = 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(
|
learning_content = learningContentFeedbackModel.objects.get(
|
||||||
id=learning_content_page_id
|
id=learning_content_page_id
|
||||||
|
|
@ -79,17 +90,7 @@ class SendFeedbackMutation(graphene.Mutation):
|
||||||
course_session_id=course_session_id,
|
course_session_id=course_session_id,
|
||||||
)
|
)
|
||||||
|
|
||||||
if learning_content_type == "learnpath.LearningContentFeedbackVV":
|
serializer = serializerClass(data=data)
|
||||||
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)
|
|
||||||
|
|
||||||
if not serializer.is_valid():
|
if not serializer.is_valid():
|
||||||
logger.error(
|
logger.error(
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,11 @@ from vbv_lernwelt.feedback.models import FeedbackResponse
|
||||||
|
|
||||||
logger = structlog.get_logger(__name__)
|
logger = structlog.get_logger(__name__)
|
||||||
|
|
||||||
|
FEEDBACK_TYPES = (
|
||||||
|
('uk', 'Feedback UK'),
|
||||||
|
('vv', 'Feedback VV'),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class FeedbackIntegerField(serializers.IntegerField):
|
class FeedbackIntegerField(serializers.IntegerField):
|
||||||
def __init__(self, **kwargs):
|
def __init__(self, **kwargs):
|
||||||
|
|
@ -14,6 +19,7 @@ class FeedbackIntegerField(serializers.IntegerField):
|
||||||
|
|
||||||
|
|
||||||
class CourseFeedbackSerializerUK(serializers.Serializer):
|
class CourseFeedbackSerializerUK(serializers.Serializer):
|
||||||
|
feedback_type = serializers.ChoiceField(choices=FEEDBACK_TYPES)
|
||||||
satisfaction = FeedbackIntegerField()
|
satisfaction = FeedbackIntegerField()
|
||||||
goal_attainment = FeedbackIntegerField()
|
goal_attainment = FeedbackIntegerField()
|
||||||
proficiency = serializers.IntegerField(required=False, allow_null=True)
|
proficiency = serializers.IntegerField(required=False, allow_null=True)
|
||||||
|
|
|
||||||
|
|
@ -86,6 +86,7 @@ def initial_data_for_feedback_page(
|
||||||
"would_recommend": None,
|
"would_recommend": None,
|
||||||
"course_negative_feedback": "",
|
"course_negative_feedback": "",
|
||||||
"course_positive_feedback": "",
|
"course_positive_feedback": "",
|
||||||
|
"feedback_type": "uk",
|
||||||
}
|
}
|
||||||
if hasattr(learning_content_feedback_page, "learningcontentfeedbackvv"):
|
if hasattr(learning_content_feedback_page, "learningcontentfeedbackvv"):
|
||||||
return {
|
return {
|
||||||
|
|
@ -96,5 +97,6 @@ def initial_data_for_feedback_page(
|
||||||
"would_recommend": None,
|
"would_recommend": None,
|
||||||
"course_negative_feedback": "",
|
"course_negative_feedback": "",
|
||||||
"course_positive_feedback": "",
|
"course_positive_feedback": "",
|
||||||
|
"feedback_type": "vv",
|
||||||
}
|
}
|
||||||
return {}
|
return {}
|
||||||
|
|
|
||||||
|
|
@ -62,11 +62,13 @@ def get_feedback_for_circle(request, course_session_id, circle_id):
|
||||||
).order_by("created_at")
|
).order_by("created_at")
|
||||||
|
|
||||||
# I guess this is ok for the üK case
|
# 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:
|
if feedback_data["amount"] == 0:
|
||||||
return Response(status=200, data=feedback_data)
|
return Response(status=200, data=feedback_data)
|
||||||
|
|
||||||
|
feedback_data["feedbackType"] = feedbacks[0].data.get("feedback_type", None)
|
||||||
|
|
||||||
for field in FEEDBACK_FIELDS:
|
for field in FEEDBACK_FIELDS:
|
||||||
feedback_data["questions"][field] = []
|
feedback_data["questions"][field] = []
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue