def is_staff_cuerpo(self): # Si el usuario tiene un rol significa que trabaja en la JNB if self.rol: return False cargo_ids = [cargo.webservice_id for cargo in self.cargos.all()] # Para que el usuario sea considerado staff de cuerpo alguno de sus cargos # tiene que estar en el listado de cargos con permisos en el sistema. return intersect(cargo_ids, settings.CARGOS_CUERPO.values())
def wrap(request, *args, **kwargs): # If it is the superuser, allow everything if request.user.is_superuser: return func(request, *args, **kwargs) # If user isn't authenticated if not request.user.is_authenticated(): log(u'Usuario no autenticado intentó acceder al sistema') request.flash['notice'] = u'Por favor inicie sesión primero' return redirect('login') user_cargo_ids = [cargo.webservice_id for cargo in request.user.get_profile().cargos.all()] # If the user role is not in allowed roles, deny if not request.user.get_profile().rol in self.roles and not intersect(user_cargo_ids, self.cargos): log(u'Usuario autenticado intentó acceder a sección no permitida del sistema') request.flash['error'] = u'Error de acceso' return redirect('index') return func(request, *args, **kwargs)