source: gestor_consulta/users/rest.py @ 27da10a

Last change on this file since 27da10a was 9eeb2c3, checked in by rudmanmrrod <rudman22@…>, 7 años ago

Añadido de nuevo django filter, incorporado en el modelo de perfil

  • Propiedad mode establecida a 100644
File size: 4.0 KB
Línea 
1# -*- coding: utf-8 -*-
2"""
3Sistema de Consulta Pública
4
5Copyleft (@) 2017 CENDITEL nodo Mérida - https://planificacion.cenditel.gob.ve/trac/wiki/ModeladoTopicos_2017
6"""
7
8## @package user.rest
9#
10# ViewSet (vistas de los rest) para el rest framework
11# @author Rodrigo Boet (rboet at cenditel.gob.ve)
12# @author Antonio Araujo (aaraujo at cenditel.gob.ve)
13# @author <a href='http://www.cenditel.gob.ve'>Centro Nacional de Desarrollo e Investigación en Tecnologías Libres
14# (CENDITEL) nodo Mérida - Venezuela</a>
15# @copyright <a href='https://www.gnu.org/licenses/gpl-3.0.en.html'>GNU Public License versión 3 (GPLv3)</a>
16# @version 1.0
17from users.models import Perfil
18from .serializers import PerfilSerializer, RegistroSerializer
19
20from rest_framework import viewsets
21from rest_framework import generics
22from rest_framework.response import Response
23from rest_framework import status
24from rest_framework.permissions import IsAuthenticated
25from drf_braces.mixins import MultipleSerializersViewMixin
26
27
28class FormViewSet(MultipleSerializersViewMixin, viewsets.GenericViewSet):
29    """!
30    Clase que gestiona los datos rest de la consulta
31
32    @author Rodrigo Boet (rboet at cenditel.gob.ve)
33    @author Antonio Araujo (aaraujo at cenditel.gob.ve)
34    @copyright <a href='https://www.gnu.org/licenses/gpl-3.0.en.html'>GNU Public License versión 3 (GPLv3)</a>
35    @date 20-06-2017
36    @version 1.0.0
37    """
38    serializer_class = RegistroSerializer
39    queryset = Perfil.objects.all()
40
41    def create(self, request):
42        """!
43        Método que registra los datos del formulario
44
45        @author Antonio Araujo (aaraujo at cenditel.gob.ve)
46        @author Rodrigo Boet (rboet at cenditel.gob.ve)
47        @copyright <a href='https://www.gnu.org/licenses/gpl-3.0.en.html'>GNU Public License versión 3 (GPLv3)</a>
48        @date 19-09-2017
49        @param self <b>{object}</b> Objeto que instancia la clase
50        @return Retorna la respuesta con los datos
51        """
52        serializer = RegistroSerializer(data=request.data)
53        if serializer.is_valid():
54            serializer.save()
55            return Response(request.data, status=status.HTTP_201_CREATED)
56        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
57   
58    def list(self, request):
59        """!
60        Método que retorna la lista de los perfiles
61
62        @author Rodrigo Boet (rboet at cenditel.gob.ve)
63        @copyright <a href='https://www.gnu.org/licenses/gpl-3.0.en.html'>GNU Public License versión 3 (GPLv3)</a>
64        @date 19-09-2017
65        @param self <b>{object}</b> Objeto que instancia la clase
66        @return Retorna los datos de los perfiles
67        """
68        serializer = PerfilSerializer(self.queryset, many=True)
69        return Response(serializer.data)
70
71class UserDataViewSet(viewsets.ModelViewSet):
72    """!
73    Clase que gestiona los datos del usuario autenticado
74
75    @author Rodrigo Boet (rboet at cenditel.gob.ve)
76    @copyright <a href='https://www.gnu.org/licenses/gpl-3.0.en.html'>GNU Public License versión 3 (GPLv3)</a>
77    @date 28-09-2017
78    @version 1.0.0
79    """
80    serializer_class = PerfilSerializer
81    http_method_names = ['get','head']
82    permission_classes = (IsAuthenticated,)
83
84    def get_queryset(self):
85        """!
86        Metodo que permite tomar los datos de la consulta
87   
88        @author Rodrigo Boet (rboet at cenditel.gob.ve)
89        @copyright GNU/GPLv2
90        @date 28-09-2017
91        @param self <b>{object}</b> Objeto que instancia la clase
92        @return Retorna los datos de contexto
93        """
94        return Perfil.objects.filter(user_id=self.request.user.id).all()
95   
96class PerfilViewSet(viewsets.ModelViewSet):
97    """!
98    Clase que gestiona los datos del perfil de los usuarios
99
100    @author Rodrigo Boet (rboet at cenditel.gob.ve)
101    @copyright <a href='https://www.gnu.org/licenses/gpl-3.0.en.html'>GNU Public License versión 3 (GPLv3)</a>
102    @date 28-09-2017
103    @version 1.0.0
104    """
105    queryset = Perfil.objects.all()
106    serializer_class = PerfilSerializer
107    filter_fields = ('cedula','user__username','user__email')
108    http_method_names = ['get','head']
Nota: Vea TracBrowser para ayuda de uso del navegador del repositorio.