diff --git a/xmlrpc/README.txt b/xmlrpc/README.txt index 5c8aa9d..5f7b15d 100755 --- a/xmlrpc/README.txt +++ b/xmlrpc/README.txt @@ -158,11 +158,17 @@ Updating the concept map >>> zopeId = xrf.getObjectByName('zope')['id'] >>> zope3Id = xrf.getObjectByName('zope3')['id'] - >>> xrf.assignChild(zopeId, zope3Id, defaultPred['id']) + >>> xrf.assignChild(zopeId, defaultPred['id'], zope3Id) 'OK' + >>> pa = xrf.getParents(zope3Id) + >>> len(pa) + 2 - >>> xrf.deassignChild(zopeId, zope3Id, defaultPred['id']) + >>> xrf.deassignChild(zopeId, defaultPred['id'], zope3Id) 'OK' + >>> pa = xrf.getParents(zope3Id) + >>> len(pa) + 1 >>> topicId = xrf.getObjectByName('topic')['id'] >>> xrf.createConcept(topicId, u'zope2', u'Zope 2') @@ -176,6 +182,12 @@ parameter is empty, the name will be generated from the title. {'description': u'', 'title': u'Python', 'type': '24', 'id': '58', 'name': u'python'} +If we try to deassign a ``hasType`` relation nothing will happen; a +corresponding error value will be returned. + + >>> xrf.deassignChild(topicId, typePred['id'], zope3Id) + 'Not allowed' + Changing the attributes of a concept ------------------------------------ diff --git a/xmlrpc/common.py b/xmlrpc/common.py index f46f6b3..1cdcd33 100644 --- a/xmlrpc/common.py +++ b/xmlrpc/common.py @@ -120,15 +120,19 @@ class LoopsMethods(MethodPublisher, I18NView): return mapping def assignChild(self, objId, predicateId, childId): - obj = getObjectForUid(objId) pred = getObjectForUid(predicateId) + if pred == self.typePredicate: + return 'Not allowed' + obj = getObjectForUid(objId) child = getObjectForUid(childId) obj.assignChild(child, pred) return 'OK' def deassignChild(self, objId, predicateId, childId): - obj = getObjectForUid(objId) pred = getObjectForUid(predicateId) + if pred == self.typePredicate: + return 'Not allowed' + obj = getObjectForUid(objId) child = getObjectForUid(childId) obj.deassignChild(child, [pred]) return 'OK'