from django.shortcuts import get_object_or_404 from rest_framework.decorators import api_view, permission_classes from rest_framework.generics import get_object_or_404 from rest_framework.permissions import IsAuthenticated from rest_framework.response import Response from vbv_lernwelt.core.serializers import UserSerializer from vbv_lernwelt.course.models import Course, CourseSessionUser from vbv_lernwelt.course_session_group.models import CourseSessionGroup from vbv_lernwelt.learning_mentor.models import LearningMentor @api_view(["GET", "PUT"]) def me_user_view(request): if not request.user.is_authenticated: return Response(status=403) if request.method == "GET": return Response(UserSerializer(request.user).data) if request.method == "PUT": serializer = UserSerializer( request.user, data=request.data, partial=True, ) if serializer.is_valid(): serializer.save() return Response(UserSerializer(request.user).data) return Response(status=400) @api_view(["GET"]) @permission_classes([IsAuthenticated]) def get_cockpit_type(request, course_id: int): course = get_object_or_404(Course, id=course_id) is_mentor = LearningMentor.objects.filter( mentor=request.user, course=course ).exists() is_expert = CourseSessionUser.objects.filter( user=request.user, course_session__course=course, role=CourseSessionUser.Role.EXPERT, ).exists() is_supervisor = CourseSessionGroup.objects.filter( course_session__course=course, supervisor=request.user ).exists() if is_mentor: cockpit_type = "mentor" elif is_expert or is_supervisor: cockpit_type = "expert" else: cockpit_type = None return Response({"type": cockpit_type})