def __init__(self, actor, action): if not isinstance(action, actions.Action): raise Exception("%s : %r is not an Action" % (actor, action)) self.action = action self.actor = actor required = set(actor.required_roles) # required = set() # required |= actor.required_roles required |= action.required_roles debug_permissions = actor.debug_permissions and \ action.debug_permissions if debug_permissions: if settings.DEBUG: logger.info("debug_permissions active for %r (required=%s)", self, required) else: raise Exception( "settings.DEBUG is False, but `debug_permissions` " "for %r (required=%s) is active (settings=%s)." % ( self, required, os.environ['DJANGO_SETTINGS_MODULE'])) self.allow_view = curry(make_view_permission_handler( self, action.readonly, debug_permissions, required), action) self._allow = curry(make_permission_handler( action, actor, action.readonly, debug_permissions, required, allowed_states=action.required_states), action)
def install_permission_handler(self): """Define the `allow_read` handler used by :meth:`get_view_permission`. This must be done only once, but after having configured :attr:`debug_permissions` and :attr:`required_roles`. """ self.allow_read = curry( make_view_permission_handler(self, True, self.debug_permissions, self.required_roles), self)
def install_permission_handler(self): """Define the `allow_read` handler used by :meth:`get_view_permission`. This must be done only once, but after having configured :attr:`debug_permissions` and :attr:`required_roles`. """ self.allow_read = curry(make_view_permission_handler( self, True, self.debug_permissions, self.required_roles), self)
def __init__(self, actor, action): # the following test would require us to import Action, which # would trigger a circular import Action -> BoundAction -> # BaseRequest -> InstanceAction -> Action # if not isinstance(action, Action): # raise Exception("%s : %r is not an Action" % (actor, action)) self.action = action self.actor = actor # take care of not accidentally modifying ther actor's # requirements! required = set(action.get_required_roles(actor)) # required = set(actor.required_roles) # if action.defining_actor is None: # required = set(actor.required_roles) # else: # required = set(action.defining_actor.required_roles) # required = set() # required |= actor.required_roles required |= action.required_roles if True: # 20170902 useful when debugging permission problems self.required = required debug_permissions = actor.debug_permissions and \ action.debug_permissions if debug_permissions: if settings.DEBUG: logger.info("debug_permissions active for %r (required=%s)", self, required) else: raise Exception( "settings.DEBUG is False, but `debug_permissions` " "for %r (required=%s) is active (settings=%s)." % (self, required, os.environ['DJANGO_SETTINGS_MODULE'])) self.allow_view = curry( make_view_permission_handler(self, action.readonly, debug_permissions, required), action) self._allow = curry( make_permission_handler(action, actor, action.readonly, debug_permissions, required), action)
def __init__(self, actor, action): # the following test would require us to import Action, which # would trigger a circular import Action -> BoundAction -> # BaseRequest -> InstanceAction -> Action # if not isinstance(action, Action): # raise Exception("%s : %r is not an Action" % (actor, action)) self.action = action self.actor = actor # take care of not accidentally modifying ther actor's # requirements! required = set(action.get_required_roles(actor)) # required = set(actor.required_roles) # if action.defining_actor is None: # required = set(actor.required_roles) # else: # required = set(action.defining_actor.required_roles) # required = set() # required |= actor.required_roles required |= action.required_roles if True: # 20170902 useful when debugging permission problems self.required = required debug_permissions = actor.debug_permissions and \ action.debug_permissions if debug_permissions: if settings.DEBUG: logger.info("debug_permissions active for %r (required=%s)", self, required) else: raise Exception( "settings.DEBUG is False, but `debug_permissions` " "for %r (required=%s) is active (settings=%s)." % ( self, required, os.environ['DJANGO_SETTINGS_MODULE'])) self.allow_view = curry(make_view_permission_handler( self, action.readonly, debug_permissions, required), action) self._allow = curry(make_permission_handler( action, actor, action.readonly, debug_permissions, required), action)
def __init__(self, actor, action): if not isinstance(action, actions.Action): raise Exception("%s : %r is not an Action" % (actor, action)) self.action = action self.actor = actor required = set(actor.required_roles) # required = set() # required |= actor.required_roles required |= action.required_roles debug_permissions = actor.debug_permissions and \ action.debug_permissions if debug_permissions: if settings.DEBUG: logger.info("debug_permissions active for %r (required=%s)", self, required) else: raise Exception( "settings.DEBUG is False, but `debug_permissions` " "for %r (required=%s) is active (settings=%s)." % (self, required, os.environ['DJANGO_SETTINGS_MODULE'])) self.allow_view = curry( make_view_permission_handler(self, action.readonly, debug_permissions, required), action) self._allow = curry( make_permission_handler(action, actor, action.readonly, debug_permissions, required, allowed_states=action.required_states), action)
def install_permission_handler(self): self.allow_read = curry(make_view_permission_handler( self, True, self.debug_permissions, self.required_roles), self)