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/
|
||||
*.project
|
||||
*.pydevproject
|
||||
*.ropeproject
|
||||
*.sublime-project
|
||||
*.sublime-workspace
|
||||
.settings
|
||||
|
|
26
common.py
26
common.py
|
@ -350,12 +350,14 @@ class RelationSet(object):
|
|||
|
||||
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.context = baseObject(context)
|
||||
self.predicateName = predicateName
|
||||
self.interface = interface
|
||||
self.noSecurityCheck = noSecurityCheck
|
||||
self.usePredicateIndex = usePredicateIndex
|
||||
|
||||
@Lazy
|
||||
def loopsRoot(self):
|
||||
|
@ -385,7 +387,8 @@ class ParentRelationSet(RelationSet):
|
|||
if self.adapted.__is_dummy__:
|
||||
return
|
||||
for c in self.context.getParents([self.predicate],
|
||||
noSecurityCheck=self.noSecurityCheck):
|
||||
noSecurityCheck=self.noSecurityCheck,
|
||||
usePredicateIndex=self.usePredicateIndex):
|
||||
a = adapted(c, langInfo=self.langInfo)
|
||||
if self.interface is None or self.interface.providedBy(a):
|
||||
yield a
|
||||
|
@ -396,12 +399,14 @@ class ParentRelationSet(RelationSet):
|
|||
if noSecurityCheck is None:
|
||||
noSecurityCheck = self.noSecurityCheck
|
||||
for r in self.context.getParentRelations([self.predicate],
|
||||
noSecurityCheck=noSecurityCheck):
|
||||
noSecurityCheck=noSecurityCheck,
|
||||
usePredicateIndex=self.usePredicateIndex):
|
||||
if check is None or check(r):
|
||||
yield r
|
||||
|
||||
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)
|
||||
|
||||
|
||||
|
@ -426,7 +431,8 @@ class ChildRelationSet(RelationSet):
|
|||
def __iter__(self):
|
||||
if self.adapted.__is_dummy__:
|
||||
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)
|
||||
|
||||
def getRelations(self, check=None, noSecurityCheck=None):
|
||||
|
@ -435,7 +441,8 @@ class ChildRelationSet(RelationSet):
|
|||
if noSecurityCheck is None:
|
||||
noSecurityCheck = self.noSecurityCheck
|
||||
for r in self.context.getChildRelations([self.predicate],
|
||||
noSecurityCheck=noSecurityCheck):
|
||||
noSecurityCheck=noSecurityCheck,
|
||||
usePredicateIndex=self.usePredicateIndex):
|
||||
if check is None or check(r):
|
||||
yield r
|
||||
|
||||
|
@ -459,16 +466,19 @@ class TypeInstancesProperty(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.interface = interface
|
||||
self.noSecurityCheck = noSecurityCheck
|
||||
self.usePredicateIndex = usePredicateIndex
|
||||
|
||||
def __get__(self, inst, class_=None):
|
||||
if inst is None:
|
||||
return self
|
||||
return self.factory(inst, self.predicateName, self.interface,
|
||||
noSecurityCheck=self.noSecurityCheck)
|
||||
noSecurityCheck=self.noSecurityCheck,
|
||||
usePredicateIndex=self.usePredicateIndex)
|
||||
|
||||
def __set__(self, inst, value):
|
||||
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)]
|
||||
|
||||
def getChildRelations(self, predicates=None, child=None, sort='default',
|
||||
noSecurityCheck=False):
|
||||
noSecurityCheck=False, usePredicateIndex=False):
|
||||
predicates = predicates is None and ['c*'] or predicates
|
||||
relationships = [ConceptRelation(self, None, p) for p in predicates]
|
||||
if sort == 'default':
|
||||
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
|
||||
IConcept.providedBy(r.second))
|
||||
return sorted(rels, key=sort)
|
||||
|
||||
def getChildren(self, predicates=None, sort='default', noSecurityCheck=False):
|
||||
return [r.second for r in self.getChildRelations(predicates, sort=sort,
|
||||
noSecurityCheck=noSecurityCheck)]
|
||||
def getChildren(self, predicates=None, sort='default',
|
||||
noSecurityCheck=False, usePredicateIndex=False):
|
||||
return [r.second for r in self.getChildRelations(
|
||||
predicates, sort=sort,
|
||||
noSecurityCheck=noSecurityCheck,
|
||||
usePredicateIndex=usePredicateIndex)]
|
||||
|
||||
def getParentRelations (self, predicates=None, parent=None, sort='default',
|
||||
noSecurityCheck=False):
|
||||
noSecurityCheck=False, usePredicateIndex=False):
|
||||
predicates = predicates is None and ['c*'] or predicates
|
||||
relationships = [ConceptRelation(None, self, p) for p in predicates]
|
||||
if sort == 'default':
|
||||
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))
|
||||
return sorted(rels, key=sort)
|
||||
|
||||
def getParents(self, predicates=None, sort='default', noSecurityCheck=False):
|
||||
return [r.first for r in self.getParentRelations(predicates, sort=sort,
|
||||
noSecurityCheck=noSecurityCheck)]
|
||||
def getParents(self, predicates=None, sort='default',
|
||||
noSecurityCheck=False, usePredicateIndex=False):
|
||||
return [r.first for r in self.getParentRelations(
|
||||
predicates, sort=sort,
|
||||
noSecurityCheck=noSecurityCheck,
|
||||
usePredicateIndex=usePredicateIndex)]
|
||||
|
||||
def checkPredicate(self, child, predicate=None):
|
||||
cm = self.getConceptManager()
|
||||
|
@ -296,21 +304,25 @@ class Concept(Contained, Persistent):
|
|||
# resource relations
|
||||
|
||||
def getResourceRelations(self, predicates=None, resource=None, sort='default',
|
||||
noSecurityCheck=False):
|
||||
noSecurityCheck=False, usePredicateIndex=False):
|
||||
if resource is not None:
|
||||
resource = getMaster(resource)
|
||||
predicates = predicates is None and ['r*'] or predicates
|
||||
relationships = [ResourceRelation(self, None, p) for p in predicates]
|
||||
if sort == 'default':
|
||||
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
|
||||
IResource.providedBy(r.second))
|
||||
return sorted(rels, key=sort)
|
||||
|
||||
def getResources(self, predicates=None, sort='default', noSecurityCheck=False):
|
||||
return [r.second for r in self.getResourceRelations(predicates, sort=sort,
|
||||
noSecurityCheck=noSecurityCheck)]
|
||||
def getResources(self, predicates=None, sort='default',
|
||||
noSecurityCheck=False, usePredicateIndex=False):
|
||||
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):
|
||||
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)]
|
||||
|
||||
def getConceptRelations (self, predicates=None, concept=None, sort='default',
|
||||
noSecurityCheck=False):
|
||||
noSecurityCheck=False, usePredicateIndex=False):
|
||||
predicates = predicates is None and ['r*'] or predicates
|
||||
obj = getMaster(self)
|
||||
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.first.title.lower())
|
||||
rels = (r for r in getRelations(first=concept, second=obj,
|
||||
relationships=relationships)
|
||||
relationships=relationships,
|
||||
usePredicateIndex=usePredicateIndex)
|
||||
if canListObject(r.first, noSecurityCheck))
|
||||
return sorted(rels, key=sort)
|
||||
|
||||
def getConcepts(self, predicates=None, noSecurityCheck=False):
|
||||
def getConcepts(self, predicates=None, noSecurityCheck=False,
|
||||
usePredicateIndex=False):
|
||||
obj = getMaster(self)
|
||||
return [r.first for r in obj.getConceptRelations(predicates,
|
||||
noSecurityCheck=noSecurityCheck)]
|
||||
noSecurityCheck=noSecurityCheck,
|
||||
usePredicateIndex=usePredicateIndex)]
|
||||
|
||||
# simplify common access for concepts and resources:
|
||||
getParentRelations = getConceptRelations
|
||||
|
|
Loading…
Add table
Reference in a new issue