source: firmaeventos/users/views.py @ 2f56f4e

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

Renombrado utils como base, cambiado el template, quitados modelos no usados, agregado materialize

  • Property mode set to 100644
File size: 4.4 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 (
25    LoginRequiredMixin
26)
27from django.contrib.contenttypes.models import ContentType
28from django.contrib.messages.views import SuccessMessageMixin
29from django.core.exceptions import PermissionDenied
30from django.core.validators import validate_email
31from django.core.urlresolvers import (
32    reverse_lazy, reverse
33)
34
35from django.shortcuts import (
36    render, redirect, get_object_or_404
37)
38from django.views.generic import TemplateView
39from django.views.generic.base import RedirectView
40from django.views.generic.edit import (
41    FormView, UpdateView
42)
43from multi_form_view import MultiModelFormView
44
45from .forms import (
46    FormularioLogin, FormularioUpdate
47)
48
49from base.views import (
50    LoginRequeridoPerAuth
51)
52from base.messages import MENSAJES_LOGIN, MENSAJES_START
53
54class LoginView(FormView):
55    """!
56    Muestra el formulario de ingreso a la aplicación
57
58    @author Ing. Leonel P. Hernandez M. (leonelphm at gmail.com)
59    @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
60    @date 09-01-2017
61    @version 1.0.0
62    """
63    form_class = FormularioLogin
64    template_name = 'users_login.html'
65    success_url = '/inicio/'
66
67    def form_valid(self, form):
68        """
69        Valida el formulario de logeo
70        @return: Dirige a la pantalla inicial de la plataforma
71        """
72        usuario = form.cleaned_data['usuario']
73        contrasena = form.cleaned_data['contrasena']
74        try:
75            usuario = User.objects.get(email=usuario).username
76        except:
77            messages.error(self.request, 'No existe este correo: %s \
78                                          asociado a una cuenta' % (usuario))
79        usuario = authenticate(username=usuario, password=contrasena)
80        if usuario is not None:
81            login(self.request, usuario)
82            self.request.session['permisos'] = list(usuario.get_all_permissions())
83            try:
84                grupos = usuario.groups.all()
85                grupo = []
86                if len(grupos) > 1:
87                    for g in grupos:
88                        grupo += str(g),
89                else:
90                    grupo = str(usuario.groups.get())
91            except:
92                grupo = "No pertenece a un grupo"
93
94            self.request.session['grupos'] = grupo
95
96            if self.request.POST.get('remember_me') is not None:
97                # Session expira a los dos meses si no se deslogea
98                self.request.session.set_expiry(1209600)
99            messages.info(self.request, MENSAJES_START['INICIO_SESION'] % (usuario.first_name, usuario.username))
100        else:
101            user = User.objects.filter(username=form.cleaned_data['usuario'])
102            if user:
103                user = user.get()
104                if not user.is_active:
105                    self.success_url = reverse_lazy('users:login')
106                    messages.error(self.request, MENSAJES_LOGIN['CUENTA_INACTIVA'])
107            else:
108                self.success_url = reverse_lazy('users:login')
109                messages.warning(self.request, MENSAJES_LOGIN['LOGIN_USUARIO_NO_VALIDO'])
110
111        return super(LoginView, self).form_valid(form)
112
113
114class LogOutView(RedirectView):
115    """!
116    Salir de la apliacion
117
118    @author Ing. Leonel P. Hernandez M. (leonelphm at gmail.com)
119    @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
120    @date 09-01-2017
121    @version 1.0.0
122    """
123    permanent = False
124    query_string = True
125
126    def get_redirect_url(self):
127        """!
128        Dirige a la pantalla del login
129        @return: A la url del login
130        """
131        logout(self.request)
132        return reverse_lazy('users:login')
Note: See TracBrowser for help on using the repository browser.