From 7742c2e4c0aed8403614ca5f7a87fddd02b3e8c4 Mon Sep 17 00:00:00 2001 From: helmutm Date: Mon, 3 May 2010 14:30:02 +0000 Subject: [PATCH] exclude resources from tracking stats if there are only part of a concept (like with blogposts) git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@3844 fd906abe-77d9-0310-91a1-e0d9ade77398 --- browser/common.py | 15 +++++++++++++++ organize/tracking/report.py | 2 ++ 2 files changed, 17 insertions(+) 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):