This commit is contained in:
2022-11-08 21:19:51 +01:00
commit 4c456eafc3
160 changed files with 21472 additions and 0 deletions

View File

@@ -0,0 +1,46 @@
from rest_framework.permissions import IsAuthenticated
from rest_framework.request import Request
from rest_framework.response import Response
from rest_framework.views import APIView
from ..models import PcpFeGroupe, SousVivier, FormationEmploi
from ..serializers.current_user import (CTX_KEY_PCP_FE_GROUPE,
CTX_KEY_PROFILES, CTX_KEY_SOUS_VIVIERS,
CTX_KEY_FORMATION_EMPLOIS, CTX_KEY_SOUS_VIVIERS_SUPER,
UserInfoSerializer)
from ..utils.decorators import class_logger
from ..utils.permissions import KEY_READ, Profiles, get_profile_summary
from .commun import execution_time_viewset, query_count_viewset
@class_logger
@execution_time_viewset
@query_count_viewset
class CurrentUserView(APIView):
"""
Cette classe est dédiée au vue de l'utilisateur courant:
"""
permission_classes = [IsAuthenticated]
# TODO adapter au nouveau système de gestion de profils
def get(self, request: Request) -> Response:
"""
Renvoie les informations de l'utilisateur connecté.
:param request: requête contenant l'utilisateur authentifié
:type request: class:`rest_framework.request.Request`
:return: réponse contenant les informations de l'utilisateur dont la formation emploi group et les sous-viviers specifiques à cet utilisateur.
:rtype: class:`rest_framework.response.Response`
"""
user = request.user
summary = get_profile_summary(request.user)
profiles = summary.profiles.get(KEY_READ, ())
return Response(UserInfoSerializer(user, context={
# CTX_KEY_SOUS_VIVIERS_SUPER: SousVivier.objects.all() if Profiles.SUPER in profiles else None,
CTX_KEY_SOUS_VIVIERS: SousVivier.objects.filter(gestionnaires__id=request.user.id),
CTX_KEY_FORMATION_EMPLOIS: FormationEmploi.objects.filter(gestionnaires__id=request.user.id).order_by('fe_mere_credo').distinct('fe_mere_credo'),
CTX_KEY_PCP_FE_GROUPE: PcpFeGroupe.objects.filter(gestionnaire_id=user.pk).first(),
CTX_KEY_PROFILES: summary.profiles
}).data)