Esempio n. 1
0
    def createAndAdd(self, data):
        created = []

        # make sure we don't create private tasks when the feature is
        # not enabled. the field is hidden, but users could still submit.
        if not is_private_task_feature_enabled():
            data['is_private'] = False

        if isinstance(data['responsible'], basestring):
            data['responsible'] = [data['responsible']]

        all_responsible_users = data['responsible']
        for responsible in all_responsible_users:
            data['responsible'] = responsible
            update_reponsible_field_data(data)
            created.append(self._create_task(data))

        # Restore responsible in data
        data['responsible'] = all_responsible_users

        # Set tasktemplate order and move to planned state if it's part
        # of a sequential process
        if IFromSequentialTasktemplate.providedBy(self.context):
            position = data['tasktemplate_position']
            if not position:
                position = len(self.context.get_tasktemplate_order())

            for task in created:
                self.context.add_task_to_tasktemplate_order(position, task)

        self._set_immediate_view(created)
        return created
Esempio n. 2
0
def set_initial_state(task, event):
    """When adding a subtask to a sequential task process, the new task should
    be in the planned state.
    """
    if IDuringTaskTemplateFolderTriggering.providedBy(getRequest()):
        return

    parent = aq_parent(aq_inner(task))
    if ITask.providedBy(parent) \
       and IFromSequentialTasktemplate.providedBy(parent):

        task.set_to_planned_state()
Esempio n. 3
0
    def test_all_tasks_are_marked_with_marker_interface(self, browser):
        self.login(self.regular_user, browser=browser)

        # parallel
        self.tasktemplatefolder.sequence_type = u'parallel'
        self.trigger_tasktemplatefolder(browser,
                                        templates=['Arbeitsplatz einrichten.'])

        main_task = self.dossier.listFolderContents()[-1]
        self.assertTrue(IFromParallelTasktemplate.providedBy(main_task))
        for subtask in main_task.listFolderContents():
            self.assertTrue(IFromParallelTasktemplate.providedBy(subtask))

        # sequential
        self.tasktemplatefolder.sequence_type = u'sequential'
        self.trigger_tasktemplatefolder(browser,
                                        templates=['Arbeitsplatz einrichten.'])

        main_task = self.dossier.listFolderContents()[-1]
        self.assertTrue(IFromSequentialTasktemplate.providedBy(main_task))
        for subtask in main_task.listFolderContents():
            self.assertTrue(IFromSequentialTasktemplate.providedBy(subtask))
Esempio n. 4
0
    def test_all_tasks_are_marked_with_marker_interface(self, browser):
        self.login(self.regular_user, browser=browser)

        # parallel
        self.tasktemplatefolder.sequence_type = u'parallel'
        self.trigger_tasktemplatefolder(
            browser, templates=['Arbeitsplatz einrichten.'])

        main_task = self.dossier.listFolderContents()[-1]
        self.assertTrue(IFromParallelTasktemplate.providedBy(main_task))
        for subtask in main_task.listFolderContents():
            self.assertTrue(IFromParallelTasktemplate.providedBy(subtask))

        # sequential
        self.tasktemplatefolder.sequence_type = u'sequential'
        self.trigger_tasktemplatefolder(
            browser, templates=['Arbeitsplatz einrichten.'])

        main_task = self.dossier.listFolderContents()[-1]
        self.assertTrue(IFromSequentialTasktemplate.providedBy(main_task))
        for subtask in main_task.listFolderContents():
            self.assertTrue(IFromSequentialTasktemplate.providedBy(subtask))
Esempio n. 5
0
 def is_part_of_sequential_process(self):
     return self.context.get_is_subtask() and \
         IFromSequentialTasktemplate.providedBy(self.context)
Esempio n. 6
0
 def get_sequence_type_label(self):
     if IFromSequentialTasktemplate.providedBy(self.context):
         return _('label_sequential_process', default=u'Sequential process')
     elif IFromParallelTasktemplate.providedBy(self.context):
         return _('label_parallel_process', default=u'Parallel process')
Esempio n. 7
0
 def get_sequence_type(self):
     if IFromSequentialTasktemplate.providedBy(self.context):
         return u'sequential'
     elif IFromParallelTasktemplate.providedBy(self.context):
         return u'parallel'
Esempio n. 8
0
 def is_from_sequential_tasktemplate(self):
     """If the task has been generated by triggering a tasktemplatefolder.
     """
     return IFromSequentialTasktemplate.providedBy(self)
Esempio n. 9
0
 def is_part_of_sequential_process(self):
     return self.context.get_is_subtask() and \
         IFromSequentialTasktemplate.providedBy(self.context)
Esempio n. 10
0
 def get_sequence_type_label(self):
     if IFromSequentialTasktemplate.providedBy(self.context):
         return _('label_sequential_process', default=u'Sequential process')
     elif IFromParallelTasktemplate.providedBy(self.context):
         return _('label_parallel_process', default=u'Parallel process')
Esempio n. 11
0
 def get_sequence_type(self):
     if IFromSequentialTasktemplate.providedBy(self.context):
         return u'sequential'
     elif IFromParallelTasktemplate.providedBy(self.context):
         return u'parallel'
Esempio n. 12
0
 def is_from_sequential_tasktemplate(self):
     """If the task has been generated by triggering a tasktemplatefolder.
     """
     return IFromSequentialTasktemplate.providedBy(self)