60 lines
1.7 KiB
Python
60 lines
1.7 KiB
Python
import structlog
|
|
from rest_framework.decorators import api_view
|
|
from rest_framework.response import Response
|
|
|
|
from vbv_lernwelt.feedback.models import FeedbackResponse
|
|
|
|
logger = structlog.get_logger(__name__)
|
|
|
|
FEEDBACK_FIELDS = [
|
|
"satisfaction",
|
|
"goal_attainment",
|
|
"proficiency",
|
|
"received_materials",
|
|
"materials_rating",
|
|
"instructor_competence",
|
|
"instructor_open_feedback",
|
|
"would_recommend",
|
|
"course_positive_feedback",
|
|
"course_negative_feedback",
|
|
]
|
|
|
|
|
|
@api_view(["GET"])
|
|
def get_expert_feedbacks_for_course(request, course_id):
|
|
feedbacks = FeedbackResponse.objects.filter(course_session__course_id=course_id, circle__expert__user=request.user)
|
|
circle_count = {}
|
|
|
|
for feedback in feedbacks:
|
|
if feedback.circle_id not in circle_count:
|
|
circle_count[feedback.circle_id] = {
|
|
"circle_id": feedback.circle_id,
|
|
"count": 0,
|
|
}
|
|
|
|
circle_count[feedback.circle_id]["count"] += 1
|
|
|
|
return Response(status=200, data=circle_count)
|
|
|
|
|
|
@api_view(["GET"])
|
|
def get_feedback_for_circle(request, course_id, circle_id):
|
|
feedbacks = FeedbackResponse.objects.filter(course_session__course_id=course_id,
|
|
circle__expert__user=request.user,
|
|
circle_id=circle_id)
|
|
|
|
# I guess this is ok for the üK case
|
|
feedback_data = {}
|
|
|
|
if len(feedbacks) == 0:
|
|
return Response(status=200, data=feedback_data)
|
|
|
|
for field in FEEDBACK_FIELDS:
|
|
feedback_data[field] = []
|
|
|
|
for feedback in feedbacks:
|
|
for field in FEEDBACK_FIELDS:
|
|
feedback_data[field].append(getattr(feedback, field))
|
|
|
|
return Response(status=200, data=feedback_data)
|