Changeset a4764f9 in firmaeventos


Ignore:
Timestamp:
Nov 21, 2017, 11:37:13 AM (6 years ago)
Author:
lhernandez <lhernandez@…>
Branches:
master
Children:
7c18408
Parents:
b8fffff
Message:

Optimizado registro de eventos, preparando proyecto para las firmas

Files:
7 edited

Legend:

Unmodified
Added
Removed
  • .gitignore

    rbf47591 ra4764f9  
    1414eventos/migrations
    1515participantes/migrations
     16sources/tmp/*.pdf
     17sources/tmp/*.jpg
     18sources/tmp/*.tmp
     19sources/tmp/*.png
     20sources/tmp/*.bmp
     21sources/tmp/*.*~
    1622*.*.backup
    1723*.*~
  • FirmaEventos/default.settings.py

    r3397a08 ra4764f9  
    9494        'NAME': 'firma_eventos',
    9595        'USER': 'postgres',
    96         'PASSWORD': '123456',
     96        'PASSWORD': 'postgres',
    9797        'HOST': 'localhost',
    9898        'PORT': '5432',
     
    139139MEDIA_URL = '/sources/'
    140140
     141TMP = os.path.join(MEDIA_ROOT, 'tmp')
     142
    141143# Static files (CSS, JavaScript, Images)
    142144# https://docs.djangoproject.com/en/1.8/howto/static-files/
     
    154156# Configuración para el logeo de usuarios
    155157
    156 LOGIN_URL = "/"
     158LOGIN_URL = "/login"
    157159
    158160LOGOUT_URL= "/logout"
  • eventos/forms.py

    rd3c0ab7 ra4764f9  
    4242        self.fields['archivo'].widget.attrs.update(
    4343            {'class': 'file-path validate',
    44              'placeholder': 'Subir Archivo'})
     44             'placeholder': 'Subir Archivo',
     45             'accept': '.pdf'})
    4546
    4647class FirmaEventoForm(forms.Form):
     
    5354    @version 1.0.0
    5455    """
    55    
    5656    pasaporte = forms.CharField(widget=forms.TextInput(attrs={'class':'form-control','placeholder':'Ingrese su pasaporte'}))
  • eventos/models.py

    r5dea5ff ra4764f9  
    1313    nombre_evento = models.CharField(max_length=128, unique=True)
    1414    fecha = models.DateField(null=False)
    15     serial = models.IntegerField(unique=True)
     15    serial = models.CharField(max_length=128, unique=True)
    1616    activo = models.BooleanField(default=True)
    1717
  • eventos/templates/register.event.html

    r94b3e3f ra4764f9  
    1111            // Django appears to generate the prefix from the lowercase plural
    1212            // name of the related model, with camel-case converted to underscores.
    13             prefix: 'form'
     13            prefix: 'form',
     14            addText:'<i class="tiny material-icons prefix">add_circle_outline</i>Agregar Participante',
     15            deleteText:'<i class="material-icons">delete_forever</i>',
    1416        })
     17
    1518          $('.datepicker').pickadate({
    1619            selectMonths: true, // Creates a dropdown to control month
     
    2124            closeOnSelect: false, // Close upon selecting a date,
    2225            format: "dd/mm/yyyy",
     26            // The title label to use for the month nav buttons
     27            labelMonthNext: 'Mes siguiente',
     28            labelMonthPrev: 'Mes anterior',
     29
     30            // The title label to use for the dropdown selectors
     31            labelMonthSelect: 'Selecciona un mes',
     32            labelYearSelect: 'Selecciona un año',
     33
     34            // Months and weekdays
     35            monthsFull: [ 'Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre' ],
     36            monthsShort: [ 'Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic' ],
     37            weekdaysFull: [ 'Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado' ],
     38            weekdaysShort: [ 'Dom', 'Lun', 'Mar', 'Mie', 'Jue', 'Vie', 'Sab' ],
     39
     40            // Materialize modified
     41            weekdaysLetter: [ 'D', 'L', 'M', 'Mi', 'J', 'V', 'S' ],
     42
     43            // Today and clear
     44            today: 'Hoy',
     45            clear: 'Limpiar',
     46            close: 'Ok',
    2347          });
    2448    })
     
    2953    <div class="content center">
    3054        <h5>Datos del Evento</h5><hr/><br>
    31         <form id="form" method="post">
     55        <form id="form" method="post" enctype="multipart/form-data">
    3256            {% csrf_token %}
    3357            <div class="input-field {% if form.nombre_evento.errors %}invalid{% endif %}">
     
    4872                <div class="btn">
    4973                <span for="icon_prefix {{ form.archivo.auto_id }}">Archivo</span>
    50                     <input type="file">
     74                    <input type="file" name="file" id="file" accept=".pdf">
    5175                </div>
    5276                <div class="file-path-wrapper">
  • eventos/views.py

    rb8fffff ra4764f9  
    1 import random
     1# -*- encoding: utf-8 -*-
     2
     3import os
     4import requests
     5from django.conf import settings
    26from django.contrib import messages
    37from django.contrib.auth.mixins import LoginRequiredMixin
     8from django.core.files.base import ContentFile
     9from django.core.files.storage import default_storage
    410from django.core.urlresolvers import reverse_lazy
    511from django.shortcuts import (
    6     render, redirect, get_object_or_404
     12    redirect
    713)
    814from django.views.generic import ListView, FormView
     
    1925)
    2026
     27
     28def handle_uploaded_file(file, name):
     29    with open('%s/%s' % (settings.TMP, name), 'wb+') as destination:
     30        for chunk in file.chunks():
     31            destination.write(chunk)
    2132
    2233class RegisterEvent(LoginRequiredMixin, FormView):
     
    4455
    4556    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)))
     57        nuevo_evento = self.form_class(request.POST, request.FILES).save(commit=False)
     58        file =  request.FILES['file']
     59        handle_uploaded_file(request.FILES['file'], file)
     60        ruta = '%s/%s' % (settings.TMP, file)
     61        files = {'file': open(ruta, 'rb')}
     62        try:
     63            r = requests.post('https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/cargar', verify=False, headers={'Authorization': 'Basic YWRtaW46YWRtaW4='}, files=files)
     64            nuevo_participante = self.form_participante(request.POST)
     65            consulta_api = r.json()['fileId']
     66            # elimina el archivo si fue creado en la carpeta tmp
     67            os.unlink(ruta)
     68        except Exception as e:
     69            print (e)
     70            messages.error(self.request, "Error al concetar al servidor y subir\
     71                                          el archivo a la api Murachi")
     72            return redirect(self.success_url)
     73        try:
     74            if self.form_class(request.POST).is_valid() and nuevo_participante.is_valid():
     75                nuevo_evento.serial = consulta_api
     76                nuevo_evento.save()
     77                # Control para guardar y asignar participantes al evento
     78                for form in nuevo_participante:
     79                    if form.cleaned_data.get('DELETE') and form.instance.pk:
     80                        form.instance.delete()
     81                    else:
     82                        instance = form.save(commit=False)
     83                        parametros = {
     84                                        'nombres': instance.nombres,
     85                                        'apellidos': instance.apellidos,
     86                                        'correo': instance.correo
     87                                        }
     88                        nuevo_participante, create = Participante.objects.update_or_create(pasaporte=instance.pasaporte, defaults=parametros)
     89                        asigna_evento = ParticipanteEvento(
     90                                        fk_participante=nuevo_participante,
     91                                        fk_evento=nuevo_evento)
     92                        asigna_evento.save()
     93                messages.success(self.request, "El usaurio %s, ha creado con exito,\
     94                                            un nuevo envento %s" %
     95                                 (str(self.request.user),
     96                                  str(nuevo_evento)))
     97            else:
     98                messages.error(self.request, "Existe un error en el\
     99                                              Formualario %s %s" %
     100                               (self.form_class(request.POST).errors,
     101                                self.form_participante(request.POST).errors))
     102        except Exception as e:
     103            print (e)
     104            messages.error(self.request, "Esta intentado realizar una\
     105                                          accion incorrecta")
     106
    77107        return redirect(self.success_url)
    78108
  • users/views.py

    r5dea5ff ra4764f9  
    6262        usuario = form.cleaned_data['usuario']
    6363        contrasena = form.cleaned_data['contrasena']
    64        
     64        try:
     65            validate_email(usuario)
     66            try:
     67                usuario = User.objects.get(email=usuario).username
     68            except:
     69                messages.error(self.request, 'No existe este correo: %s \
     70                                              asociado a una cuenta' % (usuario))
     71        except Exception as e:
     72            print (e)
     73
    6574        usuario = authenticate(username=usuario, password=contrasena)
    6675        if usuario is not None:
Note: See TracChangeset for help on using the changeset viewer.