source: sapic/utils/views.py @ d68b76e

erwinexplicacion_situacionalgestion_usuariostaller_django
Last change on this file since d68b76e was 3b38b3f, checked in by lhernandez <lhernandez@…>, 7 años ago

Desarrollado e implementado el Registro de Usuarios Voceros asociados a una organizacion social

  • Propiedad mode establecida a 100644
File size: 8.4 KB
Línea 
1# -*- encoding: utf-8 -*-
2"""!
3Vista que controla los procesos de las utilidades de la pltaforma
4
5@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
6@copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
7@date 29-05-2017
8@version 1.0.0
9"""
10import json
11from django.contrib import messages
12from django.contrib.auth.mixins import (
13    PermissionRequiredMixin, LoginRequiredMixin
14)
15from django.core.serializers.json import DjangoJSONEncoder
16from django.http import HttpResponse
17from django.shortcuts import (
18    redirect, render
19)
20from django.views.generic import TemplateView
21from braces.views import GroupRequiredMixin
22
23from .models import *
24
25
26def obtenerEstados():
27    """
28    Función que permite obtener la lista de estados
29
30    El método hace una lista consultando el modelo Estado
31
32    @return: Lista de estados
33    """
34    try:
35
36        if Estado.objects.exists():
37            consulta = Estado.objects.all().values('id', 'nombre')
38        else:
39            consulta = [{'id': '', 'nombre': ''}]
40    except:
41        consulta = [{'id': '', 'nombre': ''}]
42
43    return consulta
44
45def obtenerMunicipios(request):
46    """
47    Función que permite obtener la lista de municipios asociados a un estado
48
49    El método hace un llamado al modelo para realizar una consulta
50
51    @param id_estado: Identificador del estado
52    @type id_estado: entero
53
54    @return: Lista de municipios asociados al estado
55    """
56    try:
57        if Municipio.objects.exists():
58            id_estado = request.GET.get('id_estado')
59            municipios = Municipio.objects.filter(estado_id=id_estado).values('id', 'nombre')
60            data = json.dumps(list(municipios), cls=DjangoJSONEncoder)
61        else:
62            data = {}
63    except:
64        data = {}
65        pass
66
67    return HttpResponse(data, content_type='application/json')
68
69
70def obtenerParroquias(request):
71    """
72    Función que permite obtener la lista de municipios asociados a un estado
73
74    El método hace un llamado al modelo para realizar una consulta
75
76    @param id_estado: Identificador del estado
77    @type id_estado: entero
78
79    @return: Lista de municipios asociados al estado
80    """
81    try:
82        if Municipio.objects.exists():
83            id_municipio = request.GET.get('id_municipio')
84            municipios = Parroquia.objects.filter(municipio_id=id_municipio).values('id', 'nombre')
85            data = json.dumps(list(municipios), cls=DjangoJSONEncoder)
86        else:
87            data = {}
88    except:
89        data = {}
90        pass
91
92    return HttpResponse(data, content_type='application/json')
93
94
95def listMunicipios():
96    """
97    Función que permite obtener la lista de Municipios
98
99    El método hace una lista consultando el modelo Municipio
100
101    @return: Lista de Municipios
102    """
103    try:
104        if Municipio.objects.exists():
105            consulta = Municipio.objects.all().values('id', 'nombre')
106        else:
107            consulta = [{'id': '', 'nombre': ''}]
108    except:
109        consulta = [{'id': '', 'nombre': ''}]
110
111    return consulta
112
113
114def listParroquias():
115    """
116    Función que permite obtener la lista de Parroquias
117
118    El método hace una lista consultando el modelo Parroquia
119
120    @return: Lista de Parroquias
121    """
122    try:
123        if Parroquia.objects.exists():
124            consulta = Parroquia.objects.all().values('id', 'nombre')
125        else:
126            consulta = [{'id': '', 'nombre': ''}]
127    except:
128        consulta = [{'id': '', 'nombre': ''}]
129
130    return consulta
131
132
133def obtenerTipoDocumento():
134    """
135    Función que permite obtener la lista de estados
136
137    El método hace una lista consultando el modelo Estado
138
139    @return: Lista de estados
140    """
141    try:
142
143        if TipoDocumento.objects.exists():
144            consulta = TipoDocumento.objects.all().values('id', 'nombre')
145        else:
146            consulta = [{'id': '', 'abreviatura': ''}]
147    except:
148        consulta = [{'id': '', 'abreviatura': ''}]
149
150    return consulta
151
152
153def obtenerTipoOrganizacion():
154    """
155    Función que permite obtener la lista de tipo de organizaciones
156
157    El método hace una lista consultando el modelo Tipo de Organizaciones
158
159    @return: Lista de Tipos de organizaciones
160    """
161    try:
162
163        if TipoOrganizacion.objects.exists():
164            consulta = TipoOrganizacion.objects.all().values('id', 'abreviatura')
165        else:
166            consulta = [{'id': '', 'abreviatura': ''}]
167    except:
168        consulta = [{'id': '', 'abreviatura': ''}]
169
170    return consulta
171
172
173def obtenerUnidades():
174    """
175    Función que permite obtener la lista de las Unidades Organizacion Social
176
177    El método hace una lista consultando el modelo Unidades Organizacion Social
178
179    @return: Lista de Unidades
180    """
181    try:
182
183        if UnidadesOrganizacionSocial.objects.exists():
184            consulta = UnidadesOrganizacionSocial.objects.all().values('id', 'tipo')
185        else:
186            consulta = [{'id': '', 'tipo': ''}]
187    except:
188        consulta = [{'id': '', 'tipo': ''}]
189
190    return consulta
191
192
193def listComites():
194    """
195    Función que permite obtener la lista de los Comites de las Organizacion Social
196
197    El método hace una lista consultando el modelo de Comites de las Organizacion Social
198
199    @return: Lista de Unidades
200    """
201    try:
202
203        if ComiteUnidadEjecutiva.objects.exists():
204            consulta = ComiteUnidadEjecutiva.objects.all().values('id', 'tipo')
205        else:
206            consulta = [{'id': '', 'tipo': ''}]
207    except:
208        consulta = [{'id': '', 'tipo': ''}]
209
210    return consulta
211
212
213def obtenerComitesbyUnidades(request):
214    """
215    Función que permite obtener la lista de comites asociados a la unidad
216
217    El método hace un llamado al modelo para realizar una consulta
218
219    @param fk_unidad: Identificador de la unidad
220    @type fk_unidad: entero
221
222    @return: Lista de comites asociados a la unidad
223    """
224    try:
225        if UnidadesOrganizacionSocial.objects.exists():
226            fk_unidad = request.GET.get('fk_unidad')
227            comites = ComiteUnidadEjecutiva.objects.filter(fk_unidad=fk_unidad).values('id', 'tipo')
228            data = json.dumps(list(comites), cls=DjangoJSONEncoder)
229        else:
230            data = {}
231    except:
232        data = {}
233        pass
234
235    return HttpResponse(data, content_type='application/json')
236
237
238class LoginRequeridoPerAuth(LoginRequiredMixin, GroupRequiredMixin):
239    """!
240    Clase que reescribe el dispatch de LoginRequiredMixin
241
242    @author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
243    @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
244    @date 09-01-2017
245    @version 1.0.0
246    """
247
248    def dispatch(self, request, *args, **kwargs):
249        """
250        Envia una alerta al usuario que intenta acceder sin permisos para esta clase
251        @return: Direcciona al login en caso de no poseer permisos, en caso contrario usa la clase
252        """
253        if not request.user.is_authenticated:
254            messages.warning(self.request, "Debes iniciar Sessón")
255            return self.handle_no_permission()
256
257        valid_group = False
258        grupos = request.user.groups.all()
259        grupo = []
260        if len(grupos) > 1:
261            for g in grupos:
262                grupo += str(g),
263                if (str(g) in self.get_group_required()):
264                    valid_group = True
265        else:
266            grupo = str(request.user.groups.get())
267            if (grupo in self.get_group_required()):
268                valid_group = True
269        if not (valid_group):
270            return redirect('utils:403error')
271        return super(LoginRequiredMixin, self).dispatch(request, *args, **kwargs)
272
273
274class StartView(LoginRequeridoPerAuth, TemplateView):
275    """!
276    Muestra el inicio de la plataforma
277
278    @author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
279    @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
280    @date 09-01-2017
281    @version 1.0.0
282    @return: El template inicial de la plataforma
283    """
284    template_name = "base.inicio.html"
285    group_required = [u"Administradores", u"Voceros", u"Integrantes"]
286
287
288class Forbidden(TemplateView):
289    """!
290    Dirige a la plantilla Forbidden 403
291
292    @author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
293    @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>
294    GNU Public License versión 2 (GPLv2)</a>
295    @date 09-01-2017
296    @version 1.0.0
297    """
298    template_name = "base.403.html"
Nota: Vea TracBrowser para ayuda de uso del navegador del repositorio.