# -*- 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 dal import autocomplete from braces.views import GroupRequiredMixin 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, GroupRequiredMixin): """! 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"