--- a/src/pyams_content/shared/view/__init__.py Tue Jul 17 18:01:26 2018 +0200
+++ b/src/pyams_content/shared/view/__init__.py Tue Jul 17 18:01:54 2018 +0200
@@ -9,6 +9,7 @@
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
#
+from pyams_content.shared.common.interfaces.types import IWfTypedSharedContent
__docformat__ = 'restructuredtext'
@@ -65,6 +66,8 @@
select_context_type = FieldProperty(IWfView['select_context_type'])
selected_content_types = FieldProperty(IWfView['selected_content_types'])
+ select_context_datatype = FieldProperty(IWfView['select_context_datatype'])
+ selected_datatypes = FieldProperty(IWfView['selected_datatypes'])
order_by = FieldProperty(IWfView['order_by'])
reversed_order = FieldProperty(IWfView['reversed_order'])
limit = FieldProperty(IWfView['limit'])
@@ -89,6 +92,16 @@
content_types |= set(self.selected_content_types)
return list(content_types)
+ def get_data_types(self, context):
+ data_types = set()
+ if self.select_context_datatype:
+ content = IWfTypedSharedContent(context, None)
+ if content is not None:
+ data_types.add(content.data_type)
+ if self.selected_datatypes:
+ data_types |= set(self.selected_datatypes)
+ return list(data_types)
+
def get_results(self, context, sort_index=None, reverse=None, limit=None, ignore_cache=False):
results = _MARKER
if not ignore_cache:
@@ -153,6 +166,10 @@
content_types = view.get_content_types(context)
if content_types:
params &= Any(catalog['content_type'], content_types)
+ # check data types
+ data_types = view.get_data_types(context)
+ if data_types:
+ params &= Any(catalog['data_type'], data_types)
# check workflow states
wf_params = None
for workflow in registry.getAllUtilitiesRegisteredFor(IWorkflow):