add parameter usePredicateIndex to getRelations()
This commit is contained in:
parent
4b54cadcac
commit
d4edd8ee7a
4 changed files with 53 additions and 27 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -3,6 +3,7 @@
|
||||||
dist/
|
dist/
|
||||||
*.project
|
*.project
|
||||||
*.pydevproject
|
*.pydevproject
|
||||||
|
*.ropeproject
|
||||||
*.sublime-project
|
*.sublime-project
|
||||||
*.sublime-workspace
|
*.sublime-workspace
|
||||||
.settings
|
.settings
|
||||||
|
|
26
common.py
26
common.py
|
@ -350,12 +350,14 @@ class RelationSet(object):
|
||||||
|
|
||||||
langInfo = None
|
langInfo = None
|
||||||
|
|
||||||
def __init__(self, context, predicateName, interface=None, noSecurityCheck=False):
|
def __init__(self, context, predicateName, interface=None,
|
||||||
|
noSecurityCheck=False, usePredicateIndex=False):
|
||||||
self.adapted = context
|
self.adapted = context
|
||||||
self.context = baseObject(context)
|
self.context = baseObject(context)
|
||||||
self.predicateName = predicateName
|
self.predicateName = predicateName
|
||||||
self.interface = interface
|
self.interface = interface
|
||||||
self.noSecurityCheck = noSecurityCheck
|
self.noSecurityCheck = noSecurityCheck
|
||||||
|
self.usePredicateIndex = usePredicateIndex
|
||||||
|
|
||||||
@Lazy
|
@Lazy
|
||||||
def loopsRoot(self):
|
def loopsRoot(self):
|
||||||
|
@ -385,7 +387,8 @@ class ParentRelationSet(RelationSet):
|
||||||
if self.adapted.__is_dummy__:
|
if self.adapted.__is_dummy__:
|
||||||
return
|
return
|
||||||
for c in self.context.getParents([self.predicate],
|
for c in self.context.getParents([self.predicate],
|
||||||
noSecurityCheck=self.noSecurityCheck):
|
noSecurityCheck=self.noSecurityCheck,
|
||||||
|
usePredicateIndex=self.usePredicateIndex):
|
||||||
a = adapted(c, langInfo=self.langInfo)
|
a = adapted(c, langInfo=self.langInfo)
|
||||||
if self.interface is None or self.interface.providedBy(a):
|
if self.interface is None or self.interface.providedBy(a):
|
||||||
yield a
|
yield a
|
||||||
|
@ -396,12 +399,14 @@ class ParentRelationSet(RelationSet):
|
||||||
if noSecurityCheck is None:
|
if noSecurityCheck is None:
|
||||||
noSecurityCheck = self.noSecurityCheck
|
noSecurityCheck = self.noSecurityCheck
|
||||||
for r in self.context.getParentRelations([self.predicate],
|
for r in self.context.getParentRelations([self.predicate],
|
||||||
noSecurityCheck=noSecurityCheck):
|
noSecurityCheck=noSecurityCheck,
|
||||||
|
usePredicateIndex=self.usePredicateIndex):
|
||||||
if check is None or check(r):
|
if check is None or check(r):
|
||||||
yield r
|
yield r
|
||||||
|
|
||||||
def getRelated(self, check=None, noSecurityCheck=None):
|
def getRelated(self, check=None, noSecurityCheck=None):
|
||||||
for r in self.getRelations(check, noSecurityCheck):
|
for r in self.getRelations(check, noSecurityCheck,
|
||||||
|
usePredicateIndex=self.usePredicateIndex):
|
||||||
yield adapted(r.first, langInfo=self.langInfo)
|
yield adapted(r.first, langInfo=self.langInfo)
|
||||||
|
|
||||||
|
|
||||||
|
@ -426,7 +431,8 @@ class ChildRelationSet(RelationSet):
|
||||||
def __iter__(self):
|
def __iter__(self):
|
||||||
if self.adapted.__is_dummy__:
|
if self.adapted.__is_dummy__:
|
||||||
return
|
return
|
||||||
for c in self.context.getChildren([self.predicate]):
|
for c in self.context.getChildren([self.predicate],
|
||||||
|
usePredicateIndex=self.usePredicateIndex):
|
||||||
yield adapted(c, langInfo=self.langInfo)
|
yield adapted(c, langInfo=self.langInfo)
|
||||||
|
|
||||||
def getRelations(self, check=None, noSecurityCheck=None):
|
def getRelations(self, check=None, noSecurityCheck=None):
|
||||||
|
@ -435,7 +441,8 @@ class ChildRelationSet(RelationSet):
|
||||||
if noSecurityCheck is None:
|
if noSecurityCheck is None:
|
||||||
noSecurityCheck = self.noSecurityCheck
|
noSecurityCheck = self.noSecurityCheck
|
||||||
for r in self.context.getChildRelations([self.predicate],
|
for r in self.context.getChildRelations([self.predicate],
|
||||||
noSecurityCheck=noSecurityCheck):
|
noSecurityCheck=noSecurityCheck,
|
||||||
|
usePredicateIndex=self.usePredicateIndex):
|
||||||
if check is None or check(r):
|
if check is None or check(r):
|
||||||
yield r
|
yield r
|
||||||
|
|
||||||
|
@ -459,16 +466,19 @@ class TypeInstancesProperty(object):
|
||||||
|
|
||||||
class RelationSetProperty(object):
|
class RelationSetProperty(object):
|
||||||
|
|
||||||
def __init__(self, predicateName, interface=None, noSecurityCheck=False):
|
def __init__(self, predicateName, interface=None,
|
||||||
|
noSecurityCheck=False, usePredicateIndex=False):
|
||||||
self.predicateName = predicateName
|
self.predicateName = predicateName
|
||||||
self.interface = interface
|
self.interface = interface
|
||||||
self.noSecurityCheck = noSecurityCheck
|
self.noSecurityCheck = noSecurityCheck
|
||||||
|
self.usePredicateIndex = usePredicateIndex
|
||||||
|
|
||||||
def __get__(self, inst, class_=None):
|
def __get__(self, inst, class_=None):
|
||||||
if inst is None:
|
if inst is None:
|
||||||
return self
|
return self
|
||||||
return self.factory(inst, self.predicateName, self.interface,
|
return self.factory(inst, self.predicateName, self.interface,
|
||||||
noSecurityCheck=self.noSecurityCheck)
|
noSecurityCheck=self.noSecurityCheck,
|
||||||
|
usePredicateIndex=self.usePredicateIndex)
|
||||||
|
|
||||||
def __set__(self, inst, value):
|
def __set__(self, inst, value):
|
||||||
objects = []
|
objects = []
|
||||||
|
|
42
concept.py
42
concept.py
|
@ -198,33 +198,41 @@ class Concept(Contained, Persistent):
|
||||||
return [r.first for r in rels if canListObject(r.first)]
|
return [r.first for r in rels if canListObject(r.first)]
|
||||||
|
|
||||||
def getChildRelations(self, predicates=None, child=None, sort='default',
|
def getChildRelations(self, predicates=None, child=None, sort='default',
|
||||||
noSecurityCheck=False):
|
noSecurityCheck=False, usePredicateIndex=False):
|
||||||
predicates = predicates is None and ['c*'] or predicates
|
predicates = predicates is None and ['c*'] or predicates
|
||||||
relationships = [ConceptRelation(self, None, p) for p in predicates]
|
relationships = [ConceptRelation(self, None, p) for p in predicates]
|
||||||
if sort == 'default':
|
if sort == 'default':
|
||||||
sort = lambda x: (x.order, (x.second.title and x.second.title.lower()))
|
sort = lambda x: (x.order, (x.second.title and x.second.title.lower()))
|
||||||
rels = (r for r in getRelations(self, child, relationships=relationships)
|
rels = (r for r in getRelations(self, child, relationships=relationships,
|
||||||
|
usePredicateIndex=usePredicateIndex)
|
||||||
if canListObject(r.second, noSecurityCheck) and
|
if canListObject(r.second, noSecurityCheck) and
|
||||||
IConcept.providedBy(r.second))
|
IConcept.providedBy(r.second))
|
||||||
return sorted(rels, key=sort)
|
return sorted(rels, key=sort)
|
||||||
|
|
||||||
def getChildren(self, predicates=None, sort='default', noSecurityCheck=False):
|
def getChildren(self, predicates=None, sort='default',
|
||||||
return [r.second for r in self.getChildRelations(predicates, sort=sort,
|
noSecurityCheck=False, usePredicateIndex=False):
|
||||||
noSecurityCheck=noSecurityCheck)]
|
return [r.second for r in self.getChildRelations(
|
||||||
|
predicates, sort=sort,
|
||||||
|
noSecurityCheck=noSecurityCheck,
|
||||||
|
usePredicateIndex=usePredicateIndex)]
|
||||||
|
|
||||||
def getParentRelations (self, predicates=None, parent=None, sort='default',
|
def getParentRelations (self, predicates=None, parent=None, sort='default',
|
||||||
noSecurityCheck=False):
|
noSecurityCheck=False, usePredicateIndex=False):
|
||||||
predicates = predicates is None and ['c*'] or predicates
|
predicates = predicates is None and ['c*'] or predicates
|
||||||
relationships = [ConceptRelation(None, self, p) for p in predicates]
|
relationships = [ConceptRelation(None, self, p) for p in predicates]
|
||||||
if sort == 'default':
|
if sort == 'default':
|
||||||
sort = lambda x: (x.first.title and x.first.title.lower())
|
sort = lambda x: (x.first.title and x.first.title.lower())
|
||||||
rels = (r for r in getRelations(parent, self, relationships=relationships)
|
rels = (r for r in getRelations(parent, self, relationships=relationships,
|
||||||
|
usePredicateIndex=usePredicateIndex)
|
||||||
if canListObject(r.first, noSecurityCheck))
|
if canListObject(r.first, noSecurityCheck))
|
||||||
return sorted(rels, key=sort)
|
return sorted(rels, key=sort)
|
||||||
|
|
||||||
def getParents(self, predicates=None, sort='default', noSecurityCheck=False):
|
def getParents(self, predicates=None, sort='default',
|
||||||
return [r.first for r in self.getParentRelations(predicates, sort=sort,
|
noSecurityCheck=False, usePredicateIndex=False):
|
||||||
noSecurityCheck=noSecurityCheck)]
|
return [r.first for r in self.getParentRelations(
|
||||||
|
predicates, sort=sort,
|
||||||
|
noSecurityCheck=noSecurityCheck,
|
||||||
|
usePredicateIndex=usePredicateIndex)]
|
||||||
|
|
||||||
def checkPredicate(self, child, predicate=None):
|
def checkPredicate(self, child, predicate=None):
|
||||||
cm = self.getConceptManager()
|
cm = self.getConceptManager()
|
||||||
|
@ -296,21 +304,25 @@ class Concept(Contained, Persistent):
|
||||||
# resource relations
|
# resource relations
|
||||||
|
|
||||||
def getResourceRelations(self, predicates=None, resource=None, sort='default',
|
def getResourceRelations(self, predicates=None, resource=None, sort='default',
|
||||||
noSecurityCheck=False):
|
noSecurityCheck=False, usePredicateIndex=False):
|
||||||
if resource is not None:
|
if resource is not None:
|
||||||
resource = getMaster(resource)
|
resource = getMaster(resource)
|
||||||
predicates = predicates is None and ['r*'] or predicates
|
predicates = predicates is None and ['r*'] or predicates
|
||||||
relationships = [ResourceRelation(self, None, p) for p in predicates]
|
relationships = [ResourceRelation(self, None, p) for p in predicates]
|
||||||
if sort == 'default':
|
if sort == 'default':
|
||||||
sort = lambda x: (x.order, x.second.title.lower())
|
sort = lambda x: (x.order, x.second.title.lower())
|
||||||
rels = (r for r in getRelations(self, resource, relationships=relationships)
|
rels = (r for r in getRelations(self, resource, relationships=relationships,
|
||||||
|
usePredicateIndex=usePredicateIndex)
|
||||||
if canListObject(r.second, noSecurityCheck) and
|
if canListObject(r.second, noSecurityCheck) and
|
||||||
IResource.providedBy(r.second))
|
IResource.providedBy(r.second))
|
||||||
return sorted(rels, key=sort)
|
return sorted(rels, key=sort)
|
||||||
|
|
||||||
def getResources(self, predicates=None, sort='default', noSecurityCheck=False):
|
def getResources(self, predicates=None, sort='default',
|
||||||
return [r.second for r in self.getResourceRelations(predicates, sort=sort,
|
noSecurityCheck=False, usePredicateIndex=False):
|
||||||
noSecurityCheck=noSecurityCheck)]
|
return [r.second for r in self.getResourceRelations(
|
||||||
|
predicates, sort=sort,
|
||||||
|
noSecurityCheck=noSecurityCheck,
|
||||||
|
usePredicateIndex=usePredicateIndex)]
|
||||||
|
|
||||||
def assignResource(self, resource, predicate=None, order=0, relevance=1.0):
|
def assignResource(self, resource, predicate=None, order=0, relevance=1.0):
|
||||||
resource = getMaster(resource)
|
resource = getMaster(resource)
|
||||||
|
|
11
resource.py
11
resource.py
|
@ -205,7 +205,7 @@ class Resource(Image, Contained):
|
||||||
return [r.first for r in rels if canListObject(r.first)]
|
return [r.first for r in rels if canListObject(r.first)]
|
||||||
|
|
||||||
def getConceptRelations (self, predicates=None, concept=None, sort='default',
|
def getConceptRelations (self, predicates=None, concept=None, sort='default',
|
||||||
noSecurityCheck=False):
|
noSecurityCheck=False, usePredicateIndex=False):
|
||||||
predicates = predicates is None and ['r*'] or predicates
|
predicates = predicates is None and ['r*'] or predicates
|
||||||
obj = getMaster(self)
|
obj = getMaster(self)
|
||||||
relationships = [ResourceRelation(None, obj, p) for p in predicates]
|
relationships = [ResourceRelation(None, obj, p) for p in predicates]
|
||||||
|
@ -213,14 +213,17 @@ class Resource(Image, Contained):
|
||||||
#sort = lambda x: (x.order, x.first.title.lower())
|
#sort = lambda x: (x.order, x.first.title.lower())
|
||||||
sort = lambda x: (x.first.title.lower())
|
sort = lambda x: (x.first.title.lower())
|
||||||
rels = (r for r in getRelations(first=concept, second=obj,
|
rels = (r for r in getRelations(first=concept, second=obj,
|
||||||
relationships=relationships)
|
relationships=relationships,
|
||||||
|
usePredicateIndex=usePredicateIndex)
|
||||||
if canListObject(r.first, noSecurityCheck))
|
if canListObject(r.first, noSecurityCheck))
|
||||||
return sorted(rels, key=sort)
|
return sorted(rels, key=sort)
|
||||||
|
|
||||||
def getConcepts(self, predicates=None, noSecurityCheck=False):
|
def getConcepts(self, predicates=None, noSecurityCheck=False,
|
||||||
|
usePredicateIndex=False):
|
||||||
obj = getMaster(self)
|
obj = getMaster(self)
|
||||||
return [r.first for r in obj.getConceptRelations(predicates,
|
return [r.first for r in obj.getConceptRelations(predicates,
|
||||||
noSecurityCheck=noSecurityCheck)]
|
noSecurityCheck=noSecurityCheck,
|
||||||
|
usePredicateIndex=usePredicateIndex)]
|
||||||
|
|
||||||
# simplify common access for concepts and resources:
|
# simplify common access for concepts and resources:
|
||||||
getParentRelations = getConceptRelations
|
getParentRelations = getConceptRelations
|
||||||
|
|
Loading…
Add table
Reference in a new issue