# -*- coding: utf-8 -*- """! Vista que construye los controladores para las utilidades de la plataforma @author Ing. Leonel P. Hernandez M. (leonelphm at gmail.com) @copyright GNU Public License versión 3 (GPLv3) @date 09-06-2017 @version 1.0.0 """ import json from django.core.serializers.json import DjangoJSONEncoder from django.http import HttpResponse from django.shortcuts import render from django.views.generic import TemplateView from django.contrib import messages from django.contrib.auth.mixins import ( PermissionRequiredMixin, LoginRequiredMixin ) from django.shortcuts import ( redirect ) from .models import * from .messages import MENSAJES_LOGIN class LoginRequeridoPerAuth(LoginRequiredMixin): """! Clase que construye el controlador para el login requerido, se sobreescribe el metodo dispatch @author Ing. Leonel Paolo Hernandez Macchiarulo (leonelphm at gmail.com) @copyright GNU Public License versión 3 (GPLv3) @date 09-06-2017 @version 1.0.0 """ def dispatch(self, request, *args, **kwargs): """ Envia una alerta al usuario que intenta acceder sin permisos para esta clase @return: Direcciona al login en caso de no poseer permisos, en caso contrario accede a la clase """ if not request.user.is_authenticated: messages.warning(self.request, MENSAJES_LOGIN['LOGIN_REQUERIDO']) return self.handle_no_permission() valid_group = False grupos = request.user.groups.all() grupo = [] if len(grupos) > 1: for g in grupos: grupo += str(g), if (str(g) in self.get_group_required()): valid_group = True else: try: grupo = str(request.user.groups.get()) except: return redirect('users:403error') if (grupo in self.get_group_required()): valid_group = True if not (valid_group): return redirect('users:403error') return super(LoginRequiredMixin, self).dispatch(request, *args, **kwargs) class StartView(TemplateView): """! Muestra el inicio de la plataforma @author Ing. Leonel Paolo Hernandez Macchiarulo (leonelphm at gmail.com) @copyright GNU Public License versión 3 (GPLv3) @date 09-01-2017 @version 1.0.0 @return: El template inicial de la plataforma """ template_name = "index.html"