source: consulta_publica/base/views.py @ 7095598

baseconstituyenteestudiantesgeneralplan_patriasala
Last change on this file since 7095598 was be8d917, checked in by rudmanmrrod <rudman22@…>, 7 años ago

Agregado el perfil de usuario, modificados los requirements y cambiado el motor de BD a postgres

  • Propiedad mode establecida a 100644
File size: 4.6 KB
Línea 
1# -*- coding: utf-8 -*-
2"""
3Sistema de Consulta Pública
4
5Copyleft (@) 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
15from django.shortcuts import render
16from django.http import HttpResponse
17from django.apps import apps
18from django.views.generic import TemplateView
19from django.contrib.auth.mixins import LoginRequiredMixin
20from braces.views import GroupRequiredMixin
21
22import json
23
24class 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   
36class 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   
48class 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
60def 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}))
Nota: Vea TracBrowser para ayuda de uso del navegador del repositorio.