1 | # -*- coding: utf-8 -*- |
---|
2 | """! |
---|
3 | Vista que construye los controladores para las utilidades de la plataforma |
---|
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-06-2017 |
---|
8 | @version 1.0.0 |
---|
9 | """ |
---|
10 | import json |
---|
11 | from django.core.serializers.json import DjangoJSONEncoder |
---|
12 | from django.http import HttpResponse |
---|
13 | from django.shortcuts import render |
---|
14 | from dal import autocomplete |
---|
15 | from braces.views import GroupRequiredMixin |
---|
16 | from django.views.generic import TemplateView |
---|
17 | from django.contrib import messages |
---|
18 | from django.contrib.auth.mixins import ( |
---|
19 | PermissionRequiredMixin, LoginRequiredMixin |
---|
20 | ) |
---|
21 | from django.shortcuts import ( |
---|
22 | redirect |
---|
23 | ) |
---|
24 | |
---|
25 | from .models import * |
---|
26 | from .messages import MENSAJES_LOGIN |
---|
27 | |
---|
28 | |
---|
29 | class LoginRequeridoPerAuth(LoginRequiredMixin, GroupRequiredMixin): |
---|
30 | """! |
---|
31 | Clase que construye el controlador para el login requerido, se sobreescribe el metodo dispatch |
---|
32 | |
---|
33 | @author Ing. Leonel Paolo Hernandez Macchiarulo (leonelphm at gmail.com) |
---|
34 | @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> |
---|
35 | @date 09-06-2017 |
---|
36 | @version 1.0.0 |
---|
37 | """ |
---|
38 | |
---|
39 | def dispatch(self, request, *args, **kwargs): |
---|
40 | """ |
---|
41 | Envia una alerta al usuario que intenta acceder sin permisos para esta clase |
---|
42 | @return: Direcciona al login en caso de no poseer permisos, en caso contrario accede a la clase |
---|
43 | """ |
---|
44 | if not request.user.is_authenticated: |
---|
45 | messages.warning(self.request, MENSAJES_LOGIN['LOGIN_REQUERIDO']) |
---|
46 | return self.handle_no_permission() |
---|
47 | valid_group = False |
---|
48 | grupos = request.user.groups.all() |
---|
49 | grupo = [] |
---|
50 | if len(grupos) > 1: |
---|
51 | for g in grupos: |
---|
52 | grupo += str(g), |
---|
53 | if (str(g) in self.get_group_required()): |
---|
54 | valid_group = True |
---|
55 | else: |
---|
56 | try: |
---|
57 | grupo = str(request.user.groups.get()) |
---|
58 | except: |
---|
59 | return redirect('users:403error') |
---|
60 | if (grupo in self.get_group_required()): |
---|
61 | valid_group = True |
---|
62 | if not (valid_group): |
---|
63 | return redirect('users:403error') |
---|
64 | return super(LoginRequiredMixin, self).dispatch(request, *args, **kwargs) |
---|
65 | |
---|
66 | |
---|
67 | class StartView(TemplateView): |
---|
68 | """! |
---|
69 | Muestra el inicio de la plataforma |
---|
70 | |
---|
71 | @author Ing. Leonel Paolo Hernandez Macchiarulo (leonelphm at gmail.com) |
---|
72 | @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> |
---|
73 | @date 09-01-2017 |
---|
74 | @version 1.0.0 |
---|
75 | @return: El template inicial de la plataforma |
---|
76 | """ |
---|
77 | template_name = "index.html" |
---|