source: seguimiento_proyectos/sepai/utils/views.py @ 08c074e

desarrollo
Last change on this file since 08c074e was b8ac0ee, checked in by lhernandez <lhernandez@…>, 7 años ago

Optimizando formulario para el registro de poryectos, preparando para el guardado en el modelo de datos

  • Propiedad mode establecida a 100644
File size: 5.6 KB
Línea 
1# -*- encoding: utf-8 -*-
2"""!
3Vista que controla los procesos de las utilidades de la plataforma
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 09-01-2017
8@version 1.0.0
9"""
10import json
11from django.core.serializers.json import DjangoJSONEncoder
12from django.http import HttpResponse
13from django.shortcuts import render
14from dal import autocomplete
15
16from .models import (
17    Pais, Estado, Municipio, Parroquia
18)
19
20
21class PaisAutocomplete(autocomplete.Select2QuerySetView):
22    """!
23    Crea el autocomplete para los Paises
24
25    @author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
26    @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
27    @date 09-01-2017
28    @version 1.0.0
29    """
30    def get_queryset(self):
31        # No se olvide de filtrar los resultados en función del visitante !
32        if not self.request.user.is_authenticated():
33            return Pais.objects.none()
34
35        qs = Pais.objects.all()
36        if self.q:
37            qs = qs.filter(nombre__istartswith=self.q)
38
39        return qs
40
41
42class EstadoAutocomplete(autocomplete.Select2QuerySetView):
43    """!
44    Crea el autocomplete para los Estados
45
46    @author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
47    @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
48    @date 09-01-2017
49    @version 1.0.0
50    """
51
52    def get_queryset(self):
53        # No se olvide de filtrar los resultados en función del visitante !
54        if not self.request.user.is_authenticated():
55            return Estado.objects.none()
56
57        qs = Estado.objects.all()
58
59        if self.q:
60            qs = qs.filter(nombre__istartswith=self.q)
61
62        return qs
63
64
65class MunicipioAutocomplete(autocomplete.Select2QuerySetView):
66    """!
67    Crea el autocomplete para los Municipios
68
69    @author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
70    @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
71    @date 09-01-2017
72    @version 1.0.0
73    """
74
75    def get_queryset(self):
76        # No se olvide de filtrar los resultados en función del visitante !
77        if not self.request.user.is_authenticated():
78            return Municipio.objects.none()
79
80        qs = Municipio.objects.all()
81
82        if self.q:
83            qs = qs.filter(nombre__istartswith=self.q)
84
85        return qs
86
87
88class ParroquiaAutocomplete(autocomplete.Select2QuerySetView):
89    """!
90    Crea el autocomplete para las Parroquias
91
92    @author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
93    @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
94    @date 09-01-2017
95    @version 1.0.0
96    """
97
98    def get_queryset(self):
99        # No se olvide de filtrar los resultados en función del visitante !
100        if not self.request.user.is_authenticated():
101            return Parroquia.objects.none()
102
103        qs = Parroquia.objects.all()
104
105        if self.q:
106            qs = qs.filter(nombre__istartswith=self.q)
107
108        return qs
109
110
111def obtenerEstados():
112    """
113    Función que permite obtener la lista de estados
114
115    El método hace una lista consultando el modelo Estado
116
117    @return: Lista de estados
118    """
119    try:
120        if Estado.DoesNotExist:
121            consulta = Estado.objects.all().values('id', 'nombre')
122        else:
123            consulta = [{'id': '', 'nombre': ''}]
124    except:
125        consulta = [{'id': '', 'nombre': ''}]
126
127    return consulta
128
129def obtenerMunicipios(request):
130    """
131    Función que permite obtener la lista de municipios asociados a un estado
132
133    El método hace un llamado al modelo para realizar una consulta
134
135    @param id_estado: Identificador del estado
136    @type id_estado: entero
137
138    @return: Lista de municipios asociados al estado
139    """
140    try:
141        if Municipio.DoesNotExist:
142            id_estado = request.GET.get('id_estado')
143            municipios = Municipio.objects.filter(estado_id=id_estado).values('id', 'nombre')
144            data = json.dumps(list(municipios), cls=DjangoJSONEncoder)
145            print(data)
146        else:
147            data = {}
148    except:
149        data = {}
150        pass
151
152    return HttpResponse(data, content_type='application/json')
153
154
155def obtenerParroquias(request):
156    """
157    Función que permite obtener la lista de municipios asociados a un estado
158
159    El método hace un llamado al modelo para realizar una consulta
160
161    @param id_estado: Identificador del estado
162    @type id_estado: entero
163
164    @return: Lista de municipios asociados al estado
165    """
166    try:
167        if Municipio.DoesNotExist:
168            id_municipio = request.GET.get('id_municipio')
169            municipios = Parroquia.objects.filter(municipio_id=id_municipio).values('id', 'nombre')
170            data = json.dumps(list(municipios), cls=DjangoJSONEncoder)
171        else:
172            data = {}
173    except:
174        data = {}
175        pass
176
177    return HttpResponse(data, content_type='application/json')
178
179
180def listMunicipios():
181    """
182    Función que permite obtener el municipio asociado a una parroquia
183
184    El método hace un llamado a un servicio REST de la aplicación comun
185
186    @param id_parroquia: Identificador de la parroquia
187    @type id_parroquia: entero
188
189    @return: El municipio asociado a la parroquia
190    """
191    try:
192        if Municipio.DoesNotExist:
193            consulta = Municipio.objects.all().values('id', 'nombre')
194        else:
195            consulta = [{'id': '', 'nombre': ''}]
196    except OperationalError:
197        consulta = [{'id': '', 'nombre': ''}]
198
199    return consulta
Nota: Vea TracBrowser para ayuda de uso del navegador del repositorio.