added XML-RPC method assignChild()
git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@1572 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
parent
7cfd866670
commit
5e038c71e6
3 changed files with 40 additions and 5 deletions
|
@ -11,6 +11,7 @@ Let's do some basic set up
|
|||
|
||||
>>> from zope import component, interface
|
||||
>>> from zope.publisher.browser import TestRequest
|
||||
>>> from loops.concept import Concept
|
||||
|
||||
and setup a simple loops site with a concept manager and some concepts
|
||||
(with all the type machinery, what in real life is done via standard
|
||||
|
@ -19,7 +20,8 @@ ZCML setup):
|
|||
>>> from cybertools.relation.registry import DummyRelationRegistry
|
||||
>>> component.provideUtility(DummyRelationRegistry())
|
||||
>>> from cybertools.relation.tests import IntIdsStub
|
||||
>>> component.provideUtility(IntIdsStub())
|
||||
>>> intIds = IntIdsStub()
|
||||
>>> component.provideUtility(intIds)
|
||||
|
||||
>>> from loops.type import ConceptType, TypeConcept
|
||||
>>> component.provideAdapter(ConceptType)
|
||||
|
@ -37,6 +39,23 @@ Let's look what setup has provided us with:
|
|||
>>> list(concepts)
|
||||
[u'file', u'hasType', u'image', u'predicate', u'standard', u'textdocument', u'type']
|
||||
|
||||
Now let's add a few more concepts:
|
||||
|
||||
>>> topic = concepts[u'topic'] = Concept()
|
||||
>>> topic.title = u'Topic'
|
||||
>>> intIds.register(topic)
|
||||
7
|
||||
>>> zope = concepts[u'zope'] = Concept()
|
||||
>>> zope.conceptType = topic
|
||||
>>> zope.title = u'Zope'
|
||||
>>> intIds.register(zope)
|
||||
8
|
||||
>>> zope3 = concepts[u'zope3'] = Concept()
|
||||
>>> zope3.conceptType = topic
|
||||
>>> zope3.title = u'Zope 3'
|
||||
>>> intIds.register(zope3)
|
||||
9
|
||||
|
||||
Navigation typically starts at a start object, which by default ist the
|
||||
top-level type concept:
|
||||
|
||||
|
@ -57,7 +76,7 @@ If we provide a concept named "domain" this will be used as starting point:
|
|||
>>> sorted(startObj.keys())
|
||||
['children', 'id', 'name', 'parents', 'title', 'type']
|
||||
>>> startObj['id'], startObj['name'], startObj['title'], startObj['type']
|
||||
('7', u'domain', u'Domain', '0')
|
||||
('10', u'domain', u'Domain', '0')
|
||||
|
||||
There are a few standard objects we can retrieve directly:
|
||||
|
||||
|
@ -123,6 +142,14 @@ We can also retrieve children and parents explicitely:
|
|||
>>> sorted(p['name'] for p in pa[0]['objects'])
|
||||
[u'predicate']
|
||||
|
||||
Updating the concept map
|
||||
------------------------
|
||||
|
||||
>>> zopeId = xrf.getObjectByName('zope')['id']
|
||||
>>> zope3Id = xrf.getObjectByName('zope3')['id']
|
||||
>>> xrf.assignChild(zopeId, zope3Id, defaultPred['id'])
|
||||
'OK'
|
||||
|
||||
|
||||
Fin de partie
|
||||
=============
|
||||
|
|
|
@ -69,8 +69,8 @@ class LoopsMethods(MethodPublisher):
|
|||
|
||||
def getPredicates(self):
|
||||
pt = self.concepts.getDefaultPredicate().conceptType
|
||||
types = pt.getChildren((self.concepts.getTypePredicate(),))
|
||||
return [objectAsDict(t) for t in types]
|
||||
preds = pt.getChildren((self.concepts.getTypePredicate(),))
|
||||
return [objectAsDict(p) for p in preds]
|
||||
|
||||
def getChildren(self, id, predicates=[], child=''):
|
||||
obj = getObjectForUid(id)
|
||||
|
@ -93,6 +93,13 @@ class LoopsMethods(MethodPublisher):
|
|||
obj.getParentRelations(), useSecond=False)
|
||||
return mapping
|
||||
|
||||
def assignChild(self, objId, predicateId, childId):
|
||||
obj = getObjectForUid(objId)
|
||||
pred = getObjectForUid(predicateId)
|
||||
child = getObjectForUid(childId)
|
||||
obj.assignChild(child, pred)
|
||||
return 'OK'
|
||||
|
||||
|
||||
def objectAsDict(obj):
|
||||
mapping = {'id': getUidForObject(obj), 'name': getName(obj), 'title': obj.title,
|
||||
|
|
|
@ -25,7 +25,8 @@
|
|||
methods="getStartObject getObjectById getObjectByName
|
||||
getDefaultPredicate getTypePredicate getTypeConcept
|
||||
getConceptTypes getPredicates
|
||||
getChildren getParents"
|
||||
getChildren getParents
|
||||
assignChild"
|
||||
permission="loops.xmlrpc.ManageConcepts"
|
||||
/>
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue