vbv/server/vbv_lernwelt/feedback/views.py

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)