diff --git a/browser/common.py b/browser/common.py index af079a6..3c034d5 100644 --- a/browser/common.py +++ b/browser/common.py @@ -248,6 +248,10 @@ class BaseView(GenericView, I18NView): def defaultPredicate(self): return self.conceptManager.getDefaultPredicate() + @Lazy + def isPartOfPredicate(self): + return self.conceptManager.get('ispartof') + @Lazy def url(self): return absoluteURL(self.context, self.request) @@ -417,6 +421,17 @@ class BaseView(GenericView, I18NView): + self.listTypesForSearch(('resource',), ('system', 'hidden',),)) + def isPartOnlyResource(self, obj): + if not IResource.providedBy(obj): + return False + isPart = False + for r in obj.getConceptRelations(): + if r.predicate == self.isPartOfPredicate: + isPart = True + elif r.predicate != self.typePredicate: + return False + return isPart + # options/settings @Lazy diff --git a/organize/tracking/report.py b/organize/tracking/report.py index c547c7f..419fb56 100644 --- a/organize/tracking/report.py +++ b/organize/tracking/report.py @@ -106,6 +106,8 @@ class TrackingStats(BaseView): def checkType(self, obj): if not IResource.providedBy(obj) and not IConcept.providedBy(obj): return False + if self.isPartOnlyResource(obj): + return False for t in self.typeObjects: if isinstance(t, InterfaceClass): if t.providedBy(obj):