source: firmaeventos/users/views.py @ 7cad786

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

Acomodados estilos del usuario

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