============================================ General-purpose Link and Relation Management ============================================ ($Id$) Basic setup ----------- >>> from zope import component >>> from cybertools.link.tests import IntIdsStub >>> intids = IntIdsStub() >>> component.provideUtility(intids) >>> from cybertools.link.base import LinkManager >>> links = LinkManager() Create and link objects ----------------------- We create a simple class to derive objects from it. >>> class Page(object): ... pass >>> p1 = Page() >>> p2 = Page() These objects have to be registered with the IntIds utility. >>> intids.register(p1) 0 >>> intids.register(p2) 1 Now we can create a link from p1 to p2. Usually the link gets a name that is related to the target. >>> l01 = links.createLink(name='p2', source=p1, target=p2) Let's have a look at the newly created link and the default values of some of its attributes. >>> (l01.identifier, l01.source, l01.target, l01.name, l01.linkType, l01.state, ... l01.relevance, l01.order) (1, 0, 1, 'p2', u'link', u'valid', 1.0, 0) Query for links --------------- We are now able to query the link manager for links, e.g. using name and source for finding all corresponding links on a page. >>> [l.identifier for l in links.query(name='p2', source=p1)] [1]