From caae16fefc00b1afcf6d47104b4e5c6275cbe6e8 Mon Sep 17 00:00:00 2001 From: Albert Cervera i Areny Date: Mon, 19 Apr 2021 10:00:43 +0200 Subject: [PATCH] Update to latest project_phase changes. --- __init__.py | 2 +- role.py | 18 ++--- role.xml | 18 ++--- tests/scenario_project_role.rst | 79 +++++++++++-------- ...sk_phase_form.xml => work_status_form.xml} | 2 +- ...sk_phase_list.xml => work_status_list.xml} | 0 6 files changed, 64 insertions(+), 55 deletions(-) rename view/{task_phase_form.xml => work_status_form.xml} (56%) rename view/{task_phase_list.xml => work_status_list.xml} (100%) diff --git a/__init__.py b/__init__.py index dbe5c3d..5d116c9 100644 --- a/__init__.py +++ b/__init__.py @@ -9,6 +9,6 @@ def register(): role.WorkConfiguration, role.Role, role.Allocation, - role.TaskPhase, + role.WorkStatus, role.Work, module='project_role', type_='model') diff --git a/role.py b/role.py index f6eebc6..2588af3 100644 --- a/role.py +++ b/role.py @@ -19,8 +19,8 @@ class Allocation(metaclass=PoolMeta): role = fields.Many2One('project.role', "Role", required=True) -class TaskPhase(metaclass=PoolMeta): - __name__= 'project.work.task_phase' +class WorkStatus(metaclass=PoolMeta): + __name__= 'project.work.status' role = fields.Many2One('project.role', "Role") @@ -73,7 +73,7 @@ class Work(metaclass=PoolMeta): allocations = [] existing_roles = {x.role for x in self.allocations if x.role} for line in self.tracker.workflow.lines: - role = line.phase.role + role = line.status.role if not role or role in existing_roles: continue existing_roles.add(role) @@ -88,31 +88,31 @@ class Work(metaclass=PoolMeta): def _get_assignee_query(cls): pool = Pool() Allocation = pool.get('project.allocation') - Phase = pool.get('project.work.task_phase') + Status = pool.get('project.work.status') Employee = pool.get('company.employee') Party = pool.get('party.party') Role = pool.get('project.role') work = cls.__table__() allocation = Allocation.__table__() - phase = Phase.__table__() + status = Status.__table__() employee = Employee.__table__() party = Party.__table__() role = Role.__table__() join1 = work.join(allocation, condition = work.id == allocation.work) - join2 = join1.join(phase, condition = phase.id == work.task_phase) + join2 = join1.join(status, condition = status.id == work.status) join3 = join2.join(employee, condition = allocation.employee == employee.id) join4 = join3.join(party, condition = party.id == employee.party) join5 = join4.join(role, condition = allocation.role == role.id) query = join5.select(work.id) - query.where = (phase.role == allocation.role) + query.where = (status.role == allocation.role) return query, party, role def get_assignee(self, name): - if not self.task_phase: + if not self.status: return - role_need = self.task_phase.role + role_need = self.status.role for allocation in self.allocations: if allocation.role == role_need: return allocation.employee.id diff --git a/role.xml b/role.xml index 4e1a103..651af38 100644 --- a/role.xml +++ b/role.xml @@ -25,16 +25,16 @@ - - - project.work.task_phase - task_phase_form - + + + project.work.status + work_status_form + - - project.work.task_phase - task_phase_list - + + project.work.status + work_status_list + diff --git a/tests/scenario_project_role.rst b/tests/scenario_project_role.rst index 351a03e..adb5c23 100644 --- a/tests/scenario_project_role.rst +++ b/tests/scenario_project_role.rst @@ -63,17 +63,19 @@ Create Roles:: >>> reviewer.name = 'Reviewer' >>> reviewer.save() -Create TaskPhase:: +Create Status:: - >>> Task_Phase = Model.get('project.work.task_phase') - >>> phase = Task_Phase() - >>> phase.name = 'inici' - >>> phase.role = dev - >>> phase.save() - >>> phase2 = Task_Phase() - >>> phase2.name = 'test' - >>> phase2.role = tester - >>> phase2.save() + >>> Status = Model.get('project.work.status') + >>> status = Status() + >>> status.name = 'Start' + >>> status.role = dev + >>> status.types = ['task'] + >>> status.save() + >>> status2 = Status() + >>> status2.name = 'Test' + >>> status2.role = tester + >>> status2.types = ['task'] + >>> status2.save() Create Workflow:: @@ -84,15 +86,15 @@ Create Workflow:: Create Workflow Lines :: - >>> Workflow_Line = Model.get('project.work.workflow.line') - >>> workflow_line = Workflow_Line() + >>> WorkflowLine = Model.get('project.work.workflow.line') + >>> workflow_line = WorkflowLine() >>> workflow_line.workflow = workflow - >>> workflow_line.phase = phase + >>> workflow_line.status = status >>> workflow_line.save() - >>> workflow_line2 = Workflow_Line() + >>> workflow_line2 = WorkflowLine() >>> workflow_line2.workflow = workflow - >>> workflow_line2.phase = phase2 + >>> workflow_line2.status = status2 >>> workflow_line2.save() Create Tracker:: @@ -119,6 +121,8 @@ Create Project:: >>> project.type = 'project' >>> project.status = open >>> project.save() + >>> project.allocations + [] Create Allocation:: @@ -137,20 +141,19 @@ Create Task:: >>> task.name = 'Task' >>> task.company = company >>> task.tracker = tracker - >>> task.task_phase = workflow_line2.phase - >>> task.status = open + >>> task.status = workflow_line2.status >>> task.save() Searcher :: >>> result, = Work.find(['name','ilike', '%Tas%']) - >>> result.id == task.id + >>> result == task True Searcher Asignee Tests:: >>> result, = Work.find(['assignee', 'ilike', '%emp2%']) - >>> result.id == task.id + >>> result == task True >>> result = Work.find(['assignee', 'ilike', '%emp1%']) >>> result @@ -158,17 +161,19 @@ Searcher Asignee Tests:: Searcher employee/role:: - >>> result, = Work.find(['role_employee', 'ilike', '%emp1/dev%']) - >>> result.id == task.id + >>> result = Work.find(['role_employee', 'ilike', '%emp1/dev%'], + ... order=[('id', 'ASC')]) + >>> result == [project, task] True >>> result, = Work.find(['role_employee', 'ilike', '%emp2/test%']) - >>> result.id == task.id + >>> result == task True >>> result = Work.find(['role_employee', 'ilike', '%emp1/test%']) >>> result [] - >>> result, = Work.find(['role_employee', 'ilike', '%emp1%']) - >>> result.id == task.id + >>> result = Work.find(['role_employee', 'ilike', '%emp1%'], + ... order=[('id', 'ASC')]) + >>> result == [project, task] True >>> result = Work.find(['role_employee', 'ilike', '%test%']) >>> result @@ -178,14 +183,16 @@ On_change_parent test:: >>> task.allocations[0].employee = employee2 >>> task.save() - >>> Work.find(['role_employee', 'ilike', '%emp1/dev%']) - [] + >>> result = Work.find(['role_employee', 'ilike', '%emp1/dev%']) + >>> result == [project] + True >>> task.parent = None >>> task.save() >>> task.parent = project >>> task.save() - >>> result, = Work.find(['role_employee', 'ilike', '%emp1/dev%']) - >>> result.id == task.id + >>> result = Work.find(['role_employee', 'ilike', '%emp1/dev%'], + ... order=[('id', 'ASC')]) + >>> result == [project, task] True >>> allocation2 = Allocation() >>> allocation2.role = reviewer @@ -193,24 +200,26 @@ On_change_parent test:: >>> allocation2.work = task >>> allocation2.save() >>> result, = Work.find(['role_employee', 'ilike', '%emp2/revi%']) - >>> result.id == task.id + >>> result == task True >>> task.parent = None >>> task.save() >>> task.parent = project >>> task.save() >>> result, = Work.find(['role_employee', 'ilike', '%emp2/revi%']) - >>> result.id == task.id + >>> result == task True >>> task.allocations[0].delete() >>> task.save() - >>> result = Work.find(['role_employee', 'ilike', '%emp1/dev%']) - >>> result - [] + >>> result = Work.find(['role_employee', 'ilike', '%emp1/dev%'], + ... order=[('id', 'ASC')]) + >>> result == [project] + True >>> task.parent = None >>> task.save() >>> task.parent = project >>> task.save() - >>> result, = Work.find(['role_employee', 'ilike', '%emp1/dev%']) - >>> result.id == task.id + >>> result = Work.find(['role_employee', 'ilike', '%emp1/dev%'], + ... order=[('id', 'ASC')]) + >>> result == [project, task] True diff --git a/view/task_phase_form.xml b/view/work_status_form.xml similarity index 56% rename from view/task_phase_form.xml rename to view/work_status_form.xml index 671c397..ec50923 100644 --- a/view/task_phase_form.xml +++ b/view/work_status_form.xml @@ -1,5 +1,5 @@ - + diff --git a/view/task_phase_list.xml b/view/work_status_list.xml similarity index 100% rename from view/task_phase_list.xml rename to view/work_status_list.xml