source: firmaeventos/eventos/views.py @ ac5e6fc

Last change on this file since ac5e6fc was b8fffff, checked in by Leonel Hernandez <leonelphm@…>, 7 years ago

Se ajusto el registro para la asignacion de participantes a eventos

  • Property mode set to 100644
File size: 4.5 KB
Line 
1import random 
2from django.contrib import messages
3from django.contrib.auth.mixins import LoginRequiredMixin
4from django.core.urlresolvers import reverse_lazy
5from django.shortcuts import (
6    render, redirect, get_object_or_404
7)
8from django.views.generic import ListView, FormView
9
10from multi_form_view import MultiModelFormView
11
12from .forms import *
13from participantes.forms import (
14    FormsetParticipanteEvento
15)
16from .models import Evento
17from participantes.models import (
18    Participante, ParticipanteEvento
19)
20
21
22class RegisterEvent(LoginRequiredMixin, FormView):
23    """!
24    Muestra el formulario de registro de usuarios
25
26    @author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
27    @copyright <a href='https://www.gnu.org/licenses/gpl-3.0.en.html'>GNU Public License versión 3 (GPLv3)</a>
28    @date 20-11-2017
29    @version 1.0.0
30    """
31
32    template_name = "register.event.html"
33    form_class = EventoForm
34    form_participante = FormsetParticipanteEvento
35    success_url = reverse_lazy('base:inicio')
36
37    def get_context_data(self, **kwargs):
38        context = super(RegisterEvent, self).get_context_data(**kwargs)
39        if 'form' not in context:
40            context['form'] = self.form_class()
41        if 'form2' not in context:
42            context['form2'] = self.form_participante(queryset=Participante.objects.none())
43        return context
44
45    def post(self, request, *args, **kwargs):
46        nuevo_evento = self.form_class(request.POST).save(commit=False)
47        nuevo_participante = self.form_participante(request.POST)
48        consulta_api = random.randrange(0, 500)
49        if self.form_class(request.POST).is_valid() and nuevo_participante.is_valid():
50            nuevo_evento.serial = consulta_api
51            nuevo_evento.save()
52            #nuevo_participante.save()
53            # Control para guardar y asignar participante al evento
54            for form in nuevo_participante:
55                if form.cleaned_data.get('DELETE') and form.instance.pk:
56                    form.instance.delete()
57                else:
58                    instance = form.save(commit=False)
59                    parametros = {
60                                    'nombres': instance.nombres,
61                                    'apellidos': instance.apellidos,
62                                    'correo': instance.correo
63                                    }
64                    nuevo_participante, create= Participante.objects.update_or_create(pasaporte=instance.pasaporte, defaults=parametros)
65                    #instance.save()
66                    asigna_evento = ParticipanteEvento(fk_participante=nuevo_participante,
67                                                    fk_evento=nuevo_evento)
68                    print(asigna_evento.pk)
69                    asigna_evento.save()
70            messages.success(self.request, "El usaurio %s, ha creado con exito,\
71                                        un nuevo envento %s" %
72                         (str(self.request.user),
73                          str(nuevo_evento)))
74        else:
75            messages.error(self.request, "Existe un error en el Formualario %s" %
76                         (str(self.form_class.errors, self.form_participante.errors)))
77        return redirect(self.success_url)
78
79
80class ListEvent(ListView):
81    """!
82    Muestra el listado de eventos
83
84    @author Rodrigo Boet (rboet at cenditel.gob.ve)
85    @copyright <a href='https://www.gnu.org/licenses/gpl-3.0.en.html'>GNU Public License versión 3 (GPLv3)</a>
86    @date 20-11-2017
87    @version 1.0.0
88    """
89    model = Evento
90    template_name = "evento.list.html"
91    paginate_by = 5
92   
93class SignEvent(FormView):
94    """!
95    Muestra el formulario para buscar y luego firmar documento
96
97    @author Rodrigo Boet (rboet at cenditel.gob.ve)
98    @copyright <a href='https://www.gnu.org/licenses/gpl-3.0.en.html'>GNU Public License versión 3 (GPLv3)</a>
99    @date 20-11-2017
100    @version 1.0.0
101    """
102    form_class = FirmaEventoForm
103    template_name = "evento.firma.html"
104   
105    def get_context_data(self, **kwargs):
106        """!
107        Metodo que permite cargar de nuevo valores en los datos de contexto de la vista
108   
109        @author Rodrigo Boet (rboet at cenditel.gob.ve)
110        @copyright GNU/GPLv3
111        @date 20-11-2017
112        @param self <b>{object}</b> Objeto que instancia la clase
113        @param kwargs <b>{object}</b> Objeto que contiene los datos de contexto
114        @return Retorna los datos de contexto
115        """
116        kwargs['nombre_evento'] = Evento.objects.get(pk=int(self.kwargs['pk']))
117        return super(SignEvent, self).get_context_data(**kwargs)
Note: See TracBrowser for help on using the repository browser.