source: sapic/explicacion_situacional/functions.py @ 8edeab8

Last change on this file since 8edeab8 was 39b8a44, checked in by Manuel Zambrano <mzambrano595@…>, 6 años ago

Correcion del sub-modulo caracterizacion politica, implementacion de la funcion editar respuestas, correccion del campo tipo_pregunta en el pk:181 de initial_data_preguntas.json

  • Propiedad mode establecida a 100644
File size: 10.2 KB
Línea 
1# -*- coding: utf-8 -*-
2"""
3Sistema Automatizado de Planificación Integral Comunal SAPIC
4
5Copyleft (@) 2017 CENDITEL nodo Mérida - Copyleft (@) 2017 CENDITEL nodo Mérida - https://planificacion.cenditel.gob.ve/trac/wiki/WikiStart#a5.-SistemaAutomatizadodePlanificaciónIntegralComunalSAPIC
6"""
7## @package explicacion_situacional.views
8#
9# Vistas correspondientes a la explicacion situacional
10# @author Ing. Erwin Paredes (eparedes 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
16import time
17import datetime
18from django.contrib import messages
19from django.shortcuts import render, redirect
20from django.urls import reverse_lazy
21
22from explicacion_situacional.modelsEncuestas.modelsParticipacion import (
23    RespuestaSino, RespuestaOpciones,
24    RespuestaAbierta, RespuestaUbicacion
25    )
26
27from django.views.generic import (
28    TemplateView,
29    UpdateView
30)
31from django.contrib import messages
32from utils.views import LoginRequeridoPerAuth
33
34from django.contrib.gis import forms
35
36from explicacion_situacional.modelsEncuestas.modelsConsultas import (
37    Consulta,
38    Opcion,
39)
40
41
42
43from .forms import (
44    RespuestaSinoForm, RespuestaAbiertaForm ,
45    RespuestaOpcionesForm
46)
47
48
49
50def ParticipoCaracterizacionEconomica(request,pk):
51    """!
52    Chequea la participacion del usuario en la caracterización economica de la comunidad
53
54    @author Ing. Erwin Leonel P.  (eparedes at cenditel.gob.ve)
55    @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
56    @date 30-005-2017
57    @version 1.0.0
58    """
59    user = request.user
60    if(user and pk):
61        respuesta_sino = RespuestaSino.objects.filter(pregunta__consulta=pk,user=user)
62        respuesta_abierta = RespuestaAbierta.objects.filter(pregunta__consulta=pk,user=user)
63        respuesta_opciones = RespuestaOpciones.objects.filter(opcion__pregunta__consulta=pk,user=user)
64        if(respuesta_sino or respuesta_abierta or respuesta_opciones):
65            return redirect('explicacion:caracterizacion_economica')
66        return redirect('explicacion:participar_encuesta_economica',pk=2)
67    else:
68        return redirect('explicacion:explicacion_situacional')
69
70
71def ModificarRespuesta(request):
72    if request.method == "POST":
73        id = request.POST["ID"]
74        respuesta = request.POST.get("respuesta")
75        registro = RespuestaSino.objects.get(id=id)
76        registro.respuesta = respuesta
77        registro.save()
78    return redirect('explicacion:caracterizacion_economica')
79
80
81class ModificarRespuestaView(LoginRequeridoPerAuth, TemplateView):
82    """!
83    Clase que mustra el template y gestiona la vista para modificar una respuesta en una encuesta
84   
85    @author Manuel Zambrano
86    @copyright <a href='​http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
87    @date 30-08-2018
88    @version 1.0.0
89    """
90
91    template_name = 'modificar.respuesta.html'
92    group_required = [u"Administradores", u"Voceros", u"Integrantes"] 
93
94
95    def get(self,*arg,**kwargs): 
96        """!
97        Metodo que maneja las peticiones HTTP GET de la vista, Carga los valores iniciales al formulario
98
99        @author Manuel Zambrano
100        @copyright <a href='​http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
101        @date 30-08-2018
102        @param self <b>{object}</b> Objeto que instancia la clase
103        @param kwargs <b>{object}</b> Objeto que contiene las variables de la url
104        @param arg <b>{object}</b>
105        @return retorna los datos de contexto
106        """
107
108        if kwargs['tipo'] == '1' :
109            respuesta =  RespuestaOpciones.objects.select_related().get(
110                                                            pk = kwargs['pk'],
111                                                            user=self.request.user
112                                                            )
113            formulario = RespuestaOpcionesForm()
114            formulario.fields['respuesta']._set_queryset(Opcion.objects.filter(
115                                                pregunta=respuesta.opcion.pregunta
116                                                ))
117            formulario.fields['respuesta'].initial= respuesta.opcion
118           
119
120        if kwargs['tipo'] == '4' : #Hacer para cada tipo de respuesta8
121            respuesta = RespuestaSino.objects.select_related().get(
122                                                            pk = kwargs['pk'],
123                                                            user=self.request.user
124                                                            )
125            if respuesta.respuesta == True:
126                formulario = RespuestaSinoForm(initial={
127                                                    'respuesta':respuesta.respuesta,
128                    })
129            else:
130                justificacion = RespuestaAbierta.objects.select_related().get(
131                                                            user = self.request.user, 
132                                                            pregunta = respuesta.pregunta
133                                                            )
134                formulario = RespuestaSinoForm(initial={
135                                                    'respuesta':respuesta.respuesta,
136                                                    'justificacion':justificacion.texto_respuesta,
137                    })
138
139        if kwargs['tipo'] == '5' :
140            respuesta = RespuestaAbierta.objects.select_related().get(
141                                                            pk = kwargs['pk'],
142                                                            user=self.request.user
143                                                            )
144            formulario = RespuestaAbiertaForm(initial={
145                                                'respuesta':respuesta.texto_respuesta,
146                })
147
148        kwargs['formulario'] = formulario
149        kwargs['o'] = respuesta
150
151
152        return super(ModificarRespuestaView,self).get(self,**kwargs)
153
154    def post(self,*arg,**kwargs):
155        """!
156        Metodo que maneja las peticiones HTTP POST de la vista, Guarda la modificacion de la pregunta
157
158        @author Manuel Zambrano
159        @copyright <a href='​http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
160        @date 03-09-2018
161        @param self <b>{object}</b> Objeto que instancia la clase
162        @param kwargs <b>{object}</b> Objeto que contiene las variables de la url
163        @param arg <b>{object}</b>
164        @return Redirecciona a la tabla de ecuestas
165        """
166
167        if kwargs['tipo'] == '1' :
168            respuesta =  RespuestaOpciones.objects.select_related().get(
169                                                            pk = kwargs['pk'],
170                                                            user=self.request.user
171                                                            )
172            formulario = RespuestaOpcionesForm(self.request.POST,initial={
173                'respuesta':respuesta.opcion,
174                })
175            if formulario.is_valid() and formulario.has_changed():
176                opcion = formulario.cleaned_data['respuesta']
177                respuesta.opcion = opcion
178                respuesta.save()
179
180        if kwargs['tipo'] == '5':
181            respuesta = RespuestaAbierta.objects.select_related().get(
182                                                            pk = kwargs['pk'], 
183                                                            user=self.request.user
184                                                            )
185            formulario = RespuestaAbiertaForm(self.request.POST, initial={
186                'respuesta':respuesta.texto_respuesta,
187                })
188            if formulario.is_valid() and formulario.has_changed():
189                texto_respuesta = formulario.cleaned_data['respuesta']
190                respuesta.texto_respuesta = texto_respuesta
191                respuesta.save()
192
193        if kwargs['tipo'] == '4':
194            respuesta = RespuestaSino.objects.select_related().get(
195                                                            pk = kwargs['pk'],
196                                                            user = self.request.user
197                                                            )
198            formulario = RespuestaSinoForm(self.request.POST)         
199            if formulario.is_valid():
200                if formulario.cleaned_data['respuesta'] :
201                    respuesta.respuesta = formulario.cleaned_data['respuesta']
202                    respuesta.save()
203                else:   
204                    try:
205                        justificacion = RespuestaAbierta.objects.select_related().get(
206                                                            user = self.request.user, 
207                                                            pregunta = respuesta.pregunta
208                                                            )
209                        texto_respuesta = formulario.cleaned_data['justificacion']
210                        justificacion.texto_respuesta = texto_respuesta
211                        justificacion.es_justificacion = True
212                        respuesta.respuesta = formulario.cleaned_data['respuesta']
213                        respuesta.save()
214                        justificacion.save()
215                    except:
216                        justificacion = RespuestaAbierta()
217                        justificacion.pregunta = respuesta.pregunta
218                        justificacion.texto_respuesta = formulario.cleaned_data['justificacion']
219                        justificacion.user = self.request.user
220                        justificacion.es_justificacion = True
221                        justificacion.save()
222                        respuesta.respuesta = formulario.cleaned_data['respuesta']
223                        respuesta.save()
224            else : 
225                messages.error(self.request, 'Error el formulario  \
226                                                No es Valido') #provicional, mientras se valida el formulario con js
227        return redirect(self.request.META.get("HTTP_REFERER"))
228
Nota: Vea TracBrowser para ayuda de uso del navegador del repositorio.