Skip to content

/ Zope / gocept svn checkins / Archive / 2005 / 2005-06 / SVN: r3110 - in AlphaFlow/trunk: . activities

[ << ] [ >> ]

[ SVN: r3084 - LeuBsm/trunk/skins/leu_templates / ... ] [ SVN: r3117 - ATCountryWidget/trunk/tests / Daniel ... ]

SVN: r3110 - in AlphaFlow/trunk: . activities
Michael Howitz <mh(at)gocept.com>
2005-06-28 11:50:59 [ FULL ]
Author: mac
Date: Tue Jun 28 11:45:57 2005
New Revision: 3110

Modified:
   AlphaFlow/trunk/activities/alarm.py
   AlphaFlow/trunk/activities/expression.py
   AlphaFlow/trunk/workitem.py
Log:
- expression activity is now a subclass of BaseTalesActivity
- expression workitem is now a subclass of BaseTalesWorkItem
- removed onStart method from BaseTalesWorkItem because it makes things
unnecessary complicated


Modified: AlphaFlow/trunk/activities/alarm.py
==============================================================================
--- AlphaFlow/trunk/activities/alarm.py	(original)
+++ AlphaFlow/trunk/activities/alarm.py	Tue Jun 28 11:45:57 2005
(at)(at) -4,9 +4,6 (at)(at)
 """Implements alarm activities.
 """
 
-# Zope imports
-from Products.PageTemplates.Expressions import getEngine
-
 # Sibling imports
 from Products.AlphaFlow.workitem import registerWorkItem, BaseTalesWorkItem
 from Products.AlphaFlow.activity import registerActivity, BaseTalesActivity
(at)(at) -27,6 +24,10 (at)(at)
     __implements__ = BaseTalesWorkItem.__implements__ + (IAlarmWorkItem, )
     activity_type  = "alarm"
          
+    def onStart(self):
+        "Trigger that gets called after the workitem has been started."
+        pass # do nothing on start
+
     def trigger_workitem(self):
         """triggers a workitem if the deadline is exceeded"""
         deadline = self.evaluate()

Modified: AlphaFlow/trunk/activities/expression.py
==============================================================================
--- AlphaFlow/trunk/activities/expression.py	(original)
+++ AlphaFlow/trunk/activities/expression.py	Tue Jun 28 11:45:57 2005
(at)(at) -1,85 +1,36 (at)(at)
 # Copyright (c) 2004-2005 gocept gmbh & co. kg
 # See also LICENSE.txt
 # $Id$
-
-"""Execute an expression activity and work item.
-
-Expressions are run as TALES expressions and have the following contexts:
-
-    workitem - the current work item
-    object - the object associated with this process
-    activity - the activity for this workitem
-    portal - the portal root object
-
-"""
-
-# Zope imports
-from Products.PageTemplates.Expressions import getEngine
-
-# Plone/AT imports
-from Products.CMFCore.utils import getToolByName
+"""Execute a TALES expression -- activity and work item."""
 
 # Sibling imports
-from Products.AlphaFlow.workitem import registerWorkItem,
BaseAutomaticWorkItem
-from Products.AlphaFlow.activity import registerActivity,
BaseAutomaticActivity
-from Products.AlphaFlow.exception import ConfigurationError
+from Products.AlphaFlow.workitem import registerWorkItem, BaseTalesWorkItem
+from Products.AlphaFlow.activity import registerActivity, BaseTalesActivity
 from Products.AlphaFlow.interfaces import \
      IExpressionActivity, IExpressionWorkItem
 from Products.AlphaFlow.workflowattr import WorkflowAttribute
 
 
-class ExpressionActivity(BaseAutomaticActivity):
+class ExpressionActivity(BaseTalesActivity):
 
-    __implements__ = BaseAutomaticActivity.__implements__ + \
-                     (IExpressionActivity, )
+    __implements__ = BaseTalesActivity.__implements__ + (IExpressionActivity,
)
 
     meta_type = "AlphaFlow Expression Activity"
     activity_type = nodeName = "expression"
     icon = "expression"
 
-    # XXX change this on migration to BaseTalesActivity as base class
-    attributes = BaseAutomaticActivity.attributes + (
-        WorkflowAttribute('expression', 'expression', '',
-                          'Expression to be called.',
-                          required=True, encoding='ascii', datatype=str),
-        )
-        
-    _properties = BaseAutomaticActivity._properties + \
-        ({'id': 'expression', 'type': 'string', 'mode': 'w'},
-         )
-
-
 
-class ExpressionWorkItem(BaseAutomaticWorkItem):
+class ExpressionWorkItem(BaseTalesWorkItem):
 
     activity_type  = "expression"
-    __implements__ = BaseAutomaticWorkItem.__implements__ + \
-                     (IExpressionWorkItem, )
+    __implements__ = BaseTalesWorkItem.__implements__ + (IExpressionWorkItem,
)
 
     ######################
-    # IAutomaticWorkItem
+    # ITalesWorkItem
 
     def run(self):
-        "Runs the expression"
-        engine = getEngine()
-        # Compile the expression
-        expr = self.getActivity().expression
-        expr = engine.compile(expr)
-
-        # Setup the context
-        object = self.getContentObject()
-        pu = getToolByName(self, "portal_url")
-        portal = pu.getPortalObject()
-        context = engine.getContext({
-                'object' : object,
-                'workitem' : self,
-                'portal' : portal,
-                'activity': self.getActivity()
-            })
-        
-        # Evaluate
-        context.evaluate(expr)
-
+        """Performs the actual automatic activity"""
+        self.evaluate()
  
 # register the stuff
 registerActivity(ExpressionActivity)

Modified: AlphaFlow/trunk/workitem.py
==============================================================================
--- AlphaFlow/trunk/workitem.py	(original)
+++ AlphaFlow/trunk/workitem.py	Tue Jun 28 11:45:57 2005
(at)(at) -530,10 +530,6 (at)(at)
     __implements__ = BaseAutomaticWorkItem.__implements__ + \
                      (ITalesWorkItem, )
          
-    def onStart(self):
-        "Trigger that gets called after the workitem has been started."
-        pass # to overwrite onStart of BaseAutomaticWorkItem
-
     def evaluate(self):
         "Evaluate the TALES-Expression."
         activity = self.getActivity()

SVN: r3111 - in AlphaFlow/trunk: . activities
Michael Howitz <mh(at)gocept.com>
2005-06-28 13:27:49 [ FULL ]
Author: mac
Date: Tue Jun 28 13:22:18 2005
New Revision: 3111

Modified:
   AlphaFlow/trunk/TrustedExpression.py
   AlphaFlow/trunk/__init__.py
   AlphaFlow/trunk/activities/alarm.py
   AlphaFlow/trunk/activities/condition.py
   AlphaFlow/trunk/activities/configuration.py
   AlphaFlow/trunk/activities/dcworkflow.py
   AlphaFlow/trunk/activities/decision.py
   AlphaFlow/trunk/activities/expression.py
   AlphaFlow/trunk/activities/gates.py
   AlphaFlow/trunk/activities/notify.py
   AlphaFlow/trunk/activities/ntask.py
   AlphaFlow/trunk/activities/permission.py
   AlphaFlow/trunk/activities/recursion.py
   AlphaFlow/trunk/activities/review.py
   AlphaFlow/trunk/activities/routing.py
   AlphaFlow/trunk/activities/task.py
   AlphaFlow/trunk/activities/version.py
   AlphaFlow/trunk/activity.py
   AlphaFlow/trunk/importexport.py
   AlphaFlow/trunk/instance.py
   AlphaFlow/trunk/process.py
   AlphaFlow/trunk/processmanager.py
   AlphaFlow/trunk/workflowedobject.py
   AlphaFlow/trunk/workitem.py
Log:
added security declarations


Modified: AlphaFlow/trunk/TrustedExpression.py
==============================================================================
--- AlphaFlow/trunk/TrustedExpression.py	(original)
+++ AlphaFlow/trunk/TrustedExpression.py	Tue Jun 28 13:22:18 2005
(at)(at) -1,6 +1,7 (at)(at)
-# Copyright (C) 2004 by Dr. Dieter Maurer, Eichendorffstr. 23, D-66386 St.
Ingbert, Germany
+# Copyright (C) 2004 by Dr. Dieter Maurer, Eichendorffstr. 23,
+#                       D-66386 St. Ingbert, Germany
 # see "LICENSE-DM.txt" for details
-#       $Id$
+# $Id$
 
 from sys import modules
 from types import FunctionType

Modified: AlphaFlow/trunk/__init__.py
==============================================================================
--- AlphaFlow/trunk/__init__.py	(original)
+++ AlphaFlow/trunk/__init__.py	Tue Jun 28 13:22:18 2005
(at)(at) -1,6 +1,6 (at)(at)
 # Copyright (c) 2004-2005 gocept gmbh & co. kg
 # See also LICENSE.txt
-# __init__.py,v 1.31.2.1 2005/04/28 13:31:32 mac Exp
+# $Id$
 """Zope initialization code"""
 import os
 

Modified: AlphaFlow/trunk/activities/alarm.py
==============================================================================
--- AlphaFlow/trunk/activities/alarm.py	(original)
+++ AlphaFlow/trunk/activities/alarm.py	Tue Jun 28 13:22:18 2005
(at)(at) -4,11 +4,14 (at)(at)
 """Implements alarm activities.
 """
 
+# Zope imports
+from AccessControl import ClassSecurityInfo
+
 # Sibling imports
 from Products.AlphaFlow.workitem import registerWorkItem, BaseTalesWorkItem
 from Products.AlphaFlow.activity import registerActivity, BaseTalesActivity
 from Products.AlphaFlow.interfaces import IAlarmActivity, IAlarmWorkItem
-
+from Products.AlphaFlow import config
 
 
 class AlarmActivity(BaseTalesActivity):
(at)(at) -22,12 +25,16 (at)(at)
 class AlarmWorkItem(BaseTalesWorkItem):
 
     __implements__ = BaseTalesWorkItem.__implements__ + (IAlarmWorkItem, )
+    security = ClassSecurityInfo()
+    
     activity_type  = "alarm"
-         
+
+    security.declarePrivate('onStart')
     def onStart(self):
         "Trigger that gets called after the workitem has been started."
         pass # do nothing on start
 
+    security.declarePrivate('trigger_workitem')
     def trigger_workitem(self):
         """triggers a workitem if the deadline is exceeded"""
         deadline = self.evaluate()
(at)(at) -36,7 +43,7 (at)(at)
             self.createWorkItems(activity.continue_activity)
             self.changeState("complete", activity.title_or_id())
 
-
+    security.declareProtected(config.WORK_WITH_PROCESS, 'getStatusInfo')
     def getStatusInfo(self):
         """ return current status of workitem as a text """
         if self.state == 'active':

Modified: AlphaFlow/trunk/activities/condition.py
==============================================================================
--- AlphaFlow/trunk/activities/condition.py	(original)
+++ AlphaFlow/trunk/activities/condition.py	Tue Jun 28 13:22:18 2005
(at)(at) -9,7 +9,6 (at)(at)
    """
 
 # Zope imports
-from Products.PageTemplates.Expressions import getEngine
 from AccessControl import ClassSecurityInfo
 
 # Sibling imports
(at)(at) -64,6 +63,7 (at)(at)
     ######################
     # ITalesWorkItem
 
+    security.declarePrivate('onStart')
     def onStart(self):
         "Trigger that gets called after the workitem has been started."
         activities = self.evaluate()
(at)(at) -71,6 +71,7 (at)(at)
             self.createWorkItems(activities)
             self.changeState("complete", self.getActivity().title_or_id())
 
+    security.declarePrivate('_verify_activities')
     def _verify_activities(self, activities):
         """Verify that all items in activities are allowed
continue_activities.
 

Modified: AlphaFlow/trunk/activities/configuration.py
==============================================================================
--- AlphaFlow/trunk/activities/configuration.py	(original)
+++ AlphaFlow/trunk/activities/configuration.py	Tue Jun 28 13:22:18 2005
(at)(at) -1,6 +1,6 (at)(at)
 # Copyright (c) 2005 gocept gmbh & co. kg
 # See also LICENSE.txt
-# configuration.py,v 1.1.2.6 2005/05/02 10:08:51 zagy Exp
+# $Id$
 """Configuration activity and work item."""
 
 # Zope imports
(at)(at) -23,6 +23,7 (at)(at)
     
     __implements__ = BaseAssignableActivity.__implements__ + \
                      (IConfigurationActivity, )
+    security = ClassSecurityInfo()
 
     meta_type = "AlphaFlow Configuration Activity"
     activity_type = nodeName = "configuration"
(at)(at) -51,6 +52,13 (at)(at)
         )
     
 
+    security.declareProtected(config.MANAGE_WORKFLOW, "getPossibleChildren")
+    def getPossibleChildren(self):
+        """Return a list of possible following activities. (List of ids)"""
+        return self.continue_activity
+
+    security.declareProtected(config.MANAGE_WORKFLOW, 
+                              "graphGetPossibleChildren")
     def graphGetPossibleChildren(self):
         "Return a list of possible following activities. (List of ids)"
         acts = []
(at)(at) -58,22 +66,20 (at)(at)
             acts.append({'id':act,
                          'label':'on completion'})
         return acts
-
-    def getPossibleChildren(self):
-        """Return a list of possible following activities. (List of ids)"""
-        return self.continue_activity
+    
 
 
     #########
     # private
 
+    security.declarePrivate('_attr_export_configure')
     def _attr_export_configure(self, attr, node):
         if self.configures is None: # marker for "all"
             node.setAttribute('configures_all', convert_to_xml(True))
         else:
             self._attr_export_simple(attr, node)
 
-
+    security.declarePrivate('_attr_import_configure')
     def _attr_import_configure(self, attr, node):
         if node.hasAttribute('configures_all'):
             setattr(self, attr.classAttr, None) # None is marker for "all"
(at)(at) -90,12 +96,11 (at)(at)
 
     __implements__ = BaseAssignableWorkItem.__implements__ + \
                      (IConfigurationWorkItem,)
-
-    activity_type  = "configuration"
-
     security = ClassSecurityInfo()
 
+    activity_type  = "configuration"
 
+    # XXX security declatration?
     def Schema(self):
         instance = self.getInstance()
         other = instance.Schema()
(at)(at) -134,7 +139,6 (at)(at)
     #################
     # IWorkItem
 
-
     security.declareProtected(config.WORK_WITH_PROCESS, "getActions")
     def getActions(self):
         """Determine all possible actions."""
(at)(at) -143,8 +147,6 (at)(at)
                        self.absolute_url(inner=True)+"/configure",
                        self.configure),
                 ]
-        
-
 
     ########################
     # IConfigurationWorkItem
(at)(at) -169,6 +171,7 (at)(at)
     #########
     # private
 
+    security.declarePrivate('_group_schema')
     def _group_schema(self, schema):
         groups = {}
         instance = self.getInstance()

Modified: AlphaFlow/trunk/activities/dcworkflow.py
==============================================================================
--- AlphaFlow/trunk/activities/dcworkflow.py	(original)
+++ AlphaFlow/trunk/activities/dcworkflow.py	Tue Jun 28 13:22:18 2005
(at)(at) -1,14 +1,10 (at)(at)
 # Copyright (c) 2004-2005 gocept gmbh & co. kg
 # See also LICENSE.txt
 # $Id$
-"""Emulate the DCWorkFlow status interface.
-"""
+"""Emulate the DCWorkFlow status interface."""
 
 # Zope imports
-from Products.PageTemplates.Expressions import getEngine
-
-# Plone/AT imports
-from Products.CMFCore.utils import getToolByName
+from AccessControl import ClassSecurityInfo
 
 # Sibling imports
 from Products.AlphaFlow.workitem import registerWorkItem,
BaseAutomaticWorkItem
(at)(at) -40,11 +36,15 (at)(at)
 
 class DCWorkFlowWorkItem(BaseAutomaticWorkItem):
 
+    security = ClassSecurityInfo()
+
     activity_type  = "dcworkflow"
+    
 
     ######################
     # IAutomaticWorkItem
 
+    security.declarePrivate("run")
     def run(self):
         "Runs the expression"
         ob = self.getContentObject()

Modified: AlphaFlow/trunk/activities/decision.py
==============================================================================
--- AlphaFlow/trunk/activities/decision.py	(original)
+++ AlphaFlow/trunk/activities/decision.py	Tue Jun 28 13:22:18 2005
(at)(at) -1,6 +1,6 (at)(at)
 # Copyright (c) 2004-2005 gocept gmbh & co. kg
 # See also LICENSE.txt
-# decision.py,v 1.7.2.1 2005/05/02 10:08:51 zagy Exp
+# $Id$
 """Decision activity and work item."""
 
 # Zope imports
(at)(at) -27,6 +27,7 (at)(at)
 
     __implements__ = (IDecisionActivity,) + \
                      BaseAssignableActivity.__implements__
+    security = ClassSecurityInfo()
 
     meta_type = "AlphaFlow Decision Activity"
     activity_type = nodeName = "decision"
(at)(at) -64,6 +65,8 (at)(at)
           'mode': 'w', 'select_variable': 'known_decision_modi',},
          )
 
+
+    security.declareProtected(config.EDIT_WORKFLOW, '__init__')
     def __init__(self, id):
         DecisionActivity.inheritedAttribute('__init__')(self, id)
         if self.configurationSchema:
(at)(at) -74,11 +77,13 (at)(at)
                 format='checkbox',
                 )
 
+    security.declareProtected(config.MANAGE_WORKFLOW, "getPossibleChildren")  
 
     def getPossibleChildren(self):
         """Return a list of possible following activities. (List of ids)"""
         return self.reject_activity + self.accept_activity
 
-
+    security.declareProtected(config.MANAGE_WORKFLOW,
+                              "graphGetPossibleChildren")
     def graphGetPossibleChildren(self):
         """Return a list of possible following activities. (List of ids)"""
         acts = []
(at)(at) -103,15 +108,15 (at)(at)
     security = ClassSecurityInfo()
     decisions = None
 
-    def __init__(self, *args, **kw):
-        DecisionWorkItem.inheritedAttribute('__init__')(self, *args, **kw)
 
     ###########
     # IWorkItem
 
+    security.declarePrivate("onStart")
     def onStart(self):
         self.decisions = {}
 
+    security.declareProtected(config.WORK_WITH_PROCESS, 'getActions')
     def getActions(self):
         """Determine all possible actions."""
         actions = [
(at)(at) -156,14 +161,8 (at)(at)
         self.notifyAssigneesChange()
         self._update_ui_after_action("Review registered.", REQUEST)
 
-    def _register_decision(self, decision):
-        "decision must be True or False."
-        user = getSecurityManager().getUser().getUserName()
-        if user in self.decisions:
-            raise ValueError, "Can't decide two times."
-        self.decisions[user] = decision
-        self._p_changed = 1
-        
+
+    security.declareProtected(config.WORK_WITH_PROCESS, 'getShortInfo')
     def getShortInfo(self):
         """Returns a short information text."""
         content = self.getContentObject()
(at)(at) -172,24 +171,24 (at)(at)
         else:
             info = content.Title()
 
-#     def getStatusInfo(self):
-#         """Returns a short status information text."""
-#         if self.state == "complete":
-#             # do *not* translate, comment is entered by the user
-#             msg = self.getComment()
-#         else:
-#             assignees = len(self.getActivityConfiguration("assignees"))
-#             reviews = len(self._get_reviews())
-#             users_left = assignees - reviews
-#             alf = getToolByName(self, 'workflow_manager')
-#             msg = alf.translateMsg('status_review', left=users_left)
-#         return msg
+    #########
+    # private
 
+    security.declarePrivate('_register_decision')
+    def _register_decision(self, decision):
+        "decision must be True or False."
+        user = getSecurityManager().getUser().getUserName()
+        if user in self.decisions:
+            raise ValueError, "Can't decide two times."
+        self.decisions[user] = decision
+        self._p_changed = 1
+
+    security.declarePrivate('_get_assignees_dict')
     def _get_assignees_dict(self):
         assignees = dict([ (name, True) for name in self.listRelevantUsers()])
         return assignees
 
-
+    security.declarePrivate('_is_accepted_first_yes')
     def _is_accepted_first_yes(self):
         # one or more accepted -> accepted
         for decision in self.decisions.values():
(at)(at) -197,13 +196,13 (at)(at)
                 return True
         return False
 
-
+    security.declarePrivate('_is_accepted_all_yes')
     def _is_accepted_all_yes(self):
         # all accepted --> accepted
         assignees = self._get_assignees_dict()
         return assignees == self.decisions
 
-
+    security.declarePrivate('_is_accepted')
     def _is_accepted(self):
         acc = getattr(self,
                       '_is_accepted_' + self.getActivity().decision_modus)()

Modified: AlphaFlow/trunk/activities/expression.py
==============================================================================
--- AlphaFlow/trunk/activities/expression.py	(original)
+++ AlphaFlow/trunk/activities/expression.py	Tue Jun 28 13:22:18 2005
(at)(at) -3,6 +3,9 (at)(at)
 # $Id$
 """Execute a TALES expression -- activity and work item."""
 
+# Zope imports
+from AccessControl import ClassSecurityInfo
+
 # Sibling imports
 from Products.AlphaFlow.workitem import registerWorkItem, BaseTalesWorkItem
 from Products.AlphaFlow.activity import registerActivity, BaseTalesActivity
(at)(at) -22,12 +25,15 (at)(at)
 
 class ExpressionWorkItem(BaseTalesWorkItem):
 
-    activity_type  = "expression"
     __implements__ = BaseTalesWorkItem.__implements__ + (IExpressionWorkItem,
)
+    security = ClassSecurityInfo()
+
+    activity_type  = "expression"
 
     ######################
     # ITalesWorkItem
 
+    security.declarePrivate('run')
     def run(self):
         """Performs the actual automatic activity"""
         self.evaluate()

Modified: AlphaFlow/trunk/activities/gates.py
==============================================================================
--- AlphaFlow/trunk/activities/gates.py	(original)
+++ AlphaFlow/trunk/activities/gates.py	Tue Jun 28 13:22:18 2005
(at)(at) -4,13 +4,15 (at)(at)
 """Gates to support routing mechanisms
 """
 
+# Zope imports
+from AccessControl import ClassSecurityInfo
+
 # Sibling imports
 from Products.AlphaFlow.workitem import registerWorkItem, BaseWorkItem
 from Products.AlphaFlow.activity import registerActivity,
BaseAutomaticActivity
-from Products.AlphaFlow.exception import ConfigurationError
 from Products.AlphaFlow.interfaces import IDaemonActivity, IGateActivity
 from Products.AlphaFlow.workflowattr import WorkflowAttribute
-
+from Products.AlphaFlow import config
 
 class GateActivity(BaseAutomaticActivity):
 
(at)(at) -44,14 +46,18 (at)(at)
 
 class GateWorkItem(BaseWorkItem):
 
+    security = ClassSecurityInfo()
+
     activity_type  = "gate"
 
     ####################
     # IWorkItem
 
+    security.declarePrivate('onStart')
     def onStart(self):
         self.open_routes = self._getAllRoutes()
 
+    security.declarePrivate("beforeCreationItems")
     def beforeCreationItems(self, items, parent):
         vote_no = []
         my_parent = self.getParent()
(at)(at) -68,6 +74,10 (at)(at)
                 self._rememberTrigger(parent, route)
         return vote_no
 
+    #########
+    # private
+
+    security.declarePrivate('_findRouteForWI')
     def _findRouteForWI(self, workitem):
         """Identifies to which route this workitem belongs that leads to this
gate.
 
(at)(at) -84,8 +94,8 (at)(at)
             if (workitem == candidate) or \
                     workitem.isChildOf(workitem=candidate):
                 return candidate.activity_id
-        
-    # Private methods
+
+    security.declarePrivate('_rememberTrigger')
     def _rememberTrigger(self, triggering_workitem, route):
         mode = self.getActivity().mode
         open_routes = self.open_routes
(at)(at) -113,16 +123,20 (at)(at)
             self.changeState("fallout", "Unknown gate mode: '%s'" % mode)
         self.open_routes = open_routes
 
+    security.declarePrivate('_doTrigger')
     def _doTrigger(self, triggering_workitem, route):
         self.createWorkItems(self.getActivity().continue_activity)
         self.recordAction("Gate triggered", 
                 "Route '%s' triggered '%s-gate' by workitem '%s'" % 
                 (route, self.getActivity().mode, triggering_workitem.getId()))
 
+    security.declarePrivate('_getAllRoutes')
     def _getAllRoutes(self):
         return list(tuple(self.getParent().getActivity().routes))
 
+    security.declareProtected(config.WORK_WITH_PROCESS,
'estimateRelevantUsers')
     def estimateRelevantUsers(self):
+        "Estimate the relevant users. Not used for checking."
         return ""
 
 

Modified: AlphaFlow/trunk/activities/notify.py
==============================================================================
--- AlphaFlow/trunk/activities/notify.py	(original)
+++ AlphaFlow/trunk/activities/notify.py	Tue Jun 28 13:22:18 2005
(at)(at) -10,7 +10,7 (at)(at)
 import sys
 
 # Zope imports
-from Products.PageTemplates.Expressions import getEngine
+from AccessControl import ClassSecurityInfo
 from Persistence import Persistent
 
 # Plone/AT imports
(at)(at) -56,6 +56,7 (at)(at)
 
     __implements__ = BaseAutomaticActivity.__implements__ + \
                      (IEMailActivity, )
+    security = ClassSecurityInfo()
 
     meta_type = "AlphaFlow EMail Activity"
     activity_type = nodeName = "email"
(at)(at) -86,6 +87,7 (at)(at)
          )
 
 
+    security.declarePrivate('getRecipientModes')
     def getRecipientModes(self):
         "Return list of IEMailRecipientMode instances (possible recipents)."
         return self.recipientModes
(at)(at) -93,10 +95,12 (at)(at)
     #########
     # private
 
+    security.declarePrivate('_attr_export_email')
     def _attr_export_email(self, attr, node):
         for mode in self.recipientModes:
             mode.writeDOM(node)
 
+    security.declarePrivate('_attr_import_email')
     def _attr_import_email(self, attr, node):
         global notify_registry
         
(at)(at) -110,12 +114,14 (at)(at)
 class EMailWorkItem(BaseAutomaticWorkItem):
 
     __implements__ = (IEMailWorkItem,)
+    security = ClassSecurityInfo()
 
     activity_type  = "email"
 
     ######################
     # IAutomaticWorkItem
 
+    security.declarePrivate('onStart')
     def onStart(self):
         """Send email."""
         portal_properties = getToolByName(self, 'portal_properties')
(at)(at) -179,6 +185,7 (at)(at)
             self.changeState("complete", activity.title_or_id())
 
 
+    security.declarePrivate('_quoteAddressField')
     def _quoteAddressField(self, name, email, encoding):
         """Quote address field according to RFC 2822
 

Modified: AlphaFlow/trunk/activities/ntask.py
==============================================================================
--- AlphaFlow/trunk/activities/ntask.py	(original)
+++ AlphaFlow/trunk/activities/ntask.py	Tue Jun 28 13:22:18 2005
(at)(at) -45,6 +45,7 (at)(at)
 class NTaskActivity(BaseAssignableActivity):
     
     __implements__ = BaseAssignableActivity.__implements__ + (INTaskActivity,
)
+    security = ClassSecurityInfo()
 
     meta_type = "AlphaFlow NTask Activity"
     activity_type = nodeName = "ntask"
(at)(at) -70,6 +71,7 (at)(at)
         )) + BaseAssignableActivity.configurationSchema
 
 
+    security.declareProtected(config.MANAGE_WORKFLOW, "getPossibleChildren")
     def getPossibleChildren(self):
         """Return a list of possible following activities. (List of ids)"""
         possible_children = {}
(at)(at) -78,6 +80,8 (at)(at)
                 possible_children[activity] = 1
         return possible_children.keys()
 
+    security.declareProtected(config.MANAGE_WORKFLOW, 
+                              "graphGetPossibleChildren")
     def graphGetPossibleChildren(self):
         """Return a list of possible following activities. (List of ids)"""
 
(at)(at) -91,11 +95,13 (at)(at)
     #########
     # private
 
+    security.declarePrivate('_attr_export_ntask')
     def _attr_export_ntask(self, attr, node):
         "Export exits"
         for exit in getattr(self, attr.classAttr):
             exit.writeDOM(node)
 
+    security.declarePrivate('_attr_import_ntask')
     def _attr_import_ntask(self, attr, node):
         "Import exits."
         exits = self.createAndConfigureChildNodes(node,
(at)(at) -112,14 +118,14 (at)(at)
 class NTaskWorkItem(BaseAssignableWorkItem):
 
     __implements__ = (INTaskWorkItem,) + BaseAssignableWorkItem.__implements__
+    security = ClassSecurityInfo()
 
     activity_type  = "ntask"
 
-    security = ClassSecurityInfo()
-
     ###########
     # IWorkItem
 
+    security.declareProtected(config.WORK_WITH_PROCESS, 'getActions')
     def getActions(self):
         """Determine all possible actions."""
         actions = []
(at)(at) -127,6 +133,7 (at)(at)
             actions.append(self._get_action(exit))
         return actions
 
+    security.declarePrivate('_get_action')
     def _get_action(self, exit):
         def callback():
             self.complete(exit.id)
(at)(at) -160,18 +167,16 (at)(at)
         self.notifyAssigneesChange()
         self._update_ui_after_action("Activity completed.", REQUEST)
 
+    security.declareProtected(config.WORK_WITH_PROCESS, 'getShortInfo')
     def getShortInfo(self):
         """Returns a short information text."""
         return self.getActivityConfiguration("ntask")
 
+    security.declareProtected(config.WORK_WITH_PROCESS, 'getShortInfo')
     def getStatusInfo(self):
         """Returns a short status information text."""
         return self.getComment()
 
-    def getDetailStatus(self):
-        """Return detailed status information"""
-        return self.state
-
 
 
 # register the stuff

Modified: AlphaFlow/trunk/activities/permission.py
==============================================================================
--- AlphaFlow/trunk/activities/permission.py	(original)
+++ AlphaFlow/trunk/activities/permission.py	Tue Jun 28 13:22:18 2005
(at)(at) -120,12 +120,14 (at)(at)
     
     __implements__ = ((IPermissionWorkItem, ) +
                       BaseAutomaticWorkItem.__implements__)
+    security = ClassSecurityInfo()
 
     activity_type  = "permission-change"
 
     ######################
     # IAutomaticWorkItem
 
+    security.declarePrivate('run')
     def run(self):
         "Changes the permission configuration"
         permissions = self.getActivity().permissions

Modified: AlphaFlow/trunk/activities/recursion.py
==============================================================================
--- AlphaFlow/trunk/activities/recursion.py	(original)
+++ AlphaFlow/trunk/activities/recursion.py	Tue Jun 28 13:22:18 2005
(at)(at) -26,7 +26,8 (at)(at)
 class RecursionActivity(BaseAutomaticActivity):
     
     __implements__ = BaseAutomaticActivity.__implements__ + (IDaemonActivity,)
-
+    security = ClassSecurityInfo()
+    
     meta_type = "AlphaFlow Recursion Activity"
     activity_type = nodeName = "recursion"
     icon = "recursion"
(at)(at) -61,10 +62,13 (at)(at)
                 'mode':'w', 'select_variable':'listActivityIds'}
         )
     
+    security.declareProtected(config.MANAGE_WORKFLOW, "getPossibleChildren")
     def getPossibleChildren(self):
         """Return a list of possible following activities. (List of ids)"""
         return self.recursion_activity + self.continue_activity
 
+    security.declareProtected(config.MANAGE_WORKFLOW, 
+                              "graphGetPossibleChildren")
     def graphGetPossibleChildren(self):
         """Return a list of possible following activities. (List of ids)"""
         acts = []
(at)(at) -76,6 +80,7 (at)(at)
                     'label':'after recursion'})
         return acts
 
+    security.declarePrivate("getConfigurationSchema")
     def getConfigurationSchema(self, content):
         """Getter method to retrieve the configuration schema. This also 
            allows for different activities to have programmatic influence 
(at)(at) -100,14 +105,15 (at)(at)
 
 class RecursionWorkItem(BaseAutomaticWorkItem):
 
-    activity_type  = "recursion"
-
     security = ClassSecurityInfo()
 
+    activity_type  = "recursion"
+
 
     ####################
     # IAutomaticWorkItem
 
+    security.declarePrivate('beforeCreationItems')
     def beforeCreationItems(self, items, parent):
         # Stop the creation of work items that shall be suppressed to avoid 
         # inappropriate recursion. However, we may only block work items that
(at)(at) -122,6 +128,7 (at)(at)
             block.append(item)
         return block
     
+    security.declarePrivate("onCreatedItems")
     def onCreatedItems(self, items=[]):
         """Trigger that gets called after new work items have been created."""
 
(at)(at) -167,7 +174,8 (at)(at)
                                     "Activated by recursion for context %s. "
%
                                     uid)
                 get_transaction().commit(1)
-    
+
+    security.declarePrivate('onStart')
     def onStart(self):
         # If we are started, and not configured to do anything recursive. 
         # Just let's stop again.
(at)(at) -175,7 +183,9 (at)(at)
             not self.getActivityConfiguration('apply')):
             self.changeState("complete", "Recursion was disabled by user.")
 
+    security.declareProtected(config.WORK_WITH_PROCESS,
'estimateRelevantUsers')
     def estimateRelevantUsers(self):
+        "Estimate the relevant users. Not used for checking."
         return ""
 
 

Modified: AlphaFlow/trunk/activities/review.py
==============================================================================
--- AlphaFlow/trunk/activities/review.py	(original)
+++ AlphaFlow/trunk/activities/review.py	Tue Jun 28 13:22:18 2005
(at)(at) -31,7 +31,8 (at)(at)
     """
 
     __implements__ = (IReviewActivity,) +
BaseAssignableActivity.__implements__
-
+    security = ClassSecurityInfo()
+    
     meta_type = "AlphaFlow Review Activity"
     activity_type = nodeName = "review"
 
(at)(at) -58,6 +59,7 (at)(at)
                   'mode': 'w', 'select_variable': 'listActivityIds'},
          )
 
+    security.declareProtected(config.EDIT_WORKFLOW, '__init__')
     def __init__(self, id):
         warn('Using ReviewActivity is deprecated, use DecisionActivity
instead.',
              DeprecationWarning, stacklevel=2)
(at)(at) -70,16 +72,21 (at)(at)
                 format='checkbox',
                 )
 
-    def getPossibleChildren(self):
-        """Return a list of possible following activities. (List of ids)"""
-        return self.reject_activity + self.accept_activity
-
     def configureFromDOMNode(self, node):
         """Configures the activity from a given DOM-Node"""
         warn('Using ReviewActivity is deprecated, use DecisionActivity
instead.',
              DeprecationWarning, stacklevel=2)
         ReviewActivity.inheritedAttribute('configureFromDOMNode')(self, node)
 
+
+    security.declareProtected(config.MANAGE_WORKFLOW, "getPossibleChildren")
+    def getPossibleChildren(self):
+        """Return a list of possible following activities. (List of ids)"""
+        return self.reject_activity + self.accept_activity
+
+
+    security.declareProtected(config.MANAGE_WORKFLOW, 
+                              "graphGetPossibleChildren")
     def graphGetPossibleChildren(self):
         """Return a list of possible following activities. (List of ids)"""
         warn('Using ReviewActivity is deprecated, use DecisionActivity
instead.',
(at)(at) -107,16 +114,15 (at)(at)
 class ReviewWorkItem(BaseAssignableWorkItem):
 
     __implements__ = (IReviewWorkItem,) +
BaseAssignableWorkItem.__implements__
-
-    activity_type  = "review"
-
     security = ClassSecurityInfo()
 
+    activity_type  = "review"
     reviews = None
 
     ###########
     # IWorkItem
 
+    security.declareProtected(config.WORK_WITH_PROCESS, 'getActions')
     def getActions(self):
         """Determine all possible actions."""
         actions = [
(at)(at) -192,7 +198,7 (at)(at)
         self.notifyAssigneesChange()
         self._update_ui_after_action('Review registered.', REQUEST)
 
-        
+    security.declareProtected(config.WORK_WITH_PROCESS, 'getShortInfo')
     def getShortInfo(self):
         """Returns a short information text."""
         content = self.getContentObject()
(at)(at) -201,6 +207,7 (at)(at)
         else:
             return content.Title()
 
+    security.declareProtected(config.WORK_WITH_PROCESS, 'getStatusInfo')
     def getStatusInfo(self):
         """Returns a short status information text."""
         if self.state == "complete":
(at)(at) -214,15 +221,21 (at)(at)
             msg = alf.translateMsg('status_review', left=users_left)
         return msg
 
+    #########
+    # private
+
+    security.declarePrivate('_get_assignees_dict')
     def _get_assignees_dict(self):
         assignees = self.getActivityConfiguration("assignees")
         assignees = dict([ (name, True) for name in assignees ])
         return assignees
 
+    security.declarePrivate('_is_accepted')
     def _is_accepted(self):
         assignees = self._get_assignees_dict()
         return assignees == self._get_reviews()
 
+    security.declarePrivate('_get_reviews')
     def _get_reviews(self):
         reviews = self.reviews
         if reviews is None:
(at)(at) -233,9 +246,13 (at)(at)
 
 # deprecated, use DecisionActivity instead
 class RolebasedReviewWorkItem(ReviewWorkItem):
+
+    security = ClassSecurityInfo()
     
     activity_type = 'rolebased-review'
+
     
+    security.declareProtected(config.WORK_WITH_PROCESS, "listRelevantUsers")
     def listRelevantUsers(self):
         warn('Using RolebasedReviewWorkItem is deprecated, use
DecisionWorkItem instead.',
              DeprecationWarning, stacklevel=2)
(at)(at) -251,12 +268,14 (at)(at)
             ids = utils.listMembersWithRolesAndLocalRoles(contentObject,
roles)
         return ids
     
+    security.declareProtected(config.WORK_WITH_PROCESS, 'getStatusInfo')
     def getStatusInfo(self):
         """Returns a short status information text."""
         if not self._is_accepted():
             return 'Review pending'
         return 'Reviewed'
     
+    security.declareProtected(config.WORK_WITH_PROCESS,
'estimateRelevantUsers')
     def estimateRelevantUsers(self):
         """Estimate the relevant users. Not used for checking."""
         warn('Using RolebasedReviewWorkItem is deprecated, use
DecisionWorkItem instead.',
(at)(at) -273,12 +292,14 (at)(at)
         
         msg = alf.translateMsg('review_relevant_roles', roles=roles)
         return msg
-        
+
+    security.declarePrivate('_get_assignees_dict')
     def _get_assignees_dict(self):
         assignees = self.getActivityConfiguration("assignees")
         assignees = dict([ (name, True) for name in assignees ])
         return assignees
-    
+
+    security.declarePrivate('_is_accepted')
     def _is_accepted(self):
         # one or more reviews -> accepted
         return bool(self.reviews)

Modified: AlphaFlow/trunk/activities/routing.py
==============================================================================
--- AlphaFlow/trunk/activities/routing.py	(original)
+++ AlphaFlow/trunk/activities/routing.py	Tue Jun 28 13:22:18 2005
(at)(at) -102,19 +102,22 (at)(at)
 
 class RoutingWorkItem(BaseWorkItem):
 
-    activity_type  = "route"
+    __implements__ = BaseWorkItem.__implements__ + (IRoutingWorkItem, )
+    security = ClassSecurityInfo()
 
-    __implements__ = BaseWorkItem.__implements__ + \
-                  (IRoutingWorkItem, )
+    activity_type  = "route"
+    
     ######################
     # IWorkItem
 
+    security.declarePrivate("onStart")
     def onStart(self):
         """Start the gate daemons and route work items
         """
         self.createWorkItems(self.getActivity().gates)
         self.createWorkItems(self.getActivity().routes)
 
+    security.declarePrivate("notifyWorkItemStateChange")
     def notifyWorkItemStateChange(self, workitem):
         """Check if routes have to be closed."""
         # check if workitem is one of our gates
(at)(at) -149,10 +152,12 (at)(at)
         # complete routing
         self.changeState("complete", "Gate %s completed" %
workitem.activity_id)
 
+    security.declareProtected(config.WORK_WITH_PROCESS, 'getShortInfo')
     def getShortInfo(self):
         """Short information"""     #XXX
         return "Route is open"
 
+    security.declareProtected(config.WORK_WITH_PROCESS, 'getStatusInfo')
     def getStatusInfo(self):
         """Short status information"""  # XXX
         return "Route is open"

Modified: AlphaFlow/trunk/activities/task.py
==============================================================================
--- AlphaFlow/trunk/activities/task.py	(original)
+++ AlphaFlow/trunk/activities/task.py	Tue Jun 28 13:22:18 2005
(at)(at) -1,13 +1,12 (at)(at)
 # Copyright (c) 2004-2005 gocept gmbh & co. kg
 # See also LICENSE.txt
-# task.py,v 1.41.2.1 2005/05/02 10:08:51 zagy Exp
+# $Id$
 """Task activity and work item."""
 
 # Zope imports
 from AccessControl import ClassSecurityInfo
 
 # Plone/AT imports
-from Products.CMFCore.utils import getToolByName
 from Products.Archetypes import public as atapi
 
 # Sibling imports
(at)(at) -16,13 +15,13 (at)(at)
 from Products.AlphaFlow.activity import registerActivity,
BaseAssignableActivity
 from Products.AlphaFlow import config, utils
 from Products.AlphaFlow.action import Action
-from Products.AlphaFlow.exception import ConfigurationError
 from Products.AlphaFlow.workflowattr import WorkflowAttribute
 
 
 class TaskActivity(BaseAssignableActivity):
     
     __implements__ = BaseAssignableActivity.__implements__ + (ITaskActivity, )
+    security = ClassSecurityInfo()
 
     meta_type = "AlphaFlow Task Activity"
     activity_type = nodeName = "task"
(at)(at) -52,10 +51,13 (at)(at)
           'select_variable': 'listActivityIds'},
          )
 
+    security.declareProtected(config.MANAGE_WORKFLOW, "getPossibleChildren")
     def getPossibleChildren(self):
         """Return a list of possible following activities. (List of ids)"""
         return self.completion_activity
 
+    security.declareProtected(config.MANAGE_WORKFLOW, 
+                              "graphGetPossibleChildren")
     def graphGetPossibleChildren(self):
         """Return a list of possible following activities. (List of ids)"""
         acts = []
(at)(at) -69,14 +71,14 (at)(at)
 class TaskWorkItem(BaseAssignableWorkItem):
 
     __implements__ = (ITaskWorkItem,) + BaseAssignableWorkItem.__implements__
+    security = ClassSecurityInfo()
 
     activity_type  = "task"
 
-    security = ClassSecurityInfo()
-
     ###########
     # IWorkItem
 
+    security.declareProtected(config.WORK_WITH_PROCESS, 'getActions')
     def getActions(self):
         """Determine all possible actions."""
         return [Action('complete',
(at)(at) -108,18 +110,16 (at)(at)
         self.notifyAssigneesChange()
         self._update_ui_after_action('Activity completed.', REQUEST)
 
+    security.declareProtected(config.WORK_WITH_PROCESS, 'getShortInfo')
     def getShortInfo(self):
         """Returns a short information text."""
         return self.getActivityConfiguration("task")
 
+    security.declareProtected(config.WORK_WITH_PROCESS, 'getStatusInfo')
     def getStatusInfo(self):
         """Returns a short status information text."""
         return self.getComment()
 
-    def getDetailStatus(self):
-        """Return detailed status information"""
-        return self.state
-
 
 
 # register the stuff

Modified: AlphaFlow/trunk/activities/version.py
==============================================================================
--- AlphaFlow/trunk/activities/version.py	(original)
+++ AlphaFlow/trunk/activities/version.py	Tue Jun 28 13:22:18 2005
(at)(at) -7,6 +7,9 (at)(at)
 TODO: move this to glome
 """
 
+# Zope imports
+from AccessControl import ClassSecurityInfo
+
 # Plone/AT imports
 from Products.CMFCore.utils import getToolByName
 
(at)(at) -25,11 +28,14 (at)(at)
 
 class VersioningWorkItem(BaseAutomaticWorkItem):
 
+    security = ClassSecurityInfo()
+
     activity_type  = "version"
 
     ######################
     # IAutomaticWorkItem
-    
+
+    security.declarePrivate('run')
     def run(self):
         "Creates a new version"
         ob = self.getContentObject()
(at)(at) -42,8 +48,8 (at)(at)
             glome_tool = getToolByName(self, 'glome_tool')
             wf_tool = getToolByName(self, 'portal_workflow')
             review_state = wf_tool.getInfoFor(ob, 'review_state', '')
-            glome_tool.unrestrictedStoreVersion(ob,
workflow_status=review_state)
-
+            glome_tool.unrestrictedStoreVersion(ob,
+                                                workflow_status=review_state)
 
 
 # register all the stuff

Modified: AlphaFlow/trunk/activity.py
==============================================================================
--- AlphaFlow/trunk/activity.py	(original)
+++ AlphaFlow/trunk/activity.py	Tue Jun 28 13:22:18 2005
(at)(at) -85,11 +85,14 (at)(at)
             schema = schema.copy()
         return schema
 
+    security.declareProtected(config.MANAGE_WORKFLOW, "getPossibleChildren")
     def getPossibleChildren(self):
         """Return a list of all ids of activities that can be instantiated as
         successors by instances of this activity."""
         return [] # to be overwritten by subclasses
 
+    security.declareProtected(config.MANAGE_WORKFLOW, 
+                              "graphGetPossibleChildren")
     def graphGetPossibleChildren():
         "Return a list of possible successor activities as dictionaries."
         return [] # to be overwritten by subclasses

Modified: AlphaFlow/trunk/importexport.py
==============================================================================
--- AlphaFlow/trunk/importexport.py	(original)
+++ AlphaFlow/trunk/importexport.py	Tue Jun 28 13:22:18 2005
(at)(at) -74,6 +74,7 (at)(at)
     security = ClassSecurityInfo()
 
 
+    security.declareProtected(config.EDIT_WORKFLOW, "__init__")
     def __init__(self, id, *args, **kw):
         "Constructor"
         self.id = id

Modified: AlphaFlow/trunk/instance.py
==============================================================================
--- AlphaFlow/trunk/instance.py	(original)
+++ AlphaFlow/trunk/instance.py	Tue Jun 28 13:22:18 2005
(at)(at) -1,7 +1,7 (at)(at)
-# Copyright (c) 2004-2005 gocept gmbh & co. kg
 # -*- coding: iso-8859-1 -*-
+# Copyright (c) 2004-2005 gocept gmbh & co. kg
 # See also LICENSE.txt
-# instance.py,v 1.52.2.2 2005/04/29 08:08:32 zagy Exp
+# $Id$
 """Process instances"""
 
 # Python imports
(at)(at) -11,6 +11,7 (at)(at)
 # Zope imports
 import zExceptions
 import zLOG
+from Globals import InitializeClass
 from AccessControl import getSecurityManager, ClassSecurityInfo
 from DateTime import DateTime
 from Products.PageTemplates.PageTemplateFile import PageTemplateFile
(at)(at) -80,15 +81,18 (at)(at)
     
     local_role_fake_class = InstanceLocalRoleFake
 
+    security.declareProtected(config.INIT_PROCESS, '__init__')
     def __init__(self, id, object, process_id):
         """Initialize a new process instance."""
         BaseFolder.__init__(self, id)
         self.object = object.UID()
         self.process_id = process_id
 
+    security.declarePrivate('__repr__')
     def __repr__(self):
         return '<Instance (%s) on %s>' % (self.state, self.object)
 
+    security.declarePrivate('manage_afterAdd')
     def manage_afterAdd(self, item, container):
         Instance.inheritedAttribute('manage_afterAdd')(self, item, container)
         deleted = getattr(self, '_v_getting_deleted', False)
(at)(at) -97,16 +101,20 (at)(at)
             self.recordAction("created",
                 "(automatic) process instance was created")
 
+    security.declarePrivate('manage_beforeDelete')
     def manage_beforeDelete(self, item, container):
         Instance.inheritedAttribute('manage_beforeDelete')(self, item,
             container)
         self._v_getting_deleted = True
 
+
+    security.declarePublic('getCharset')
     def getCharset(self):
         """this is a skin method of archetypes returning the site encoding
         """
         return config.SITE_ENCODING
 
+    # XXX security declaration?
     def absolute_url(self, inner=False):
        """A hackish way to use content objects as views.
 
(at)(at) -340,7 +348,7 (at)(at)
                                 contenttype='image/gif',
                                 request=REQUEST)
     
-    security.declareProtected(config.EDIT_WORKFLOW, "getGraph")
+    security.declareProtected(config.EDIT_WORKFLOW, "renderGraph")
     def renderGraph(self, **kwargs):
         """returns the rendered Graph
          pass additional keyword arguments for 
(at)(at) -355,14 +363,17 (at)(at)
     ##############################
     # XXX AT configuration support
 
+    # XXX security declaration?
     def getObjSize(self):
         """This is a replacement to make AT not barf."""
         return 0
 
+    # XXX security declaration?
     def get_size(self):
         """This is a replacement to make AT not barf."""
         return 0
 
+    # XXX security declaration?
     def Schema(self):
         """Generate a schema to configure this instance."""
         # Get Schemas from all the activities
(at)(at) -381,7 +392,7 (at)(at)
         tool = getToolByName(self, 'workflow_manager')
         return tool.getProcess(self.process_id)
 
-    security.declareProtected(config.WORK_WITH_PROCESS, 'getProcess')
+    security.declareProtected(config.WORK_WITH_PROCESS, 'getInstance')
     def getInstance(self):
         "IInstance"
         return self.aq_inner
(at)(at) -416,7 +427,8 (at)(at)
     
     ###################
     # private methods
-    
+
+    security.declarePrivate('_get_schema')
     def _get_schema(self, full=False):
         try:
             process = self.getProcess()
(at)(at) -452,9 +464,11 (at)(at)
                     config_schema.addField(wfield)
         return config_schema
 
+    security.declarePrivate('_wrap_schema')
     def _wrap_schema(self, schema):
         return ImplicitAcquisitionWrapper(schema, self)
 
+    security.declarePrivate('_update_cache')
     def _update_cache(self, workitem):
         """update internal state/workitem cache"""
         state_to_id = getattr(aq_base(self), '_cache_state_to_id', None)
(at)(at) -487,6 +501,7 (at)(at)
 
             self._p_changed = 1
 
+    security.declarePrivate('_index_workitems')
     def _index_workitems(self):
         """reindex the remembered workitems"""
         to_index = getattr(aq_base(self),
(at)(at) -504,18 +519,21 (at)(at)
             content = rc.lookupObject(content_uid)
             if content is not None:
                 content.reindexObject(idxs=['alphaflow_cache_trigger'])
-            
+
+    security.declarePrivate('_rebuild_cache')
     def _rebuild_cache(self):
         for wi in self.objectValues():
             self._update_cache(wi)
         self._v_workitems_to_index = {}
 
+    security.declarePrivate('_terminate')
     def _terminate(self):
         for x in self.getWorkItems(state=None):
             if x.state in ["inactive", "active", "fallout"]:
                 x.changeState("terminated",
                     "(automatic) terminated by request through instance")
 
+    security.declarePrivate('_check_fallout')
     def _check_fallout(self):
         # Check for items that are in fallout state
         items_fallen_out = len(self.getWorkItemIds(state="fallout"))
(at)(at) -527,6 +545,7 (at)(at)
         else:
             fell_out = False
 
+    security.declarePrivate('_check_complete')
     def _check_complete(self, workitems):
         """Stop instance if only daemons are left now
 
(at)(at) -594,11 +613,13 (at)(at)
         return new_ids, new
 
 
+    security.declarePrivate('_start_workitems')
     def _start_workitems(self, workitems):
         for wi in workitems:
             wi.changeState("active", "WorkItem was created and "
                                      "automatically started.")
-         
+
+    security.declarePrivate('_notify_workitem_creation')
     def _notify_workitem_creation(self, new_workitems):
         for wi in self.getWorkItems():
             # Don't notify items about their own creation.
(at)(at) -611,6 +632,7 (at)(at)
                     self.error_log.raising(sys.exc_info())
                     wi.changeState("fallout", str(m))
 
+InitializeClass(Instance)
 registerType(Instance, config.PROJECTNAME)
 
 

Modified: AlphaFlow/trunk/process.py
==============================================================================
--- AlphaFlow/trunk/process.py	(original)
+++ AlphaFlow/trunk/process.py	Tue Jun 28 13:22:18 2005
(at)(at) -77,6 +77,7 (at)(at)
     #########################
     # ZMI convenience methods
 
+    security.declareProtected(config.MANAGE_WORKFLOW, 'manage_addActivity')
     def manage_addActivity(self, activity, REQUEST):
         """Add a new activity"""
         uid = utils.generateUniqueID(activity)

Modified: AlphaFlow/trunk/processmanager.py
==============================================================================
--- AlphaFlow/trunk/processmanager.py	(original)
+++ AlphaFlow/trunk/processmanager.py	Tue Jun 28 13:22:18 2005
(at)(at) -125,7 +125,7 (at)(at)
 
     security.declareProtected(config.MANAGE_WORKFLOW, 'manage_cleanup')
     def manage_cleanup(self, REQUEST):
-        """Clean up all terminated instances and everything with a missing
object"""
+        "Clean up all terminated instances and everything with a missing
object"
         clean = []
         for instance in self.instances.objectValues():
             if instance.state == "terminated":
(at)(at) -219,9 +219,8 (at)(at)
         content_cache = cache.get(content.UID(), {})
         return content_cache.keys()
 
-
-
-
+    #########
+    # private
 
     security.declarePrivate('_get_role_cache')
     def _get_role_cache(self, attr_name):

Modified: AlphaFlow/trunk/workflowedobject.py
==============================================================================
--- AlphaFlow/trunk/workflowedobject.py	(original)
+++ AlphaFlow/trunk/workflowedobject.py	Tue Jun 28 13:22:18 2005
(at)(at) -57,6 +57,7 (at)(at)
     #########################
     # ZMI convenience methods
 
+    security.declarePublic('isAlphaFlowable')
     def isAlphaFlowable(self):
         """Is this a AlphaFlow-Object?"""
         return True
(at)(at) -64,6 +65,7 (at)(at)
     ############
     # Zope hooks
 
+    security.declareProtected(config.MANAGE_WORKFLOW, 'manage_afterClone')
     def manage_afterClone(self, item):
         # we are copied, drop instance (but do not terminate)
         self.alf_clearInstances()

Modified: AlphaFlow/trunk/workitem.py
==============================================================================
--- AlphaFlow/trunk/workitem.py	(original)
+++ AlphaFlow/trunk/workitem.py	Tue Jun 28 13:22:18 2005
(at)(at) -99,11 +99,13 (at)(at)
     local_role_fake_class = WorkItemLocalRoleFake
     _af_notified = True
 
+    security.declareProtected(config.WORK_WITH_PROCESS, '__init__')
     def __init__(self, id, activity_id, content_object=None):
         BaseWorkItem.inheritedAttribute('__init__')(self, id)
         self.activity_id = activity_id
         self.content_object = content_object
 
+    security.declarePrivate('manage_afterAdd')
     def manage_afterAdd(self, item, container):
         BaseWorkItem.inheritedAttribute('manage_afterAdd')(self, item,
             container)
(at)(at) -112,21 +114,25 (at)(at)
             ['Assignee', 'Manager'],
             acquire=True)
         self.setTitle('Workitem')
-   
+
+    security.declarePrivate('manage_beforeDelete')
     def manage_beforeDelete(self, item, container):
         BaseWorkItem.inheritedAttribute('manage_beforeDelete')(self, item,
             container)
         self._v_getting_deleted = True
-    
+
+    security.declarePublic('getCharset')
     def getCharset(self):
         """this is a skin method of archetypes returning the site encoding
         """
         return config.SITE_ENCODING
 
+    security.declarePublic('reindexObject')
     def reindexObject(self, idxs=[]):
         """workitems are very explicitly indexed"""
         pass
-    
+
+    # XXX security declaration?
     def reindexWorkitem(self):
         BaseWorkItem.inheritedAttribute('reindexObject')(self)
    
(at)(at) -287,6 +293,7 (at)(at)
         actions.append(("", "No action"))
         return actions
 
+    # XXX security declaration?
     def absolute_url(self, inner=False):
        """A hackish way to use content objects as views.
 
(at)(at) -307,7 +314,8 (at)(at)
 
        return absurl(self)
 
-    security.declareProtected(config.WORK_WITH_PROCESS,
"getActivityConfiguration")
+    security.declareProtected(config.WORK_WITH_PROCESS,
+                              "getActivityConfiguration")
     def getActivityConfiguration(self, field, default=None):
         """Retrieves the configuration for this activity in the context of
            this instance.
(at)(at) -508,11 +516,13 (at)(at)
         else:
             self.createWorkItems(self.getActivity().continue_activity)
             self.changeState("complete", self.getActivity().title_or_id())
-     
+
+    security.declareProtected(config.WORK_WITH_PROCESS, 'getShortInfo')
     def getShortInfo(self):
         """Short information"""
         return "automatic activity"
 
+    security.declareProtected(config.WORK_WITH_PROCESS, 'getStatusInfo')
     def getStatusInfo(self):
         """Short status information"""
         return "Success"
(at)(at) -529,7 +539,9 (at)(at)
 
     __implements__ = BaseAutomaticWorkItem.__implements__ + \
                      (ITalesWorkItem, )
-         
+    security = ClassSecurityInfo()
+
+    security.declarePrivate('evaluate')
     def evaluate(self):
         "Evaluate the TALES-Expression."
         activity = self.getActivity()
(at)(at) -570,6 +582,7 (at)(at)
     def getSortPriority(self):
         return self.getActivity().sortPriority
 
+
 class WorkItemRegistry(Registry):
     """Registry for workitems."""

SVN: r3112 - AlphaFlow/trunk/Extensions
Michael Howitz <mh(at)gocept.com>
2005-06-28 17:25:28 [ FULL ]
Author: mac
Date: Tue Jun 28 17:19:44 2005
New Revision: 3112

Modified:
   AlphaFlow/trunk/Extensions/Install.py
Log:
fixed bug Bug 2520 Sicherheitsproblem mit importWorkflowFromXML
Previous Solution had the problem that it breakes MarketingPortal which relies
on functionality (guaranteed by interface) to give a filename instead of a file
handle.


Modified: AlphaFlow/trunk/Extensions/Install.py
==============================================================================
--- AlphaFlow/trunk/Extensions/Install.py	(original)
+++ AlphaFlow/trunk/Extensions/Install.py	Tue Jun 28 17:19:44 2005
(at)(at) -201,7 +201,7 (at)(at)
         if alf.getProcess(base, None) is not None:
             alf.deleteProcess(base)
         print >>out, "Installing %r workflow" % base
-        alf.importWorkflowFromXML(base, wf_filename)
+        alf.importWorkflowFromXML(base, file(wf_filename))

SVN: r3113 - AlphaFlow/trunk/activities
Michael Howitz <mh(at)gocept.com>
2005-06-28 17:32:56 [ FULL ]
Author: mac
Date: Tue Jun 28 17:27:41 2005
New Revision: 3113

Modified:
   AlphaFlow/trunk/activities/permission.py
Log:
<permission id="..."> is deprecated but it should work, though. Which it
now again does.


Modified: AlphaFlow/trunk/activities/permission.py
==============================================================================
--- AlphaFlow/trunk/activities/permission.py	(original)
+++ AlphaFlow/trunk/activities/permission.py	Tue Jun 28 17:27:41 2005
(at)(at) -30,14 +30,14 (at)(at)
     __implements__ = (IPermissionSetting, )
 
     nodeName = "permission"
-    attributes = (WorkflowAttribute('permission', 'id', '',
+    attributes = (WorkflowAttribute('permission', 'name', '',
+                                    'The permission affected.',
+                                    encoding="ascii", datatype=str),
+                  WorkflowAttribute('permission', 'id', '',
                                     'id is deprecated, use name!',
                                     encoding="ascii", datatype=str,
                                     importHandler='_attr_import_permid',
                                     exportHandler=None),
-                  WorkflowAttribute('permission', 'name', '',
-                                    'The permission affected.',
-                                    encoding="ascii", datatype=str),
                   WorkflowAttribute('roles', 'roles', '',
                                     'Sequence of affected roles.',
                                     encoding="ascii", datatype=tuple),
(at)(at) -67,7 +67,8 (at)(at)
         warn('<permission id="..." /> is deprecated, use name="..."
instead. '
              'id will get removed in version 1.1.',
              DeprecationWarning, stacklevel=4)
-        self._attr_import_simple(attr, node)
+        if self.permission == '':
+            self._attr_import_simple(attr, node)
     
 
 InitializeWorkflowAttributes(PermissionSetting)

SVN: r3114 - in AlphaFlow/trunk: i18n skins/alphaflow
Michael Howitz <mh(at)gocept.com>
2005-06-29 11:41:26 [ FULL ]
Author: mac
Date: Wed Jun 29 11:36:12 2005
New Revision: 3114

Removed:
   AlphaFlow/trunk/skins/alphaflow/af_edit_instance.cpt
   AlphaFlow/trunk/skins/alphaflow/af_edit_instance.cpt.metadata
Modified:
   AlphaFlow/trunk/i18n/af-de.po
   AlphaFlow/trunk/i18n/af-plone-de.po
   AlphaFlow/trunk/skins/alphaflow/global_workflowmenu.pt
Log:
removed 'reconfigure ...' from workflow menu (it was broken and it can't be
done this way any more (we have configuration activities for this))


Modified: AlphaFlow/trunk/i18n/af-de.po
==============================================================================
--- AlphaFlow/trunk/i18n/af-de.po	(original)
+++ AlphaFlow/trunk/i18n/af-de.po	Wed Jun 29 11:36:12 2005
(at)(at) -101,9 +101,6 (at)(at)
 msgid "gwm_details"
 msgstr "Detailinformationen ..."
 
-msgid "gwm_reconfig"
-msgstr "Workflow neu konfigurieren ..."
-
 msgid "Complete"
 msgstr "Fertigstellen"
 

Modified: AlphaFlow/trunk/i18n/af-plone-de.po
==============================================================================
--- AlphaFlow/trunk/i18n/af-plone-de.po	(original)
+++ AlphaFlow/trunk/i18n/af-plone-de.po	Wed Jun 29 11:36:12 2005
(at)(at) -110,9 +110,6 (at)(at)
 msgid "gwm_details"
 msgstr "Detailinformationen ..."
 
-msgid "gwm_reconfig"
-msgstr "Workflow neu konfigurieren ..."
-
 msgid "Complete"
 msgstr "Fertigstellen"
 

Modified: AlphaFlow/trunk/skins/alphaflow/global_workflowmenu.pt
==============================================================================
--- AlphaFlow/trunk/skins/alphaflow/global_workflowmenu.pt	(original)
+++ AlphaFlow/trunk/skins/alphaflow/global_workflowmenu.pt	Wed Jun 29 11:36:12
2005
(at)(at) -66,11 +66,6 (at)(at)
                         tal:attributes="href
string:${here/absolute_url}/af_details"
                           i18n:translate="gwm_details">Details
...</a>
                     </li>
-                    <li tal:condition="python: has_instance and
user.has_permission('Modify portal content', instance)">
-                        <a href="#" tal:attributes="href
-                          python:here.absolute_url()+'/af_edit_instance'" 
-                          i18n:translate="gwm_reconfig">Reconfigure
...</a>
-                    </li>
                 </ul>
                <a href="#" 
                   onclick="return buttonClick(event, 'workflowMenu');"

SVN: r3115 - in AlphaFlow/trunk: . activities editor editor/views/panels tests www
Michael Howitz <mh(at)gocept.com>
2005-06-29 12:55:51 [ FULL ]
Author: mac
Date: Wed Jun 29 12:50:31 2005
New Revision: 3115

Modified:
   AlphaFlow/trunk/activities/alarm.py
   AlphaFlow/trunk/activities/configuration.py
   AlphaFlow/trunk/activities/dcworkflow.py
   AlphaFlow/trunk/activities/decision.py
   AlphaFlow/trunk/activities/expression.py
   AlphaFlow/trunk/activities/gates.py
   AlphaFlow/trunk/activities/notify.py
   AlphaFlow/trunk/activities/ntask.py
   AlphaFlow/trunk/activities/permission.py
   AlphaFlow/trunk/activities/recursion.py
   AlphaFlow/trunk/activities/routing.py
   AlphaFlow/trunk/activities/task.py
   AlphaFlow/trunk/activities/version.py
   AlphaFlow/trunk/activity.py
   AlphaFlow/trunk/editor/editor.py
   AlphaFlow/trunk/editor/interfaces.py
   AlphaFlow/trunk/editor/views/panels/toolbox.pt
   AlphaFlow/trunk/process.py
   AlphaFlow/trunk/tests/test_editor.py
   AlphaFlow/trunk/www/processOverview.zpt
Log:
corrected usage of icon property
now the activity icons are also displayed in Contents view (manage_main)


Modified: AlphaFlow/trunk/activities/alarm.py
==============================================================================
--- AlphaFlow/trunk/activities/alarm.py	(original)
+++ AlphaFlow/trunk/activities/alarm.py	Wed Jun 29 12:50:31 2005
(at)(at) -19,7 +19,7 (at)(at)
     __implements__ = BaseTalesActivity.__implements__ + (IAlarmActivity, )
     meta_type = "AlphaFlow Alarm Activity"
     activity_type = nodeName = "alarm"
-    icon = "alarm"
+    icon = "misc_/AlphaFlow/alarm"
 
 
 class AlarmWorkItem(BaseTalesWorkItem):

Modified: AlphaFlow/trunk/activities/configuration.py
==============================================================================
--- AlphaFlow/trunk/activities/configuration.py	(original)
+++ AlphaFlow/trunk/activities/configuration.py	Wed Jun 29 12:50:31 2005
(at)(at) -27,7 +27,7 (at)(at)
 
     meta_type = "AlphaFlow Configuration Activity"
     activity_type = nodeName = "configuration"
-    icon = "configuration"
+    icon = "misc_/AlphaFlow/configuration"
 
     attributes = BaseAssignableActivity.attributes + (
         # viewUrlExpression overwrites existing viewUrlExpression

Modified: AlphaFlow/trunk/activities/dcworkflow.py
==============================================================================
--- AlphaFlow/trunk/activities/dcworkflow.py	(original)
+++ AlphaFlow/trunk/activities/dcworkflow.py	Wed Jun 29 12:50:31 2005
(at)(at) -21,7 +21,7 (at)(at)
     
     meta_type = "AlphaFlow DCWorkFlow Activity"
     activity_type = nodeName = "dcworkflow"
-    icon = "dcworkflow"
+    icon = "misc_/AlphaFlow/dcworkflow"
 
     attributes = BaseAutomaticActivity.attributes + (
         WorkflowAttribute('status', 'status', '',

Modified: AlphaFlow/trunk/activities/decision.py
==============================================================================
--- AlphaFlow/trunk/activities/decision.py	(original)
+++ AlphaFlow/trunk/activities/decision.py	Wed Jun 29 12:50:31 2005
(at)(at) -31,7 +31,7 (at)(at)
 
     meta_type = "AlphaFlow Decision Activity"
     activity_type = nodeName = "decision"
-    icon = "decision"
+    icon = "misc_/AlphaFlow/decision"
 
     known_decision_modi = ['first_yes', 'all_yes']
 

Modified: AlphaFlow/trunk/activities/expression.py
==============================================================================
--- AlphaFlow/trunk/activities/expression.py	(original)
+++ AlphaFlow/trunk/activities/expression.py	Wed Jun 29 12:50:31 2005
(at)(at) -20,7 +20,7 (at)(at)
 
     meta_type = "AlphaFlow Expression Activity"
     activity_type = nodeName = "expression"
-    icon = "expression"
+    icon = "misc_/AlphaFlow/expression"
 
 
 class ExpressionWorkItem(BaseTalesWorkItem):

Modified: AlphaFlow/trunk/activities/gates.py
==============================================================================
--- AlphaFlow/trunk/activities/gates.py	(original)
+++ AlphaFlow/trunk/activities/gates.py	Wed Jun 29 12:50:31 2005
(at)(at) -20,7 +20,7 (at)(at)
                                                              IGateActivity)
     meta_type = "AlphaFlow Gate Activity"
     activity_type = nodeName = "gate"
-    icon = "gate"
+    icon = "misc_/AlphaFlow/gate"
 
     # Multimerge is like "OR" (trigger on each)
     # Discriminate is like "XOR" (trigger on first, ignore others)

Modified: AlphaFlow/trunk/activities/notify.py
==============================================================================
--- AlphaFlow/trunk/activities/notify.py	(original)
+++ AlphaFlow/trunk/activities/notify.py	Wed Jun 29 12:50:31 2005
(at)(at) -60,7 +60,7 (at)(at)
 
     meta_type = "AlphaFlow EMail Activity"
     activity_type = nodeName = "email"
-    icon = "email"
+    icon = "misc_/AlphaFlow/email"
 
     attributes = BaseAutomaticActivity.attributes + (
         WorkflowAttribute('template', 'template', '',

Modified: AlphaFlow/trunk/activities/ntask.py
==============================================================================
--- AlphaFlow/trunk/activities/ntask.py	(original)
+++ AlphaFlow/trunk/activities/ntask.py	Wed Jun 29 12:50:31 2005
(at)(at) -49,7 +49,7 (at)(at)
 
     meta_type = "AlphaFlow NTask Activity"
     activity_type = nodeName = "ntask"
-    icon = "ntask"
+    icon = "misc_/AlphaFlow/ntask"
 
     attributes = BaseAssignableActivity.attributes + (
         WorkflowAttribute('exits', '', (),

Modified: AlphaFlow/trunk/activities/permission.py
==============================================================================
--- AlphaFlow/trunk/activities/permission.py	(original)
+++ AlphaFlow/trunk/activities/permission.py	Wed Jun 29 12:50:31 2005
(at)(at) -82,7 +82,7 (at)(at)
 
     meta_type = "AlphaFlow Permission Activity"
     activity_type = nodeName = "permission-change"
-    icon = "permission-change"
+    icon = "misc_/AlphaFlow/permission-change"
 
     attributes = BaseAutomaticActivity.attributes + (
         WorkflowAttribute('permissions', '', (),

Modified: AlphaFlow/trunk/activities/recursion.py
==============================================================================
--- AlphaFlow/trunk/activities/recursion.py	(original)
+++ AlphaFlow/trunk/activities/recursion.py	Wed Jun 29 12:50:31 2005
(at)(at) -30,7 +30,7 (at)(at)
     
     meta_type = "AlphaFlow Recursion Activity"
     activity_type = nodeName = "recursion"
-    icon = "recursion"
+    icon = "misc_/AlphaFlow/recursion"
 
     attributes = BaseAutomaticActivity.attributes + (
         WorkflowAttribute('recursion_activity', 'recursion_activity', (),

Modified: AlphaFlow/trunk/activities/routing.py
==============================================================================
--- AlphaFlow/trunk/activities/routing.py	(original)
+++ AlphaFlow/trunk/activities/routing.py	Wed Jun 29 12:50:31 2005
(at)(at) -37,7 +37,7 (at)(at)
 
     meta_type = "AlphaFlow Routing Activity"
     activity_type = nodeName = "route"
-    icon = "route"
+    icon = "misc_/AlphaFlow/route"
 
     attributes = BaseActivity.attributes + (
         WorkflowAttribute('gates', '', (),

Modified: AlphaFlow/trunk/activities/task.py
==============================================================================
--- AlphaFlow/trunk/activities/task.py	(original)
+++ AlphaFlow/trunk/activities/task.py	Wed Jun 29 12:50:31 2005
(at)(at) -25,7 +25,7 (at)(at)
 
     meta_type = "AlphaFlow Task Activity"
     activity_type = nodeName = "task"
-    icon = "task"
+    icon = "misc_/AlphaFlow/task"
 
     attributes = BaseAssignableActivity.attributes + (
         WorkflowAttribute('completion_activity', 'completion_activity', (),

Modified: AlphaFlow/trunk/activities/version.py
==============================================================================
--- AlphaFlow/trunk/activities/version.py	(original)
+++ AlphaFlow/trunk/activities/version.py	Wed Jun 29 12:50:31 2005
(at)(at) -22,7 +22,7 (at)(at)
 class VersioningActivity(BaseAutomaticActivity):
     meta_type = "AlphaFlow Versioning Activity"
     activity_type = nodeName = "version"
-    icon = "version"
+    icon = "misc_/AlphaFlow/version"
 
 
 

Modified: AlphaFlow/trunk/activity.py
==============================================================================
--- AlphaFlow/trunk/activity.py	(original)
+++ AlphaFlow/trunk/activity.py	Wed Jun 29 12:50:31 2005
(at)(at) -39,7 +39,7 (at)(at)
 
     activity_type = nodeName = None
     configurationSchema = None
-    icon = "generic"
+    icon = "misc_/AlphaFlow/generic"
 
     attributes = (
         WorkflowAttribute('id', 'id', None,
(at)(at) -120,7 +120,7 (at)(at)
 
     meta_type = "AlphaFlow Automatic Activity"
     security = ClassSecurityInfo()
-    icon = "baseautomaticactivity"
+    icon = "misc_/AlphaFlow/baseautomaticactivity"
 
     manage_options = (PropertyManager.manage_options + \
         SimpleItem.manage_options)
(at)(at) -331,7 +331,7 (at)(at)
     __implements__ = BaseAutomaticActivity.__implements__ + \
                      (ITalesActivity, )
     security = ClassSecurityInfo()
-    icon = "basetalesactivity"
+    icon = "misc_/AlphaFlow/basetalesactivity"
 
     attributes = BaseAutomaticActivity.attributes + (
         WorkflowAttribute('expression', 'expression', '',

Modified: AlphaFlow/trunk/editor/editor.py
==============================================================================
--- AlphaFlow/trunk/editor/editor.py	(original)
+++ AlphaFlow/trunk/editor/editor.py	Wed Jun 29 12:50:31 2005
(at)(at) -61,14 +61,14 (at)(at)
     
     security.declareProtected(config.EDIT_WORKFLOW, "getActivityIcons")
     def getActivityIcons(self, filter=[]):
-        """returns a list of tuples with (activity, icon)"""
+        "Returns a list of tuples with (activity, icon)."
         global activity_registry
         
         result = []
         for activity in activity_registry.values():
             if activity.activity_type in filter:
                 continue
-            result.append((activity.activity_type, activity.icon))
+            result.append((activity.activity_type, "/" + activity.icon))
         return result
 
 InitializeClass(AlphaFlowEditor)

Modified: AlphaFlow/trunk/editor/interfaces.py
==============================================================================
--- AlphaFlow/trunk/editor/interfaces.py	(original)
+++ AlphaFlow/trunk/editor/interfaces.py	Wed Jun 29 12:50:31 2005
(at)(at) -8,4 +8,8 (at)(at)
     """graphical editor"""
 
     def getActivityIcons():
-        """returns a list of tuples with (activity, icon)"""
+        """Returns a list of tuples with (activity, icon)
+
+        icon is the absolute path to the icon
+
+        """

Modified: AlphaFlow/trunk/editor/views/panels/toolbox.pt
==============================================================================
--- AlphaFlow/trunk/editor/views/panels/toolbox.pt	(original)
+++ AlphaFlow/trunk/editor/views/panels/toolbox.pt	Wed Jun 29 12:50:31 2005
(at)(at) -22,7 +22,7 (at)(at)
                name="activity"
                tal:define="name python:tuple[0];
                            icon python:tuple[1];"
-               tal:attributes="src string:/misc_/AlphaFlow/${icon};
+               tal:attributes="src icon;
                                value name;" />
         </tal:block>
       </div>

Modified: AlphaFlow/trunk/process.py
==============================================================================
--- AlphaFlow/trunk/process.py	(original)
+++ AlphaFlow/trunk/process.py	Wed Jun 29 12:50:31 2005
(at)(at) -80,7 +80,9 (at)(at)
     security.declareProtected(config.MANAGE_WORKFLOW, 'manage_addActivity')
     def manage_addActivity(self, activity, REQUEST):
         """Add a new activity"""
-        uid = utils.generateUniqueID(activity)
+        uid = REQUEST.get('id', '')
+        if not uid:
+            uid = utils.generateUniqueID(activity)
         self.addActivity(uid, activity)
         if REQUEST is not None:
             REQUEST.RESPONSE.redirect(self.absolute_url() +

Modified: AlphaFlow/trunk/tests/test_editor.py
==============================================================================
--- AlphaFlow/trunk/tests/test_editor.py	(original)
+++ AlphaFlow/trunk/tests/test_editor.py	Wed Jun 29 12:50:31 2005
(at)(at) -38,10 +38,10 (at)(at)
         portal = self.getPortal()
         editor = getToolByName(portal, "workflow_editor")
         tuples = editor.getActivityIcons()
-        expected = [('alarm', 'alarm'),
-                    ('email', 'email'),
-                    ('review', 'generic'),
-                    ('route', 'route')]
+        expected = [('alarm', '/misc_/AlphaFlow/alarm'),
+                    ('email', '/misc_/AlphaFlow/email'),
+                    ('review', '/misc_/AlphaFlow/generic'),
+                    ('route', '/misc_/AlphaFlow/route')]
         
         for exp in expected:
             self.assert_(exp in tuples)

Modified: AlphaFlow/trunk/www/processOverview.zpt
==============================================================================
--- AlphaFlow/trunk/www/processOverview.zpt	(original)
+++ AlphaFlow/trunk/www/processOverview.zpt	Wed Jun 29 12:50:31 2005
(at)(at) -65,8 +65,7 (at)(at)
       <tal:repeat repeat='act acts'>
         <tr tal:condition='repeat/act/even' class='even'>
           <td>
-            <img tal:attributes="src
-            string:/misc_/AlphaFlow/${act/icon}" />
+            <img tal:attributes="src string:/${act/icon}" />
           </td>
             <td>
               <a href="#" 
(at)(at) -81,8 +80,7 (at)(at)
         </tr>
         <tr tal:condition='repeat/act/odd' class='odd'>
           <td>
-            <img tal:attributes="src
-            string:/misc_/AlphaFlow/${act/icon}" />
+            <img tal:attributes="src string:/${act/icon}" />
           </td>
             <td>
               <a href="#" tal:attributes="href

SVN: r3116 - AlphaFlow/trunk/www
Michael Howitz <mh(at)gocept.com>
2005-06-29 13:08:47 [ FULL ]
Author: mac
Date: Wed Jun 29 13:03:41 2005
New Revision: 3116

Modified:
   AlphaFlow/trunk/www/processOverview.zpt
Log:
made processOverview sane


Modified: AlphaFlow/trunk/www/processOverview.zpt
==============================================================================
--- AlphaFlow/trunk/www/processOverview.zpt	(original)
+++ AlphaFlow/trunk/www/processOverview.zpt	Wed Jun 29 13:03:41 2005
(at)(at) -62,31 +62,19 (at)(at)
       </tr>
     </thead>
     <tbody >
-      <tal:repeat repeat='act acts'>
-        <tr tal:condition='repeat/act/even' class='even'>
+      <tal:repeat repeat="act acts">
+        <tr tal:attributes="class python: repeat['act'].odd() and 'odd' or
'even'">
           <td>
             <img tal:attributes="src string:/${act/icon}" />
           </td>
-            <td>
-              <a href="#" 
-                 tal:attributes="href 
-                                
string:${act/absolute_url}/manage_propertiesForm"
-                 >
-                 <span tal:replace="act/getId" /> 
-                 (<span tal:replace="python:act.title or 'n/a'" />)
-              </a>
-            </td>
-            <td tal:content="act/activity_type"/>
-        </tr>
-        <tr tal:condition='repeat/act/odd' class='odd'>
           <td>
-            <img tal:attributes="src string:/${act/icon}" />
+            <a href="#" 
+               tal:attributes="href
string:${act/absolute_url}/manage_propertiesForm">
+              <span tal:replace="act/getId" /> 
+              (<span tal:replace="python:act.title or 'n/a'" />)
+            </a>
           </td>
-            <td>
-              <a href="#" tal:attributes="href
-            string:${act/absolute_url}/manage_propertiesForm"
tal:content="act/title_or_id"></a>
-            </td>
-            <td tal:content="act/activity_type"/>
+          <td tal:content="act/activity_type"/>
         </tr>
       </tal:repeat>
     </tbody>

SVN: r3125 - in LeuBsm/trunk: . doc
Christian Zagrodnick <cz(at)gocept.com>
2005-06-30 11:42:03 [ FULL ]
Author: zagy
Date: Thu Jun 30 11:36:56 2005
New Revision: 3125

Modified:
   LeuBsm/trunk/doc/UPGRADE.txt
   LeuBsm/trunk/version.txt
Log:
0.5.7


Modified: LeuBsm/trunk/doc/UPGRADE.txt
==============================================================================
--- LeuBsm/trunk/doc/UPGRADE.txt	(original)
+++ LeuBsm/trunk/doc/UPGRADE.txt	Thu Jun 30 11:36:56 2005
(at)(at) -4,6 +4,11 (at)(at)
 Nach dem Ausführen eines Updates mit Hilfe des QuickInstallers muss der
 Katalog neu aufgebaut werden. (portal_catalog -> Advanced -> Update)
 
+Update von 0.5.6 auf 0.5.7
+--------------------------
+
+-   LeuBsm Software aktualisieren und Server neustarten.
+
 Update von 0.5.5 auf 0.5.6
 --------------------------
 

Modified: LeuBsm/trunk/version.txt
==============================================================================
--- LeuBsm/trunk/version.txt	(original)
+++ LeuBsm/trunk/version.txt	Thu Jun 30 11:36:56 2005
(at)(at) -1 +1 (at)(at)
-0.5.6
+0.5.7

MailBoxer