source: firmaeventos/users/views.py @ 4db73c3

Last change on this file since 4db73c3 was a4764f9, checked in by lhernandez <lhernandez@…>, 7 years ago

Optimizado registro de eventos, preparando proyecto para las firmas

  • Property mode set to 100644
File size: 4.0 KB
Line 
1# -*- encoding: utf-8 -*-
2"""!
3Vista que controla los procesos de los usuarios
4
5@author Ing. Leonel P. Hernandez M. (leonelphm at gmail.com)
6@copyright <a href='https://www.gnu.org/licenses/gpl-3.0.en.html'>GNU Public License versión 3 (GPLv3)</a>
7@date 09-01-2017
8@version 1.0.0
9"""
10from django.core import serializers
11from django import forms
12from django.db.models import Q
13from django.conf import settings
14from django.contrib import messages
15from django.contrib.auth import (
16    authenticate, logout, login
17)
18
19from django.contrib.admin.models import LogEntry, ADDITION, CHANGE, DELETION
20from django.contrib.auth.models import (
21    Group, Permission, User
22)
23from django.contrib.auth.views import redirect_to_login
24from django.contrib.auth.mixins import LoginRequiredMixin
25from django.contrib.contenttypes.models import ContentType
26from django.contrib.messages.views import SuccessMessageMixin
27from django.core.exceptions import PermissionDenied
28from django.core.validators import validate_email
29from django.core.urlresolvers import (
30    reverse_lazy, reverse
31)
32
33from django.shortcuts import (
34    render, redirect, get_object_or_404
35)
36from django.views.generic import TemplateView
37from django.views.generic.base import RedirectView
38from django.views.generic.edit import FormView
39from multi_form_view import MultiModelFormView
40from .forms import FormularioLogin
41from base.views import LoginRequeridoPerAuth
42from base.messages import MENSAJES_LOGIN, MENSAJES_START
43
44class LoginView(FormView):
45    """!
46    Muestra el formulario de ingreso a la aplicación
47
48    @author Ing. Leonel P. Hernandez M. (leonelphm at gmail.com)
49    @copyright <a href='https://www.gnu.org/licenses/gpl-3.0.en.html'>GNU Public License versión 3 (GPLv3)</a>
50    @date 09-01-2017
51    @version 1.0.0
52    """
53    form_class = FormularioLogin
54    template_name = 'users_login.html'
55    success_url = reverse_lazy('base:inicio')
56
57    def form_valid(self, form):
58        """
59        Valida el formulario de logeo
60        @return: Dirige a la pantalla inicial de la plataforma
61        """
62        usuario = form.cleaned_data['usuario']
63        contrasena = form.cleaned_data['contrasena']
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
74        usuario = authenticate(username=usuario, password=contrasena)
75        if usuario is not None:
76            login(self.request, usuario)
77
78            if self.request.POST.get('remember_me') is not None:
79                # Session expira a los dos meses si no se deslogea
80                self.request.session.set_expiry(1209600)
81            messages.info(self.request, MENSAJES_START['INICIO_SESION'] % (usuario.first_name, usuario.username))
82        else:
83            user = User.objects.filter(username=form.cleaned_data['usuario'])
84            if user:
85                user = user.get()
86                if not user.is_active:
87                    self.success_url = reverse_lazy('users:login')
88                    messages.error(self.request, MENSAJES_LOGIN['CUENTA_INACTIVA'])
89            else:
90                self.success_url = reverse_lazy('users:login')
91                messages.warning(self.request, MENSAJES_LOGIN['LOGIN_USUARIO_NO_VALIDO'])
92
93        return super(LoginView, self).form_valid(form)
94
95
96class LogOutView(RedirectView):
97    """!
98    Salir de la apliacion
99
100    @author Ing. Leonel P. Hernandez M. (leonelphm at gmail.com)
101    @copyright <a href='https://www.gnu.org/licenses/gpl-3.0.en.html'>GNU Public License versión 3 (GPLv3)</a>
102    @date 09-01-2017
103    @version 1.0.0
104    """
105    permanent = False
106    query_string = True
107
108    def get_redirect_url(self):
109        """!
110        Dirige a la pantalla del login
111        @return: A la url del login
112        """
113        logout(self.request)
114        return reverse_lazy('users:login')
Note: See TracBrowser for help on using the repository browser.