def after_transition_hook(self, transition, disable_sync, transition_params): # Revoke local roles for current responsible, except if # revoke_permissions is set to False. # the roles for the new responsible will be assigned afterwards # in set_roles_after_modifying on the ObjectModifiedEvent. if self.context.revoke_permissions: LocalRolesSetter(self.context).revoke_roles() former_responsible = ITask['responsible'] former_responsible_client = ITask['responsible_client'] TaskReminder().clear_reminder(self.context, self.context.responsible) changes = ( (former_responsible, transition_params.get('responsible')), (former_responsible_client, transition_params.get('responsible_client'))) response = add_simple_response( self.context, transition=transition, text=transition_params.get('text'), field_changes=changes, supress_events=True) self.save_related_items(response, transition_params.get('relatedItems')) self.change_responsible(transition_params) notify(ObjectModifiedEvent(self.context)) self.record_activity(response) if not disable_sync: sync_task_response( self.context, getRequest(), 'workflow', transition, transition_params.get('text'), responsible=transition_params.get('responsible'), responsible_client=transition_params.get('responsible_client'))
def sync_deadline(self, new_deadline, text, transition): sync_task_response(self.context, self.context.REQUEST, 'deadline', transition, text, new_deadline=new_deadline)
def after_transition_hook(self, transition, disable_sync, transition_params): # Revoke local roles for current responsible, except if # revoke_permissions is set to False. # the roles for the new responsible will be assigned afterwards # in set_roles_after_modifying on the ObjectModifiedEvent. if self.context.revoke_permissions: LocalRolesSetter(self.context).revoke_roles() former_responsible = ITask['responsible'] former_responsible_client = ITask['responsible_client'] self.context.clear_reminder(self.context.responsible) changes = ( (former_responsible, transition_params.get('responsible')), (former_responsible_client, transition_params.get('responsible_client'))) response = add_simple_response( self.context, transition=transition, text=transition_params.get('text'), field_changes=changes, supress_events=True) self.save_related_items(response, transition_params.get('relatedItems')) self.change_responsible(transition_params) notify(ObjectModifiedEvent(self.context)) self.record_activity(response) if not disable_sync: sync_task_response( self.context, getRequest(), 'workflow', transition, transition_params.get('text'), responsible=transition_params.get('responsible'), responsible_client=transition_params.get('responsible_client'))
def sync_remote_task(self, **kwargs): sync_task_response(self.context, self.request, 'workflow', kwargs.get('transition'), kwargs.get('text'), responsible=kwargs.get('responsible'), responsible_client=kwargs.get('responsible_client'))
def sync_remote_task(self, **kwargs): sync_task_response(self.context, self.request, 'workflow', kwargs.get('transition'), kwargs.get('text'), responsible=kwargs.get('responsible'), responsible_client=kwargs.get('responsible_client'))
def sync_change(self, transition, text, disable_sync): if not disable_sync: sync_task_response(self.context, getRequest(), 'workflow', transition, text)
def sync_deadline(self, new_deadline, text, transition): sync_task_response(self.context, self.context.REQUEST, 'deadline', transition, text, new_deadline=new_deadline)
def _sync_response(self, text): sync_task_response(self.context, self.context.REQUEST, 'comment', self.TRANSITION_TYPE, text)
def sync_change(self, transition, text, disable_sync): if not disable_sync: sync_task_response(self.context, getRequest(), 'workflow', transition, text)
def handleSubmit(self, action): data, errors = self.extractData() if errors: errorMessage = '<ul>' for error in errors: if errorMessage.find(error.message): errorMessage += '<li>' + error.message + '</li>' errorMessage += '</ul>' self.status = errorMessage return None else: new_response = Response(data.get('text')) # define responseTyp responseCreator = new_response.creator task = aq_inner(self.context) transition = data['transition'] if responseCreator == '(anonymous)': new_response.type = 'additional' if responseCreator == task.Creator(): new_response.type = 'clarification' new_response.transition = self.transition # if util.getManagersVocab.getTerm(responseCreator): # new_response.type = 'reply' # check transition if transition in ('task-transition-open-resolved', 'task-transition-in-progress-resolved'): completion_date = datetime.date.today() else: completion_date = None # check other fields options = [ # (task.deadline, data.get('deadline'), 'deadline', # _('deadline')), (task.date_of_completion, completion_date, 'date_of_completion', _('date_of_completion')) ] for task_field, resp_field, option, title in options: if resp_field and task_field != resp_field: new_response.add_change(option, title, task_field, resp_field) task.__setattr__(option, resp_field) # save relatedItems on task related_ids = [] if getattr(task, 'relatedItems'): related_ids = [item.to_id for item in task.relatedItems] relatedItems = data.get('relatedItems') or [] intids = getUtility(IIntIds) for item in relatedItems: to_id = intids.getId(item) # relation allready exists item._v__is_relation = True if to_id not in related_ids: if getattr(task, 'relatedItems'): task.relatedItems.append(RelationValue(to_id)) else: setattr(task, 'relatedItems', [RelationValue(to_id)]) new_response.add_change( 'relatedItems', _(u'label_related_items', default=u"Related Items"), '', linked(item, item.Title())) container = IResponseContainer(self.context) container.add(new_response) # change workflow state of task wftool = getToolByName(self.context, 'portal_workflow') before = wftool.getInfoFor(self.context, 'review_state') if transition != before: before = wftool.getTitleForStateOnType(before, task.Type()) wftool.doActionFor(self.context, transition) after = wftool.getInfoFor(self.context, 'review_state') after = wftool.getTitleForStateOnType(after, task.Type()) new_response.add_change('review_state', _(u'Issue state'), before, after) notify(ObjectModifiedEvent(self.context)) self.record_activity(new_response) sync_task_response(self.context, self.request, 'workflow', transition, data.get('text')) url = self.context.absolute_url() self.request.RESPONSE.redirect(url) return new_response
def handleSubmit(self, action): data, errors = self.extractData() if errors: errorMessage = '<ul>' for error in errors: if errorMessage.find(error.message): errorMessage += '<li>' + error.message + '</li>' errorMessage += '</ul>' self.status = errorMessage return None else: new_response = Response(data.get('text')) # define responseTyp responseCreator = new_response.creator task = aq_inner(self.context) transition = data['transition'] if responseCreator == '(anonymous)': new_response.type = 'additional' if responseCreator == task.Creator(): new_response.type = 'clarification' new_response.transition = self.transition # if util.getManagersVocab.getTerm(responseCreator): # new_response.type = 'reply' # check transition if transition in ('task-transition-open-resolved', 'task-transition-in-progress-resolved'): completion_date = datetime.date.today() else: completion_date = None # check other fields options = [ # (task.deadline, data.get('deadline'), 'deadline', # _('deadline')), (task.date_of_completion, completion_date, 'date_of_completion', _('date_of_completion'))] for task_field, resp_field, option, title in options: if resp_field and task_field != resp_field: new_response.add_change(option, title, task_field, resp_field) task.__setattr__(option, resp_field) # save relatedItems on task related_ids = [] if getattr(task, 'relatedItems'): related_ids = [item.to_id for item in task.relatedItems] relatedItems = data.get('relatedItems') or [] intids = getUtility(IIntIds) for item in relatedItems: to_id = intids.getId(item) # relation allready exists item._v__is_relation = True if to_id not in related_ids: if getattr(task, 'relatedItems'): task.relatedItems.append(RelationValue(to_id)) else: setattr(task, 'relatedItems', [RelationValue(to_id)]) new_response.add_change('relatedItems', _(u'label_related_items', default=u"Related Items"), '', linked(item, item.Title())) container = IResponseContainer(self.context) container.add(new_response) # change workflow state of task wftool = getToolByName(self.context, 'portal_workflow') before = wftool.getInfoFor(self.context, 'review_state') if transition != before: before = wftool.getTitleForStateOnType(before, task.Type()) wftool.doActionFor(self.context, transition) after = wftool.getInfoFor(self.context, 'review_state') after = wftool.getTitleForStateOnType(after, task.Type()) new_response.add_change('review_state', _(u'Issue state'), before, after) notify(ObjectModifiedEvent(self.context)) self.record_activity(new_response) sync_task_response(self.context, self.request, 'workflow', transition, data.get('text')) url = self.context.absolute_url() self.request.RESPONSE.redirect(url) return new_response