# -*- encoding: utf-8 -*- """! Vista que controla los procesos de las utilidades de la plataforma @author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve) @copyright GNU Public License versión 2 (GPLv2) @date 09-01-2017 @version 1.0.0 """ import json from django.core.serializers.json import DjangoJSONEncoder from django.http import HttpResponse from django.shortcuts import render from dal import autocomplete from .models import ( Pais, Estado, Municipio, Parroquia ) class PaisAutocomplete(autocomplete.Select2QuerySetView): """! Crea el autocomplete para los Paises @author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve) @copyright GNU Public License versión 2 (GPLv2) @date 09-01-2017 @version 1.0.0 """ def get_queryset(self): # No se olvide de filtrar los resultados en función del visitante ! if not self.request.user.is_authenticated(): return Pais.objects.none() qs = Pais.objects.all() if self.q: qs = qs.filter(nombre__istartswith=self.q) return qs class EstadoAutocomplete(autocomplete.Select2QuerySetView): """! Crea el autocomplete para los Estados @author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve) @copyright GNU Public License versión 2 (GPLv2) @date 09-01-2017 @version 1.0.0 """ def get_queryset(self): # No se olvide de filtrar los resultados en función del visitante ! if not self.request.user.is_authenticated(): return Estado.objects.none() qs = Estado.objects.all() if self.q: qs = qs.filter(nombre__istartswith=self.q) return qs class MunicipioAutocomplete(autocomplete.Select2QuerySetView): """! Crea el autocomplete para los Municipios @author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve) @copyright GNU Public License versión 2 (GPLv2) @date 09-01-2017 @version 1.0.0 """ def get_queryset(self): # No se olvide de filtrar los resultados en función del visitante ! if not self.request.user.is_authenticated(): return Municipio.objects.none() qs = Municipio.objects.all() if self.q: qs = qs.filter(nombre__istartswith=self.q) return qs class ParroquiaAutocomplete(autocomplete.Select2QuerySetView): """! Crea el autocomplete para las Parroquias @author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve) @copyright GNU Public License versión 2 (GPLv2) @date 09-01-2017 @version 1.0.0 """ def get_queryset(self): # No se olvide de filtrar los resultados en función del visitante ! if not self.request.user.is_authenticated(): return Parroquia.objects.none() qs = Parroquia.objects.all() if self.q: qs = qs.filter(nombre__istartswith=self.q) return qs def obtenerEstados(): """ Función que permite obtener la lista de estados El método hace una lista consultando el modelo Estado @return: Lista de estados """ try: if Estado.DoesNotExist: consulta = Estado.objects.all().values('id', 'nombre') else: consulta = [{'id': '', 'nombre': ''}] except: consulta = [{'id': '', 'nombre': ''}] return consulta def obtenerMunicipios(request): """ Función que permite obtener la lista de municipios asociados a un estado El método hace un llamado al modelo para realizar una consulta @param id_estado: Identificador del estado @type id_estado: entero @return: Lista de municipios asociados al estado """ try: if Municipio.DoesNotExist: id_estado = request.GET.get('id_estado') municipios = Municipio.objects.filter(estado_id=id_estado).values('id', 'nombre') data = json.dumps(list(municipios), cls=DjangoJSONEncoder) print(data) else: data = {} except: data = {} pass return HttpResponse(data, content_type='application/json') def obtenerParroquias(request): """ Función que permite obtener la lista de municipios asociados a un estado El método hace un llamado al modelo para realizar una consulta @param id_estado: Identificador del estado @type id_estado: entero @return: Lista de municipios asociados al estado """ try: if Municipio.DoesNotExist: id_municipio = request.GET.get('id_municipio') municipios = Parroquia.objects.filter(municipio_id=id_municipio).values('id', 'nombre') data = json.dumps(list(municipios), cls=DjangoJSONEncoder) else: data = {} except: data = {} pass return HttpResponse(data, content_type='application/json') def listMunicipios(): """ Función que permite obtener el municipio asociado a una parroquia El método hace un llamado a un servicio REST de la aplicación comun @param id_parroquia: Identificador de la parroquia @type id_parroquia: entero @return: El municipio asociado a la parroquia """ try: if Municipio.DoesNotExist: consulta = Municipio.objects.all().values('id', 'nombre') else: consulta = [{'id': '', 'nombre': ''}] except OperationalError: consulta = [{'id': '', 'nombre': ''}] return consulta