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