Conjunto de cambios 39b8a44 en sapic para explicacion_situacional/functions.py


Ignorar:
Fecha y hora:
10/09/2018 09:44:04 (hace 6 años)
Autor:
Manuel Zambrano <mzambrano595@…>
Branches:
master
Children:
8837872
Parents:
1901d86
git-author:
Manuel Zambrano <mzambrano595@…> (10/09/18 09:38:13)
git-committer:
Manuel Zambrano <mzambrano595@…> (10/09/18 09:44:04)
Mensaje:

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

Fichero:
1 editado

Leyenda

No modificado
Añadido
Eliminado
  • explicacion_situacional/functions.py

    r72e62e0 r39b8a44  
    1818from django.contrib import messages
    1919from django.shortcuts import render, redirect
     20from django.urls import reverse_lazy
    2021
    2122from explicacion_situacional.modelsEncuestas.modelsParticipacion import (
     
    2324    RespuestaAbierta, RespuestaUbicacion
    2425    )
     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
    2548
    2649
     
    5477        registro.save()
    5578    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 TracChangeset para ayuda en el uso del visor de conjuntos de cambios.