init
This commit is contained in:
46
backend-django/backend/views/current_user.py
Normal file
46
backend-django/backend/views/current_user.py
Normal 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)
|
||||
Reference in New Issue
Block a user