source: firmaeventos/users/views.py @ 5db8af8

Last change on this file since 5db8af8 was 989c168, checked in by rudmanmrrod <rudman22@…>, 7 years ago

Ajustados estilos, removido login con email

  • Property mode set to 100644
File size: 3.6 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='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</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='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</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       
65        usuario = authenticate(username=usuario, password=contrasena)
66        if usuario is not None:
67            login(self.request, usuario)
68
69            if self.request.POST.get('remember_me') is not None:
70                # Session expira a los dos meses si no se deslogea
71                self.request.session.set_expiry(1209600)
72            messages.info(self.request, MENSAJES_START['INICIO_SESION'] % (usuario.first_name, usuario.username))
73        else:
74            user = User.objects.filter(username=form.cleaned_data['usuario'])
75            if user:
76                user = user.get()
77                if not user.is_active:
78                    self.success_url = reverse_lazy('users:login')
79                    messages.error(self.request, MENSAJES_LOGIN['CUENTA_INACTIVA'])
80            else:
81                self.success_url = reverse_lazy('users:login')
82                messages.warning(self.request, MENSAJES_LOGIN['LOGIN_USUARIO_NO_VALIDO'])
83
84        return super(LoginView, self).form_valid(form)
85
86
87class LogOutView(RedirectView):
88    """!
89    Salir de la apliacion
90
91    @author Ing. Leonel P. Hernandez M. (leonelphm at gmail.com)
92    @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
93    @date 09-01-2017
94    @version 1.0.0
95    """
96    permanent = False
97    query_string = True
98
99    def get_redirect_url(self):
100        """!
101        Dirige a la pantalla del login
102        @return: A la url del login
103        """
104        logout(self.request)
105        return reverse_lazy('users:login')
Note: See TracBrowser for help on using the repository browser.