Пример #1
0
    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)
Пример #2
0
    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)
Пример #3
0
    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)
Пример #4
0
    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)
Пример #5
0
    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)
Пример #6
0
    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)
Пример #7
0
 def install_permission_handler(self):
     self.allow_read = curry(make_view_permission_handler(
         self, True,
         self.debug_permissions,
         self.required_roles), self)