Conjunto de cambios 2645b43 en consulta_publica para participacion


Ignorar:
Fecha y hora:
23/05/2017 16:06:50 (hace 7 años)
Autor:
rudmanmrrod <rudman22@…>
Branches:
constituyente, estudiantes, general, plan_patria, sala
Children:
0b2127c
Parents:
5a86f8c (diferencia), 2fc7ee1 (diferencia)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Mensaje:

Mezclados los cambios

Ubicación:
participacion
Ficheros:
1 añadido
4 editados

Leyenda

No modificado
Añadido
Eliminado
  • participacion/forms.py

    r2fc7ee1 r5a86f8c  
    1515from django import forms
    1616from base.functions import cargar_consulta
     17from base.models import Municipio, Parroquia
    1718
    1819
     
    4647    consultas = forms.ChoiceField(widget=forms.Select(attrs={'class':'form-control'}),
    4748        label="Selecione una consulta")
     49
     50
     51class ParticipacionSearchForm(forms.Form):
     52    """!
     53    Clase del formulario de búsqueda
     54
     55    @author Rodrigo Boet (rboet at cenditel.gob.ve)
     56    @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
     57    @date 23-02-2017
     58    @version 1.0.0
     59    """
     60
     61    def __init__(self, *args, **kwargs):
     62        super(ParticipacionSearchForm, self).__init__(*args, **kwargs)
     63        #self.fields['objetivo'].choices = cargar_ambitos()
     64
     65    ## Sector
     66    objetivo = forms.ChoiceField(widget=forms.Select(attrs={'class':'form-control'}),
     67        label="Objetivo de la Asamblea Nacional Constituyente")
  • participacion/models.py

    r5a86f8c r2645b43  
    3333    ## Respuesta
    3434    respuesta = models.BooleanField()
    35    
     35
    3636    ## Id del objetivo
    3737    objetivo = models.IntegerField()
     
    5151    ## Relación con la opción de la respuesta
    5252    opcion = models.ForeignKey(Opcion)
    53    
     53
    5454    ## Id del objetivo
    5555    objetivo = models.IntegerField()
  • participacion/urls.py

    r7e26d39 r5a86f8c  
    1818urlpatterns = [
    1919    url(r'^participacion$', ParticipacionIndex.as_view(), name = "participacion_index"),
    20     url(r'^participacion/(?P<pk>\d+)$', ParticipacionCreate.as_view(), name = "participacion_consulta"),
     20    url(r'^participacion-busqueda/(?P<pk>\d+)$', ParticipacionSearch.as_view(), name = "participacion_busqueda"),
     21    url(r'^participacion/(?P<pk>\d+)/(?P<id_objetivo>\d+)$', ParticipacionCreate.as_view(), name = "participacion_consulta"),
    2122]
    2223
  • participacion/views.py

    rd9527db r5a86f8c  
    2121from django.contrib.auth.mixins import LoginRequiredMixin
    2222from braces.views import GroupRequiredMixin
    23 from .forms import ParticipacionSelectForm
     23from .forms import ParticipacionSelectForm, ParticipacionSearchForm
    2424from .models import RespuestaAbierta, RespuestaOpciones, RespuestaSino
    2525from consulta.models import Pregunta, Opcion
     
    5050        """
    5151        consulta = self.request.POST['consultas']
    52         return reverse_lazy('participacion_consulta',
     52        return reverse_lazy('participacion_busqueda',
    5353                            kwargs={'pk': consulta})
    5454
     55
     56class ParticipacionSearch(GroupRequiredMixin,LoginRequiredMixin,FormView):
     57    """!
     58    Clase que gestiona la busqueda para la participación
     59
     60    @author Rodrigo Boet (rboet at cenditel.gob.ve)
     61    @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
     62    @date 23-02-2017
     63    @version 1.0.0
     64    """
     65    template_name = "participacion.search.html"
     66    form_class = ParticipacionSearchForm
     67    group_required = u"Participante"
     68   
     69    def get_success_url(self):
     70        """!
     71        Metodo que permite definir la url de dirección al ser válido el formulario
     72   
     73        @author Rodrigo Boet (rboet at cenditel.gob.ve)
     74        @copyright GNU/GPLv2
     75        @date 23-02-2017
     76        @param self <b>{object}</b> Objeto que instancia la clase
     77        @return Retorna la url
     78        """
     79        objetivo = self.request.POST['objetivo']
     80        return reverse_lazy('participacion_consulta', kwargs={'pk': self.kwargs['pk'],'id_objetivo':objetivo})
    5581
    5682class ParticipacionCreate(GroupRequiredMixin,LoginRequiredMixin,TemplateView):
     
    104130        return super(ParticipacionCreate, self).get_context_data(**kwargs)
    105131   
    106     def post(self,request,pk):
     132    def post(self,request,pk,id_objetivo):
    107133        """!
    108134        Metodo que sobreescribe el post del formulario
     
    125151                    value = True if data[key][0] == 'Si' else False
    126152                    justify_id = 'consulta_respuesta_justificar_'+str(parent_id)
    127                     self.crear_respuesta_sino(parent_id,value,self.request.user.id)
     153                    self.crear_respuesta_sino(parent_id,value,ente_adscrito,self.request.user.id)
    128154                    if(not value and justify_id in data.keys()):
    129155                        respuesta = data[justify_id][0]
    130                         self.crear_respuesta_abierta(parent_id,respuesta,self.request.user.id,True)
     156                        self.crear_respuesta_abierta(parent_id,respuesta,ente_adscrito,self.request.user.id,True)
    131157                elif 'radio' in key or 'check' in key:
    132158                    for value in data[key]:
    133                         self.crear_respuesta_opciones(value,self.request.user.id)
     159                        self.crear_respuesta_opciones(value,ente_adscrito,self.request.user.id)
    134160                elif 'abierta' in key:
    135161                    value = data[key][0]
     
    138164        return redirect(reverse_lazy('participacion_busqueda',kwargs={'pk':pk}))
    139165   
    140     def crear_respuesta_sino(self,parent_id,value,user_id):
     166    def crear_respuesta_sino(self,parent_id,value,id_objetivo,user_id):
    141167        """!
    142168        Metodo para crear una respuesta de si/no
     
    148174        @param parent_id <b>{int}</b> Recibe el número del id del padre
    149175        @param value <b>{bool}</b> Recibe el valor de la respuesta
     176        @param id_objetivo <b>{int}</b> Recibe el id del objetivo
    150177        @param user_id <b>{int}</b> Recibe el id del user
    151178        @return Retorna los datos de contexto
     
    155182        respuesta = RespuestaSino()
    156183        respuesta.pregunta = parent
     184        respuesta.objetivo = id_objetivo
    157185        respuesta.respuesta = value
    158186        respuesta.user = user
    159187        respuesta.save()
    160188       
    161     def crear_respuesta_opciones(self,parent_id,user_id):
     189    def crear_respuesta_opciones(self,parent_id,id_objetivo,user_id):
    162190        """!
    163191        Metodo para crear una respuesta de selección simple y múltiple
     
    168196        @param self <b>{object}</b> Objeto que instancia la clase
    169197        @param parent_id <b>{int}</b> Recibe el número del id del padre
     198        @param id_objetivo <b>{int}</b> Recibe el id del objetivo
    170199        @param user_id <b>{int}</b> Recibe el id del user
    171200        @return Retorna los datos de contexto
     
    175204        respuesta = RespuestaOpciones()
    176205        respuesta.opcion = parent
     206        respuesta.objetivo = id_objetivo
    177207        respuesta.user = user
    178208        respuesta.save()
    179209       
    180     def crear_respuesta_abierta(self,parent_id,value,user_id,es_justificacion = False):
     210    def crear_respuesta_abierta(self,parent_id,value,id_objetivo,user_id,es_justificacion = False):
    181211        """!
    182212        Metodo para crear una respuesta abierta
     
    188218        @param parent_id <b>{int}</b> Recibe el número del id del padre
    189219        @param value <b>{str}</b> Recibe el valor de la respuesta
     220        @param ente <b>{int}</b> Recibe el id del ente
    190221        @param user_id <b>{int}</b> Recibe el id del user
    191222        @param es_justificacion <b>{bool}</b> Recibe el párametro que indica si es una justifiación
     
    196227        respuesta = RespuestaAbierta()
    197228        respuesta.pregunta = parent
     229        respuesta.objetivo = id_objetivo
    198230        respuesta.texto_respuesta = value
    199231        respuesta.user = user
     
    214246    if not request.is_ajax():
    215247        return JsonResponse({'mensaje': False, 'error': str('La solicitud no es ajax')})
     248    objetivo = request.GET.get('objetivo', None)
    216249    consulta = request.GET.get('consulta', None)
    217     if(consulta):
    218         respuesta_sino = RespuestaSino.objects.filter(pregunta__consulta=consulta)
    219         respuesta_abierta = RespuestaAbierta.objects.filter(pregunta__consulta=consulta)
    220         respuesta_opciones = RespuestaOpciones.objects.filter(opcion__pregunta__consulta=consulta)
     250    if(ente and consulta):
     251        respuesta_sino = RespuestaSino.objects.filter(pregunta__consulta=consulta,objetivo=objetivo)
     252        respuesta_abierta = RespuestaAbierta.objects.filter(pregunta__consulta=consulta,objetivo=objetivo)
     253        respuesta_opciones = RespuestaOpciones.objects.filter(opcion__pregunta__consulta=consulta,objetivo=objetivo)
    221254        if(respuesta_sino or respuesta_abierta or respuesta_opciones):
    222255            return JsonResponse({'mensaje': True,'participacion':True})
    223256        return JsonResponse({'mensaje': True,'participacion':False})
    224257    else:
    225         return JsonResponse({'mensaje': False, 'error': str('No envío la consulta')})
     258        return JsonResponse({'mensaje': False, 'error': str('No envío el ente y/o el id de la consulta')})
Nota: Vea TracChangeset para ayuda en el uso del visor de conjuntos de cambios.