[Checkins] SVN: Products.CMFCore/trunk/Products/CMFCore/C - split up CMFCatalogAware mixin
Yvo Schubbe
y.2009 at wcm-solutions.de
Thu Aug 13 16:17:07 EDT 2009
Log message for revision 102742:
- split up CMFCatalogAware mixin
Changed:
U Products.CMFCore/trunk/Products/CMFCore/CHANGES.txt
U Products.CMFCore/trunk/Products/CMFCore/CMFCatalogAware.py
-=-
Modified: Products.CMFCore/trunk/Products/CMFCore/CHANGES.txt
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/CHANGES.txt 2009-08-13 20:07:30 UTC (rev 102741)
+++ Products.CMFCore/trunk/Products/CMFCore/CHANGES.txt 2009-08-13 20:17:07 UTC (rev 102742)
@@ -4,6 +4,9 @@
2.2.0 (unreleased)
------------------
+- CMFCatalogAware: Split up CMFCatalogAware mixin.
+ CatalogAware, WorkflowAware and OpaqueItemManager are now separate mixins.
+
- Changed testing.py to directly load zope.traversing's ZCML instead of going
via the Five traversing.zcml BBB shim.
Modified: Products.CMFCore/trunk/Products/CMFCore/CMFCatalogAware.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/CMFCatalogAware.py 2009-08-13 20:07:30 UTC (rev 102741)
+++ Products.CMFCore/trunk/Products/CMFCore/CMFCatalogAware.py 2009-08-13 20:17:07 UTC (rev 102742)
@@ -45,12 +45,12 @@
logger = logging.getLogger('CMFCore.CMFCatalogAware')
-class CMFCatalogAware(Base):
+class CatalogAware(Base):
- """Mix-in for notifying portal_catalog and portal_workflow
+ """Mix-in for notifying the catalog tool.
"""
- implements(ICatalogAware, IWorkflowAware, IOpaqueItemManager)
+ implements(ICatalogAware)
security = ClassSecurityInfo()
@@ -122,6 +122,58 @@
update_metadata=0, uid=brain_path)
if s is None: ob._p_deactivate()
+InitializeClass(CatalogAware)
+
+
+class WorkflowAware(Base):
+
+ """Mix-in for notifying the workflow tool.
+ """
+
+ implements(IWorkflowAware)
+
+ security = ClassSecurityInfo()
+
+ manage_options = ({'label': 'Workflows',
+ 'action': 'manage_workflowsTab'},)
+
+ _manage_workflowsTab = DTMLFile('zmi_workflows', _dtmldir)
+
+ #
+ # ZMI methods
+ #
+ security.declareProtected(ManagePortal, 'manage_workflowsTab')
+ def manage_workflowsTab(self, REQUEST, manage_tabs_message=None):
+ """ Tab displaying the current workflows for the content object.
+ """
+ ob = self
+ wftool = self._getWorkflowTool()
+ # XXX None ?
+ if wftool is not None:
+ wf_ids = wftool.getChainFor(ob)
+ states = {}
+ chain = []
+ for wf_id in wf_ids:
+ wf = wftool.getWorkflowById(wf_id)
+ if wf is not None:
+ # XXX a standard API would be nice
+ if hasattr(wf, 'getReviewStateOf'):
+ # Default Workflow
+ state = wf.getReviewStateOf(ob)
+ elif hasattr(wf, '_getWorkflowStateOf'):
+ # DCWorkflow
+ state = wf._getWorkflowStateOf(ob, id_only=1)
+ else:
+ state = '(Unknown)'
+ states[wf_id] = state
+ chain.append(wf_id)
+ return self._manage_workflowsTab(
+ REQUEST,
+ chain=chain,
+ states=states,
+ management_view='Workflows',
+ manage_tabs_message=manage_tabs_message)
+
# The following method can be overridden using inheritance so that it's
# possible to specify another workflow tool for a given content type
def _getWorkflowTool(self):
@@ -138,6 +190,18 @@
if wftool is not None:
wftool.notifyCreated(self)
+InitializeClass(WorkflowAware)
+
+
+class OpaqueItemManager(Base):
+
+ """Mix-in for managing opaque items.
+ """
+
+ implements(IOpaqueItemManager)
+
+ security = ClassSecurityInfo()
+
# Opaque subitems
# ---------------
@@ -185,52 +249,15 @@
"""
return [t[1] for t in self.opaqueItems()]
- # ZMI
- # ---
+InitializeClass(OpaqueItemManager)
- manage_options = ({'label': 'Workflows',
- 'action': 'manage_workflowsTab',
- },
- )
- _manage_workflowsTab = DTMLFile('zmi_workflows', _dtmldir)
+class CMFCatalogAware(CatalogAware, WorkflowAware, OpaqueItemManager):
- security.declareProtected(ManagePortal, 'manage_workflowsTab')
- def manage_workflowsTab(self, REQUEST, manage_tabs_message=None):
- """
- Tab displaying the current workflows for the content object.
- """
- ob = self
- wftool = self._getWorkflowTool()
- # XXX None ?
- if wftool is not None:
- wf_ids = wftool.getChainFor(ob)
- states = {}
- chain = []
- for wf_id in wf_ids:
- wf = wftool.getWorkflowById(wf_id)
- if wf is not None:
- # XXX a standard API would be nice
- if hasattr(wf, 'getReviewStateOf'):
- # Default Workflow
- state = wf.getReviewStateOf(ob)
- elif hasattr(wf, '_getWorkflowStateOf'):
- # DCWorkflow
- state = wf._getWorkflowStateOf(ob, id_only=1)
- else:
- state = '(Unknown)'
- states[wf_id] = state
- chain.append(wf_id)
- return self._manage_workflowsTab(
- REQUEST,
- chain=chain,
- states=states,
- management_view='Workflows',
- manage_tabs_message=manage_tabs_message)
+ """Mix-in for notifying catalog and workflow and managing opaque items.
+ """
-InitializeClass(CMFCatalogAware)
-
def handleContentishEvent(ob, event):
""" Event subscriber for (IContentish, IObjectEvent) events.
"""
More information about the Checkins
mailing list