atoti.Hierarchy.viewers#

property Hierarchy.viewers: MutableSet[str]#

visible is True if and only if at least one of the roles of the current user is included in this set.

Example

  • Without security:

    >>> table = session.create_table(
    ...     "Example", data_types={"Product": "String"}
    ... )
    >>> cube = session.create_cube(table)
    >>> hierarchy = cube.hierarchies["Product"]
    

    Each hierarchy is visible by default:

    >>> hierarchy.viewers
    {'ROLE_USER'}
    >>> hierarchy.visible
    True
    

    Hiding the hierarchy from all users:

    >>> hierarchy.viewers.clear()
    >>> hierarchy.viewers
    set()
    >>> hierarchy.visible
    False
    
  • With security:

    >>> session_config = tt.SessionConfig(security=tt.SecurityConfig())
    >>> secured_session = tt.Session.start(session_config)
    >>> table = secured_session.create_table(
    ...     "Example", data_types={"Product": "String"}
    ... )
    >>> cube = secured_session.create_cube(table)
    >>> hierarchy = cube.hierarchies["Product"]
    

    Each hierarchy is visible by default:

    >>> hierarchy.viewers
    {'ROLE_USER'}
    >>> hierarchy.visible
    True
    

    Setting up a non-admin user:

    >>> authentication = tt.BasicAuthentication("John", "passwd")
    >>> secured_session.security.individual_roles[authentication.username] = {
    ...     "ROLE_USER"
    ... }
    >>> secured_session.security.basic_authentication.credentials[
    ...     authentication.username
    ... ] = authentication.password
    >>> john_session = tt.Session.connect(
    ...     secured_session.url, authentication=authentication
    ... )
    

    John has ROLE_USER which is in viewers so the hierarchy is visible to him:

    >>> hierarchy_seen_by_john = john_session.cubes["Example"].hierarchies[
    ...     "Product"
    ... ]
    >>> hierarchy_seen_by_john.visible
    True
    

    Hiding the hierarchy from all users:

    >>> hierarchy.viewers.clear()
    >>> hierarchy.viewers
    set()
    >>> hierarchy.visible
    False
    >>> hierarchy_seen_by_john.visible
    False
    

    Making the hierarchy visible to admins only:

    >>> hierarchy.viewers.add("ROLE_ADMIN")
    >>> hierarchy.viewers
    {'ROLE_ADMIN'}
    >>> hierarchy.visible
    True
    >>> hierarchy_seen_by_john.visible
    False