# -*- 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"