# -*- 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