Exemple #1
0
 def getViewUrl(self):
     """return url to view appropriate the page to handle the workitem
     """
     try:
         activity = self.getActivity()
     except AttributeError:
         # The activity doesn't exist.
         return ''
     else:
         return utils.evaluateTales(activity.viewUrlExpression, workitem=self)
Exemple #2
0
def evaluate_expression(context, definition):
    workitem = context.getWorkItem()
    run_as = evaluateTales(definition.runAs, workitem=workitem)
    if isinstance(run_as, (str, unicode)):
        acl_users = context.getContentObject().acl_users
        run_as = acl_users.getUser(run_as)
    try:
        run_as.getUserName()
    except AttributeError:
        raise ValueError('The runAs expression %r did not return a proper '
                         'user but %r' % (definition.runAs, run_as))

    evaluateTalesAs(definition.expression, run_as, workitem=workitem)
Exemple #3
0
    def _get_action(self, exit):
        def callback():
            self.complete(exit.id)

        try:
            exit_enabled = utils.evaluateTales(exit.condition, workitem=self)
        except Exception:
            exit_enabled = False

        a = Action(
            exit.id, exit.title or exit.id,
            "%s/complete?exit=%s" % (self.absolute_url(inner=True), exit.id),
            callback, exit_enabled)
        return a
Exemple #4
0
    def _update_ui_after_action(self, default_message, REQUEST):
        if not REQUEST:
            return None
        response = getattr(REQUEST, 'RESPONSE', None)
        if not response or response.status == 302:
            return None

        message = REQUEST.get('alphaflow_status_message', default_message)

        activity = self.getActivity()
        if activity.completionUrlExpression:
            url = utils.evaluateTales(activity.completionUrlExpression,
                                      workitem=self)
            response.redirect(url)
        else:
            content = self.getContentObject()
            content.af_redirect_after_action(message)
Exemple #5
0
 def _list_relevant_users(self, source):
     #XXX duplicated code from activity.py, refactor!
     if self.assigneesKind == 'possible':
         relevant = source.getInstance().getActivityConfiguration(
             "assignees", self.getId())
         if not isinstance(relevant, (list, tuple)):
             relevant = []
     else:
         if self.assigneesExpression is not None:
             relevant = utils.evaluateTales(self.assigneesExpression,
                                            activity=self,
                                            instance=source.getInstance())
             groupstool = getToolByName(self, "portal_groups")
             relevant = utils.expandGroups(groupstool, relevant)
         else:
             # we have roles
             roles = self.roles
             relevant = source.listMembersWithRolesOnContentObject(roles)
     return relevant
Exemple #6
0
 def listRelevantUsers(self):
     if ILifeCycleController(self).state != "active":
         return []
     activity = self.getActivity()
     assert IAssignableActivity.providedBy(activity)
     if activity.assigneesKind == 'possible':
         relevant = self.getActivityConfiguration("assignees")
         if not isinstance(relevant, (list, tuple)):
             relevant = []
     else:
         if activity.assigneesExpression is not None:
             relevant = utils.evaluateTales(activity.assigneesExpression,
                                            workitem=self)
             groupstool = getToolByName(self, "portal_groups")
             relevant = utils.expandGroups(groupstool, relevant)
         elif activity.roles:
             # we have roles
             roles = activity.roles
             relevant = self.listMembersWithRolesOnContentObject(roles)
         else:
             # we have groups
             gt = getToolByName(self, 'portal_groups')
             relevant = utils.expandGroups(gt, activity.groups)
     return list(relevant)