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)
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)
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
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)
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
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)