1 | # -*- coding: utf-8 -*- |
---|
2 | """ |
---|
3 | Sistema de Consulta Pública |
---|
4 | |
---|
5 | Copyleft (@) 2017 CENDITEL nodo Mérida - https://planificacion.cenditel.gob.ve/trac/wiki/ModeladoTopicos_2017 |
---|
6 | """ |
---|
7 | ## @package participacion.views |
---|
8 | # |
---|
9 | # Vistas correspondientes a la aplicación participacion |
---|
10 | # @author Rodrigo Boet (rboet at cenditel.gob.ve) |
---|
11 | # @author <a href='http://www.cenditel.gob.ve'>Centro Nacional de Desarrollo e Investigación en TecnologÃas Libres |
---|
12 | # (CENDITEL) nodo Mérida - Venezuela</a> |
---|
13 | # @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> |
---|
14 | # @version 1.0 |
---|
15 | from django.shortcuts import render |
---|
16 | from django.http import HttpResponse |
---|
17 | from django.apps import apps |
---|
18 | from django.views.generic import TemplateView |
---|
19 | from django.contrib.auth.mixins import LoginRequiredMixin |
---|
20 | from braces.views import GroupRequiredMixin |
---|
21 | |
---|
22 | import json |
---|
23 | |
---|
24 | class Error403(TemplateView): |
---|
25 | """! |
---|
26 | Clase para mostrar el error de permisos |
---|
27 | |
---|
28 | @author Rodrigo Boet (rboet at cenditel.gob.ve) |
---|
29 | @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> |
---|
30 | @date 09-01-2017 |
---|
31 | @version 1.0.0 |
---|
32 | """ |
---|
33 | template_name = "base.403.html" |
---|
34 | |
---|
35 | |
---|
36 | class Administrador(GroupRequiredMixin,LoginRequiredMixin,TemplateView): |
---|
37 | """! |
---|
38 | Clase para mostrar el menú del administrador |
---|
39 | |
---|
40 | @author Rodrigo Boet (rboet at cenditel.gob.ve) |
---|
41 | @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> |
---|
42 | @date 28-03-2017 |
---|
43 | @version 1.0.0 |
---|
44 | """ |
---|
45 | template_name = "administrador.template.html" |
---|
46 | group_required = u"Administrador" |
---|
47 | |
---|
48 | class Inicio(TemplateView): |
---|
49 | """! |
---|
50 | Clase para mostrar el inicio del sistema |
---|
51 | |
---|
52 | @author Rodrigo Boet (rboet at cenditel.gob.ve) |
---|
53 | @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> |
---|
54 | @date 24-04-2017 |
---|
55 | @version 1.0.0 |
---|
56 | """ |
---|
57 | template_name = "inicio.html" |
---|
58 | |
---|
59 | |
---|
60 | def actualizar_combo(request): |
---|
61 | """! |
---|
62 | Función que actualiza los datos de un select dependiente de los datos de otro select |
---|
63 | |
---|
64 | @author Ing. Roldan Vargas (rvargas at cenditel.gob.ve) |
---|
65 | @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> |
---|
66 | @date 28-04-2016 |
---|
67 | @param request <b>{object}</b> Objeto que contiene la petición |
---|
68 | @return Devuelve un HttpResponse con el JSON correspondiente a los resultados de la consulta y los respectivos |
---|
69 | elementos a cargar en el select |
---|
70 | """ |
---|
71 | try: |
---|
72 | if not request.is_ajax(): |
---|
73 | return HttpResponse(json.dumps({'resultado': False, 'error': str('La solicitud no es ajax')})) |
---|
74 | |
---|
75 | ## Valor del campo que ejecuta la acción |
---|
76 | cod = request.GET.get('opcion', None) |
---|
77 | |
---|
78 | ## Nombre de la aplicación del modelo en donde buscar los datos |
---|
79 | app = request.GET.get('app', None) |
---|
80 | |
---|
81 | ## Nombre del modelo en el cual se va a buscar la información a mostrar |
---|
82 | mod = request.GET.get('mod', None) |
---|
83 | |
---|
84 | ## Atributo por el cual se va a filtrar la información |
---|
85 | campo = request.GET.get('campo', None) |
---|
86 | |
---|
87 | ## Atributo del cual se va a obtener el valor a registrar en las opciones del combo resultante |
---|
88 | n_value = request.GET.get('n_value', None) |
---|
89 | |
---|
90 | ## Atributo del cual se va a obtener el texto a registrar en las opciones del combo resultante |
---|
91 | n_text = request.GET.get('n_text', None) |
---|
92 | |
---|
93 | ## Nombre de la base de datos en donde buscar la información, si no se obtiene el valor por defecto es default |
---|
94 | bd = request.GET.get('bd', 'default') |
---|
95 | |
---|
96 | filtro = {} |
---|
97 | |
---|
98 | if app and mod and campo and n_value and n_text and bd: |
---|
99 | modelo = apps.get_model(app, mod) |
---|
100 | |
---|
101 | if cod: |
---|
102 | filtro = {campo: cod} |
---|
103 | |
---|
104 | out = "<option value=''>%s...</option>" % str("Seleccione") |
---|
105 | |
---|
106 | combo_disabled = "false" |
---|
107 | |
---|
108 | if cod != "" and cod != "0": |
---|
109 | for o in modelo.objects.using(bd).filter(**filtro).order_by(n_text): |
---|
110 | out = "%s<option value='%s'>%s</option>" \ |
---|
111 | % (out, str(o.__getattribute__(n_value)), |
---|
112 | o.__getattribute__(n_text)) |
---|
113 | else: |
---|
114 | combo_disabled = "true" |
---|
115 | |
---|
116 | return HttpResponse(json.dumps({'resultado': True, 'combo_disabled': combo_disabled, 'combo_html': out})) |
---|
117 | |
---|
118 | else: |
---|
119 | return HttpResponse(json.dumps({'resultado': False, |
---|
120 | 'error': str('No se ha especificado el registro')})) |
---|
121 | |
---|
122 | except Exception as e: |
---|
123 | return HttpResponse(json.dumps({'resultado': False, 'error': e})) |
---|