cubicweb/server/test/data/cubicweb_localperms/schema.py
author Philippe Pepiot <philippe.pepiot@logilab.fr>
Tue, 19 Mar 2019 14:26:51 +0100
changeset 12515 2d43c8b30ef0
permissions -rw-r--r--
[server/test] do not depend on third party cubes Drop requirement of basket, card, comment, file, localperms and tag cubes for cubicweb.server tests. Copy needed part of schema, entities, views, hooks into the cubicweb/server/test/data directory (which is included in PYTHONPATH for CubicWebTC tests). For migration tests which use different "datapath", use symlinks to have dependent cubes importables.

from yams.buildobjs import EntityType, RelationType, RelationDefinition, String
from cubicweb.schema import PUB_SYSTEM_ENTITY_PERMS, PUB_SYSTEM_REL_PERMS


class CWPermission(EntityType):
    """entity type that may be used to construct some advanced security
    configuration
    """
    __permissions__ = PUB_SYSTEM_ENTITY_PERMS

    name = String(required=True, indexed=True, internationalizable=True,
                  maxsize=100, description=(
                      'name or identifier of the permission'))
    label = String(required=True, internationalizable=True, maxsize=100,
                   description=('distinct label to distinguate between other '
                                'permission entity of the same name'))


class granted_permission(RelationType):
    """explicitly granted permission on an entity"""
    __permissions__ = PUB_SYSTEM_REL_PERMS
    # XXX cardinality = '*1'


class require_permission(RelationType):
    __permissions__ = PUB_SYSTEM_REL_PERMS


class require_group(RelationDefinition):
    """groups to which the permission is granted"""
    __permissions__ = PUB_SYSTEM_REL_PERMS
    subject = 'CWPermission'
    object = 'CWGroup'


class has_group_permission(RelationDefinition):
    """short cut relation for 'U in_group G, P require_group G' for efficiency
    reason. This relation is set automatically, you should not set this.
    """
    __permissions__ = PUB_SYSTEM_REL_PERMS
    subject = 'CWUser'
    object = 'CWPermission'