Changeset a28e55b in firmaeventos for eventos/views.py


Ignore:
Timestamp:
Nov 29, 2017, 11:23:16 AM (7 years ago)
Author:
lhernandez <lhernandez@…>
Branches:
master
Children:
eedeae2
Parents:
fcce998
Message:

Implementado Update para agregar o eliminar participantes del evento

File:
1 edited

Legend:

Unmodified
Added
Removed
  • eventos/views.py

    rfcce998 ra28e55b  
    3939            destination.write(chunk)
    4040
     41
    4142class RegisterEvent(LoginRequiredMixin, FormView):
    4243    """!
     
    6364
    6465    def post(self, request, *args, **kwargs):
     66        """!
     67        Metodo que permite registra y agregar participantes al evento
     68
     69        @author Leonel P. Hernandez M (lhernandez at cenditel.gob.ve)
     70        @copyright GNU/GPLv3
     71        @date 20-11-2017
     72        @param request <b>{object}</b> Objeto que contiene la petición
     73        @return Retorna un mensaje de error o exito al success
     74        """
    6575        nuevo_participante = self.form_participante(request.POST)
    6676        consulta_api = None
     
    185195
    186196    def get_context_data(self, **kwargs):
     197        """!
     198        Metodo que permite cargar de nuevo valores en los datos de contexto de la vista
     199
     200        @author Rodrigo Boet (rboet at cenditel.gob.ve)
     201        @copyright GNU/GPLv3
     202        @date 20-11-2017
     203        @param self <b>{object}</b> Objeto que instancia la clase
     204        @param kwargs <b>{object}</b> Objeto que contiene los datos de contexto
     205        @return Retorna los datos de contexto
     206        """
    187207        evento = int(self.kwargs['pk'])
    188208        context = super(DetailEvent, self).get_context_data(**kwargs)
     
    197217        context['num_firma'] = falta_porfirma
    198218        return context
     219
    199220
    200221@method_decorator(csrf_exempt, name='dispatch')
     
    282303
    283304    def get_context_data(self, **kwargs):
     305        """!
     306        Metodo que permite cargar de nuevo valores en los datos de contexto de la vista
     307
     308        @author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
     309        @copyright GNU/GPLv3
     310        @date 27-11-2017
     311        @param self <b>{object}</b> Objeto que instancia la clase
     312        @param kwargs <b>{object}</b> Objeto que contiene los datos de contexto
     313        @return Retorna los datos de contexto
     314        """
    284315        evento = int(self.kwargs['event_id'])
    285316        context = super(UpdateFileEvent, self).get_context_data(**kwargs)
     
    289320            print(e)
    290321            evento = None
     322        firma = ParticipanteEvento.objects.filter(fk_evento=evento, firma=True).count()
     323        if firma >= 1:
     324            valida = True
     325        else:
     326            valida = False
     327
    291328        context['object'] = evento
     329        context['valida'] = valida
    292330        return context
    293331
    294332    def form_valid(self, form):
    295         print(form)
     333        """!
     334        Metodo que permite validar el formulario y agregar archivo al evento
     335
     336        @author Leonel P. Hernandez M (lhernandez at cenditel.gob.ve)
     337        @copyright GNU/GPLv3
     338        @date 27-11-2017
     339        @param request <b>{object}</b> Objeto que contiene la petición
     340        @return Retorna un mensaje de error o exito al success
     341        """
    296342        file =  self.request.FILES['file']
    297343        posx = form.cleaned_data['pos_x']
     
    307353            return redirect(self.success_url)
    308354
    309         print(posx)
    310355        handle_uploaded_file(self.request.FILES['file'], file)
    311356        ruta = '%s/%s' % (settings.TMP, file)
     
    359404
    360405    def get_context_data(self, **kwargs):
     406        """!
     407        Metodo que permite cargar de nuevo valores en los datos de contexto de la vista
     408
     409        @author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
     410        @copyright GNU/GPLv3
     411        @date 28-11-2017
     412        @param self <b>{object}</b> Objeto que instancia la clase
     413        @param kwargs <b>{object}</b> Objeto que contiene los datos de contexto
     414        @return Retorna los datos de contexto
     415        """
    361416        context = super(UpdateEventView, self).get_context_data(**kwargs)
    362417        if 'form' not in context:
     
    369424
    370425    def post(self, request, *args, **kwargs):
    371         print('entra en el valid')
     426        """!
     427        Metodo que permite actualizar y agregar mas participantes al evento
     428
     429        @author Leonel P. Hernandez M (lhernandez at cenditel.gob.ve)
     430        @copyright GNU/GPLv3
     431        @date 29-11-2017
     432        @param request <b>{object}</b> Objeto que contiene la petición
     433        @return Retorna un mensaje de error o exito al success
     434        """
    372435        evento = int(self.kwargs['pk'])
    373436        update_participante = self.form_participante(request.POST)
    374         print(update_participante)
    375         if self.form_class(request.POST).is_valid() and update_participante.is_valid():
    376             evento = self.model.objects.get(pk=evento)
    377             update_evento = self.form_class(request.POST, instance=evento).save(commit=False)
    378             update_evento.save()
    379 
    380         # Control para guardar y asignar participantes al evento
    381 
    382             for form in update_participante:
    383                 if form.cleaned_data.get('DELETE') and form.instance.pk:
    384                     form.instance.delete()
    385                 else:
     437        try:
     438            if self.form_class(request.POST).is_valid() and update_participante.is_valid():
     439                evento = self.model.objects.get(pk=evento)
     440                update_evento = self.form_class(request.POST, instance=evento).save(commit=False)
     441                for form in update_participante:
    386442                    instance = form.save(commit=False)
    387                     parametros = {
    388                                     'nombres': instance.nombres,
    389                                     'apellidos': instance.apellidos,
    390                                     'correo': instance.correo
    391                                     }
    392                     update_participante, create = Participante.objects.update_or_create(pasaporte=instance.pasaporte, defaults=parametros)
    393                     asigna_evento = ParticipanteEvento(
    394                                     fk_participante=update_participante,
    395                                     fk_evento=update_evento)
    396                     #asigna_evento.save()
    397 
    398             messages.success(request, "Se actualizó el evento %s" % (update_evento))
     443                    if instance.nombres == '' or instance.apellidos == '' or instance.pasaporte == '':
     444                        messages.error(self.request, "Ninguno de los campos del\
     445                                                      participante puede estar\
     446                                                      vacio excepto el correo")
     447                        return redirect(self.success_url)
     448
     449                update_evento.save()
     450                # Control para guardar y asignar participantes al evento
     451                lista_participantes = list(ParticipanteEvento.objects.filter(fk_evento=int(self.kwargs['pk']), firma=False).values('fk_participante__pasaporte'))
     452
     453                lista_comprobar = []
     454                for valor in lista_participantes:
     455                    lista_comprobar += valor.values()
     456                for form in update_participante:
     457                    if form.cleaned_data.get('DELETE') and form.instance.pk:
     458                        form.instance.delete()
     459                    else:
     460                        instance = form.save(commit=False)
     461
     462                        parametros = {
     463                                        'nombres': instance.nombres,
     464                                        'apellidos': instance.apellidos,
     465                                        'correo': instance.correo
     466                                     }
     467                        if instance.pasaporte in lista_comprobar:
     468                            lista_comprobar.remove(instance.pasaporte)
     469                        update_participante, create = Participante.objects.update_or_create(pasaporte=instance.pasaporte, defaults=parametros)
     470                        parametro_update = {'fk_participante': update_participante}
     471                        update_evento_participante, create_part_event = ParticipanteEvento.objects.update_or_create(fk_evento=update_evento, fk_participante__pasaporte=instance.pasaporte, defaults=parametro_update)
     472                        update_evento_participante.save()
     473                messages.success(request, "El usuario %s, actualizó el evento %s" % (str(self.request.user), str(update_evento)))
     474                for valor in lista_comprobar:
     475                    e = ParticipanteEvento.objects.get(fk_evento=update_evento, fk_participante__pasaporte=valor)
     476                    e.delete()
     477
     478            else:
     479                messages.error(self.request, "Existe un error en el\
     480                                              Formualario %s %s" %
     481                               (self.form_class(request.POST).errors,
     482                                self.form_participante(request.POST).errors))
     483        except Exception as e:
     484            print(e)
     485            messages.error(self.request, "Esta intentando realizar una\
     486                                          acción incorrecta")
    399487        return redirect(self.success_url)
    400         #return super(UpdateEventView, self).form_valid(form)
    401 
    402     #def form_invalid(self, form, **kwargs):
    403     #    return super(UpdateEventView, self).form_invalid(form)
Note: See TracChangeset for help on using the changeset viewer.