def get_basic_frame(project): mock_repository = Mock() project.repository = mock_repository phase = Phase(project) phase._id = 2 phase.save() member = Member(project, 'member_key') member._id = 5 member.save() main_task = Task(project) main_task.description = 'Initial description' main_task.start_date = datetime.date(2016, 1, 4) main_task.duration = 2 main_task.complete = 75 main_task._id = 1 main_task.save() parent = Task(project) parent.description = 'parent description' parent.start_date = datetime.date(2016, 1, 4) parent.duration = 1 parent.complete = 100 parent._id = 2 parent.save() next_task = Task(project) next_task.description = 'next_task description' next_task.start_date = datetime.date(2016, 1, 4) next_task.duration = 1 next_task.complete = 100 next_task._id = 3 next_task.save() return (phase, member, parent, main_task, next_task)
def load_tasks(self): project = self.project tasks = {} resources = self.source.findall('./tasks//task') for resource in resources: if int(resource.attrib['id']) not in project.phases: task = Task(project) task._id = int(resource.attrib['id']) task.description = resource.attrib['name'] task.start_date = datetime.datetime.strptime( resource.attrib['start'], '%Y-%m-%d').date() task.duration = int(resource.attrib['duration']) task.complete = int(resource.attrib['complete']) tasks[task._id] = task project.tasks = tasks input_id = self.source.findall('./tasks/taskproperties/taskproperty' '[@name="inputs"]') if input_id: input_id = input_id[0].attrib['id'] output_id = self.source.findall('./tasks/taskproperties/taskproperty' '[@name="outputs"]') if output_id: output_id = output_id[0].attrib['id'] for resource in resources: if int(resource.attrib['id']) not in project.phases: task = project.tasks[int(resource.attrib['id'])] for child in resource: if child.tag == 'task': subtask = project.tasks[int(child.attrib['id'])] subtask.parent = task if child.tag == 'depend': next_task = project.tasks[int(child.attrib['id'])] task.relations.add_next(next_task, int(child.attrib['difference']) ) if child.tag == 'customproperty': if child.attrib['taskproperty-id'] == input_id: task.inputs = self._get_tokens( child.attrib['value'] ) if child.attrib['taskproperty-id'] == output_id: task.outputs = self._get_tokens( child.attrib['value'] ) resources = self.source.findall('./allocations/allocation') for resource in resources: task_id = int(resource.attrib['task-id']) if task_id in project.tasks: task = project.tasks[task_id] member = project.members[int( resource.attrib['resource-id'] )] if resource.attrib['responsible'] == 'true': task.assigned_to = member else: task.colaborators.append(member) for phase in project.phases.values(): resources = self.source.findall( "./tasks/task[@id='{}']//task".format( phase._id ) ) for resource in resources: task = project.tasks[int(resource.attrib['id'])] task.phase = phase phase.tasks.append(task) for task in project.tasks.values(): task._snap()