39 lines
1.3 KiB
Python
39 lines
1.3 KiB
Python
from rest_framework.decorators import api_view
|
|
from rest_framework.generics import get_object_or_404
|
|
from rest_framework.response import Response
|
|
|
|
from vbv_lernwelt.core.serializers import UserSerializer
|
|
from vbv_lernwelt.course.models import CourseSession
|
|
from vbv_lernwelt.learning_mentor.content.praxis_assignment import (
|
|
get_praxis_assignments,
|
|
)
|
|
from vbv_lernwelt.learning_mentor.models import LearningMentor
|
|
from vbv_lernwelt.learning_mentor.serializers import PraxisAssignmentStatusSerializer
|
|
|
|
|
|
@api_view(["GET"])
|
|
def mentor_summary(request, course_session_id: int):
|
|
if not request.user.is_authenticated:
|
|
return Response(status=403)
|
|
|
|
if request.method == "GET":
|
|
course_session = CourseSession.objects.get(id=course_session_id)
|
|
|
|
mentor = get_object_or_404(
|
|
LearningMentor, mentor=request.user, course=course_session.course
|
|
)
|
|
|
|
participants = mentor.participants.filter(course_session=course_session)
|
|
users = [p.user for p in participants]
|
|
|
|
praxis_assignments = get_praxis_assignments(course_session, users)
|
|
|
|
return Response(
|
|
{
|
|
"participants": [UserSerializer(user).data for user in users],
|
|
"praxis_assignments": PraxisAssignmentStatusSerializer(
|
|
praxis_assignments, many=True
|
|
).data,
|
|
}
|
|
)
|