Source code for py_abac.policy.conditions.attribute.is_in

"""
    Is in attribute condition
"""

import logging

from marshmallow import post_load

from .base import AttributeCondition, AttributeConditionSchema
from ..collection.base import is_collection

LOG = logging.getLogger(__name__)


[docs]class IsInAttribute(AttributeCondition): """ Condition for attribute value in that of another """ def _is_satisfied(self, what) -> bool: # Check if value is a collection if not is_collection(self.value): LOG.debug( "Invalid type '%s' for attribute value at path '%s' for element '%s'." " Condition not satisfied.", type(self.value), self.path, self.ace ) return False return what in self.value
[docs]class IsInAttributeSchema(AttributeConditionSchema): """ JSON schema for is in attribute condition """
[docs] @post_load def post_load(self, data, **_): # pylint: disable=missing-docstring,no-self-use return IsInAttribute(**data)