diff --git a/organize/work/browser.py b/organize/work/browser.py
index ff96953..33a5b25 100644
--- a/organize/work/browser.py
+++ b/organize/work/browser.py
@@ -288,6 +288,25 @@ class TaskWorkItems(BaseWorkItemsView, ConceptView):
return sorted(self.query(**criteria), key=lambda x: x.track.timeStamp)
+class RelatedTaskWorkItems(TaskWorkItems):
+ """ Show work items for all instances of a concept type assigned to
+ the query as query target.
+ """
+
+ @Lazy
+ def isQueryTarget(self):
+ return self.conceptManager['querytarget']
+
+ def listWorkItems(self):
+ criteria = self.baseCriteria
+ tasks = []
+ for parent in self.context.getChildren([self.isQueryTarget]):
+ for task in parent.getChildren([self.typePredicate]):
+ tasks.append(util.getUidForObject(task))
+ criteria['task'] = tasks
+ return sorted(self.query(**criteria), key=lambda x: x.track.timeStamp)
+
+
class PersonWorkItems(BaseWorkItemsView, ConceptView):
""" A query view showing work items for a person, the query's parent.
"""
diff --git a/organize/work/configure.zcml b/organize/work/configure.zcml
index 5dbdc5b..bbd83f7 100644
--- a/organize/work/configure.zcml
+++ b/organize/work/configure.zcml
@@ -30,6 +30,14 @@
factory="loops.organize.work.browser.AllWorkItems"
permission="zope.View" />
+
+