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