Work in progress: concept relations using predicates...
git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@1093 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
parent
07b62baa25
commit
09b3bf29e5
3 changed files with 26 additions and 23 deletions
|
@ -88,9 +88,9 @@ class ConceptView(BaseView):
|
||||||
predicate = self.loopsRoot.loopsTraverse(relToken)
|
predicate = self.loopsRoot.loopsTraverse(relToken)
|
||||||
qualifier = self.request.get('qualifier')
|
qualifier = self.request.get('qualifier')
|
||||||
if qualifier == 'parents':
|
if qualifier == 'parents':
|
||||||
self.context.deassignParents(concept, [predicate])
|
self.context.deassignParent(concept, [predicate])
|
||||||
elif qualifier == 'children':
|
elif qualifier == 'children':
|
||||||
self.context.deassignChildren(concept, [predicate])
|
self.context.deassignChild(concept, [predicate])
|
||||||
else:
|
else:
|
||||||
raise(BadRequest, 'Illegal qualifier: %s.' % qualifier)
|
raise(BadRequest, 'Illegal qualifier: %s.' % qualifier)
|
||||||
else:
|
else:
|
||||||
|
|
24
concept.py
24
concept.py
|
@ -98,7 +98,7 @@ class Concept(Contained, Persistent):
|
||||||
if current != concept:
|
if current != concept:
|
||||||
typePred = self.getConceptManager().getTypePredicate()
|
typePred = self.getConceptManager().getTypePredicate()
|
||||||
if current is not None:
|
if current is not None:
|
||||||
self.deassignParents(current, [typePred])
|
self.deassignParent(current, [typePred])
|
||||||
self.assignParent(concept, typePred)
|
self.assignParent(concept, typePred)
|
||||||
#cm = self.getLoopsRoot().getConceptManager()
|
#cm = self.getLoopsRoot().getConceptManager()
|
||||||
#typeRelation = ConceptRelation(removeSecurityProxy(concept), self,
|
#typeRelation = ConceptRelation(removeSecurityProxy(concept), self,
|
||||||
|
@ -117,20 +117,20 @@ class Concept(Contained, Persistent):
|
||||||
|
|
||||||
# concept relations
|
# concept relations
|
||||||
|
|
||||||
def getChildRelations(self, predicates=None, second=None):
|
def getChildRelations(self, predicates=None, child=None):
|
||||||
predicates = predicates is None and ['*'] or predicates
|
predicates = predicates is None and ['*'] or predicates
|
||||||
relationships = [ConceptRelation(self, None, p) for p in predicates]
|
relationships = [ConceptRelation(self, None, p) for p in predicates]
|
||||||
# TODO: sort...
|
# TODO: sort...
|
||||||
return getRelations(first=self, second=second, relationships=relationships)
|
return getRelations(first=self, second=child, relationships=relationships)
|
||||||
|
|
||||||
def getChildren(self, predicates=None):
|
def getChildren(self, predicates=None):
|
||||||
return [r.second for r in self.getChildRelations(predicates)]
|
return [r.second for r in self.getChildRelations(predicates)]
|
||||||
|
|
||||||
def getParentRelations (self, predicates=None, first=None):
|
def getParentRelations (self, predicates=None, parent=None):
|
||||||
predicates = predicates is None and ['*'] or predicates
|
predicates = predicates is None and ['*'] or predicates
|
||||||
relationships = [ConceptRelation(None, self, p) for p in predicates]
|
relationships = [ConceptRelation(None, self, p) for p in predicates]
|
||||||
# TODO: sort...
|
# TODO: sort...
|
||||||
return getRelations(first=first, second=self, relationships=relationships)
|
return getRelations(first=parent, second=self, relationships=relationships)
|
||||||
|
|
||||||
def getParents(self, predicates=None):
|
def getParents(self, predicates=None):
|
||||||
return [r.first for r in self.getParentRelations(predicates)]
|
return [r.first for r in self.getParentRelations(predicates)]
|
||||||
|
@ -146,25 +146,25 @@ class Concept(Contained, Persistent):
|
||||||
def assignParent(self, concept, predicate=None):
|
def assignParent(self, concept, predicate=None):
|
||||||
concept.assignChild(self, predicate)
|
concept.assignChild(self, predicate)
|
||||||
|
|
||||||
def deassignChildren(self, concept, predicates=None):
|
def deassignChild(self, child, predicates=None):
|
||||||
registry = zapi.getUtility(IRelationRegistry)
|
registry = zapi.getUtility(IRelationRegistry)
|
||||||
#relations = []
|
#relations = []
|
||||||
#for rs in relationships:
|
#for rs in relationships:
|
||||||
# relations.extend(registry.query(first=self, second=concept,
|
# relations.extend(registry.query(first=self, second=concept,
|
||||||
# relationship=rs))
|
# relationship=rs))
|
||||||
for rel in self.getChildRelations(predicates, concept):
|
for rel in self.getChildRelations(predicates, child):
|
||||||
registry.unregister(rel)
|
registry.unregister(rel)
|
||||||
|
|
||||||
def deassignParents(self, concept, predicates=None):
|
def deassignParent(self, parent, predicates=None):
|
||||||
concept.deassignChildren(self, predicates)
|
parent.deassignChild(self, predicates)
|
||||||
|
|
||||||
# resource relations
|
# resource relations
|
||||||
|
|
||||||
def getResourceRelations(self, predicates=None):
|
def getResourceRelations(self, predicates=None, resource=None):
|
||||||
predicates = predicates is None and ['*'] or predicates
|
predicates = predicates is None and ['*'] or predicates
|
||||||
relationships = [ResourceRelation(self, None, p) for p in predicates]
|
relationships = [ResourceRelation(self, None, p) for p in predicates]
|
||||||
# TODO: sort...
|
# TODO: sort...
|
||||||
return getRelations(first=self, relationships=relationships)
|
return getRelations(first=self, second=resource, relationships=relationships)
|
||||||
|
|
||||||
def getResources(self, predicates=None):
|
def getResources(self, predicates=None):
|
||||||
return [r.second for r in self.getResourceRelations(predicates)]
|
return [r.second for r in self.getResourceRelations(predicates)]
|
||||||
|
@ -178,7 +178,7 @@ class Concept(Contained, Persistent):
|
||||||
|
|
||||||
def deassignResource(self, resource, predicates=None):
|
def deassignResource(self, resource, predicates=None):
|
||||||
registry = zapi.getUtility(IRelationRegistry)
|
registry = zapi.getUtility(IRelationRegistry)
|
||||||
for rel in self.getResourceRelations(predicates):
|
for rel in self.getResourceRelations(predicates, resource):
|
||||||
registry.unregister(rel)
|
registry.unregister(rel)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -84,9 +84,10 @@ class IConcept(ILoopsObject, IPotentialTarget):
|
||||||
optionally restricted to the predicates given.
|
optionally restricted to the predicates given.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def getChildRelations(predicates=None):
|
def getChildRelations(predicates=None, children=None):
|
||||||
""" Return a sequence of relations to other concepts assigned to self
|
""" Return a sequence of relations to other concepts assigned to self
|
||||||
as child concepts, optionally restricted to the predicates given.
|
as child concepts, optionally restricted to the predicates given
|
||||||
|
or to a certain child concept.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def getParents(predicates=None):
|
def getParents(predicates=None):
|
||||||
|
@ -94,9 +95,10 @@ class IConcept(ILoopsObject, IPotentialTarget):
|
||||||
optionally restricted to the predicates given.
|
optionally restricted to the predicates given.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def getParentRelations(predicates=None):
|
def getParentRelations(predicates=None, parents=None):
|
||||||
""" Return a sequence of relations to other concepts assigned to self
|
""" Return a sequence of relations to other concepts assigned to self
|
||||||
as child concepts, optionally restricted to the predicates given.
|
as parent concepts, optionally restricted to the predicates given
|
||||||
|
or to a certain parent concept.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def assignChild(concept, predicate):
|
def assignChild(concept, predicate):
|
||||||
|
@ -113,13 +115,13 @@ class IConcept(ILoopsObject, IPotentialTarget):
|
||||||
The predicate defaults to the concept manager's default predicate.
|
The predicate defaults to the concept manager's default predicate.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def deassignChildren(concept, predicates=None):
|
def deassignChild(child, predicates=None):
|
||||||
""" Remove the child concept relations to the concept given from self,
|
""" Remove the child concept relations to the concept given from self,
|
||||||
optionally restricting them to the predicates given.
|
optionally restricting them to the predicates given.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def deassignParents(concept, predicates=None):
|
def deassignParent(parent, predicates=None):
|
||||||
""" Remove the child concept relations to the concept given from self,
|
""" Remove the parent concept relations to the concept given from self,
|
||||||
optionally restricting them to the predicates given.
|
optionally restricting them to the predicates given.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
@ -128,9 +130,10 @@ class IConcept(ILoopsObject, IPotentialTarget):
|
||||||
optionally restricted to the predicates given.
|
optionally restricted to the predicates given.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def getResourceRelations(predicates=None):
|
def getResourceRelations(predicates=None, resource=None):
|
||||||
""" Return a sequence of relations to resources assigned to self,
|
""" Return a sequence of relations to resources assigned to self,
|
||||||
optionally restricted to the predicates given.
|
optionally restricted to the predicates given or to a certain
|
||||||
|
resource.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def assignResource(resource, predicate):
|
def assignResource(resource, predicate):
|
||||||
|
|
Loading…
Add table
Reference in a new issue