Skip to content
Snippets Groups Projects
entities.py 951 B
Newer Older
from cubicweb.predicates import has_related_entities

from cubes.compound.entities import (IClonableAdapter, IContained, IContainer,
                                     structure_def)


def agent_structure_def(schema):
    return structure_def(schema, 'Agent').items()


class AgentIClonableAdapter(IClonableAdapter):
class AgentInGroupIClonableAdapter(IClonableAdapter):
    """IClonable for Agent member of a Group, following `member` relation for
    cloning.
    """
    __select__ = (IClonableAdapter.__select__
                  & has_related_entities('member', role='object'))
    rtype = 'clone_of'
    follow_relations = [('member', 'object')]


def registration_callback(vreg):
    vreg.register_all(globals().values(), __name__)
    vreg.register(IContainer.build_class('Agent'))
    for etype, parent_relations in agent_structure_def(vreg.schema):
        IContained.register_class(vreg, etype, parent_relations)