Update to latest project_phase changes.

This commit is contained in:
Albert Cervera i Areny 2021-04-19 10:00:43 +02:00
parent 01dd1923fd
commit caae16fefc
6 changed files with 64 additions and 55 deletions

View File

@ -9,6 +9,6 @@ def register():
role.WorkConfiguration, role.WorkConfiguration,
role.Role, role.Role,
role.Allocation, role.Allocation,
role.TaskPhase, role.WorkStatus,
role.Work, role.Work,
module='project_role', type_='model') module='project_role', type_='model')

18
role.py
View File

@ -19,8 +19,8 @@ class Allocation(metaclass=PoolMeta):
role = fields.Many2One('project.role', "Role", required=True) role = fields.Many2One('project.role', "Role", required=True)
class TaskPhase(metaclass=PoolMeta): class WorkStatus(metaclass=PoolMeta):
__name__= 'project.work.task_phase' __name__= 'project.work.status'
role = fields.Many2One('project.role', "Role") role = fields.Many2One('project.role', "Role")
@ -73,7 +73,7 @@ class Work(metaclass=PoolMeta):
allocations = [] allocations = []
existing_roles = {x.role for x in self.allocations if x.role} existing_roles = {x.role for x in self.allocations if x.role}
for line in self.tracker.workflow.lines: for line in self.tracker.workflow.lines:
role = line.phase.role role = line.status.role
if not role or role in existing_roles: if not role or role in existing_roles:
continue continue
existing_roles.add(role) existing_roles.add(role)
@ -88,31 +88,31 @@ class Work(metaclass=PoolMeta):
def _get_assignee_query(cls): def _get_assignee_query(cls):
pool = Pool() pool = Pool()
Allocation = pool.get('project.allocation') Allocation = pool.get('project.allocation')
Phase = pool.get('project.work.task_phase') Status = pool.get('project.work.status')
Employee = pool.get('company.employee') Employee = pool.get('company.employee')
Party = pool.get('party.party') Party = pool.get('party.party')
Role = pool.get('project.role') Role = pool.get('project.role')
work = cls.__table__() work = cls.__table__()
allocation = Allocation.__table__() allocation = Allocation.__table__()
phase = Phase.__table__() status = Status.__table__()
employee = Employee.__table__() employee = Employee.__table__()
party = Party.__table__() party = Party.__table__()
role = Role.__table__() role = Role.__table__()
join1 = work.join(allocation, condition = work.id == allocation.work) 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) join3 = join2.join(employee, condition = allocation.employee == employee.id)
join4 = join3.join(party, condition = party.id == employee.party) join4 = join3.join(party, condition = party.id == employee.party)
join5 = join4.join(role, condition = allocation.role == role.id) join5 = join4.join(role, condition = allocation.role == role.id)
query = join5.select(work.id) query = join5.select(work.id)
query.where = (phase.role == allocation.role) query.where = (status.role == allocation.role)
return query, party, role return query, party, role
def get_assignee(self, name): def get_assignee(self, name):
if not self.task_phase: if not self.status:
return return
role_need = self.task_phase.role role_need = self.status.role
for allocation in self.allocations: for allocation in self.allocations:
if allocation.role == role_need: if allocation.role == role_need:
return allocation.employee.id return allocation.employee.id

View File

@ -25,16 +25,16 @@
<field name="view" ref="project_role_view_form"/> <field name="view" ref="project_role_view_form"/>
<field name="act_window" ref="act_project_role"/> <field name="act_window" ref="act_project_role"/>
</record> </record>
<!-- add roles to phase --> <!-- add roles to status -->
<record model="ir.ui.view" id="project_phase_view_form"> <record model="ir.ui.view" id="work_status_view_form">
<field name="model">project.work.task_phase</field> <field name="model">project.work.status</field>
<field name="name">task_phase_form</field> <field name="name">work_status_form</field>
<field name="inherit" ref="project_phase.project_phase_view_form"/> <field name="inherit" ref="project.work_status_view_form"/>
</record> </record>
<record model="ir.ui.view" id="project_phase_view_list"> <record model="ir.ui.view" id="work_status_view_list">
<field name="model">project.work.task_phase</field> <field name="model">project.work.status</field>
<field name="name">task_phase_list</field> <field name="name">work_status_list</field>
<field name="inherit" ref="project_phase.project_phase_view_list"/> <field name="inherit" ref="project.work_status_view_list"/>
</record> </record>
<!-- add roles to allocations --> <!-- add roles to allocations -->
<record model="ir.ui.view" id="allocation_view_form"> <record model="ir.ui.view" id="allocation_view_form">

View File

@ -63,17 +63,19 @@ Create Roles::
>>> reviewer.name = 'Reviewer' >>> reviewer.name = 'Reviewer'
>>> reviewer.save() >>> reviewer.save()
Create TaskPhase:: Create Status::
>>> Task_Phase = Model.get('project.work.task_phase') >>> Status = Model.get('project.work.status')
>>> phase = Task_Phase() >>> status = Status()
>>> phase.name = 'inici' >>> status.name = 'Start'
>>> phase.role = dev >>> status.role = dev
>>> phase.save() >>> status.types = ['task']
>>> phase2 = Task_Phase() >>> status.save()
>>> phase2.name = 'test' >>> status2 = Status()
>>> phase2.role = tester >>> status2.name = 'Test'
>>> phase2.save() >>> status2.role = tester
>>> status2.types = ['task']
>>> status2.save()
Create Workflow:: Create Workflow::
@ -84,15 +86,15 @@ Create Workflow::
Create Workflow Lines :: Create Workflow Lines ::
>>> Workflow_Line = Model.get('project.work.workflow.line') >>> WorkflowLine = Model.get('project.work.workflow.line')
>>> workflow_line = Workflow_Line() >>> workflow_line = WorkflowLine()
>>> workflow_line.workflow = workflow >>> workflow_line.workflow = workflow
>>> workflow_line.phase = phase >>> workflow_line.status = status
>>> workflow_line.save() >>> workflow_line.save()
>>> workflow_line2 = Workflow_Line() >>> workflow_line2 = WorkflowLine()
>>> workflow_line2.workflow = workflow >>> workflow_line2.workflow = workflow
>>> workflow_line2.phase = phase2 >>> workflow_line2.status = status2
>>> workflow_line2.save() >>> workflow_line2.save()
Create Tracker:: Create Tracker::
@ -119,6 +121,8 @@ Create Project::
>>> project.type = 'project' >>> project.type = 'project'
>>> project.status = open >>> project.status = open
>>> project.save() >>> project.save()
>>> project.allocations
[]
Create Allocation:: Create Allocation::
@ -137,20 +141,19 @@ Create Task::
>>> task.name = 'Task' >>> task.name = 'Task'
>>> task.company = company >>> task.company = company
>>> task.tracker = tracker >>> task.tracker = tracker
>>> task.task_phase = workflow_line2.phase >>> task.status = workflow_line2.status
>>> task.status = open
>>> task.save() >>> task.save()
Searcher :: Searcher ::
>>> result, = Work.find(['name','ilike', '%Tas%']) >>> result, = Work.find(['name','ilike', '%Tas%'])
>>> result.id == task.id >>> result == task
True True
Searcher Asignee Tests:: Searcher Asignee Tests::
>>> result, = Work.find(['assignee', 'ilike', '%emp2%']) >>> result, = Work.find(['assignee', 'ilike', '%emp2%'])
>>> result.id == task.id >>> result == task
True True
>>> result = Work.find(['assignee', 'ilike', '%emp1%']) >>> result = Work.find(['assignee', 'ilike', '%emp1%'])
>>> result >>> result
@ -158,17 +161,19 @@ Searcher Asignee Tests::
Searcher employee/role:: Searcher employee/role::
>>> result, = Work.find(['role_employee', 'ilike', '%emp1/dev%']) >>> result = Work.find(['role_employee', 'ilike', '%emp1/dev%'],
>>> result.id == task.id ... order=[('id', 'ASC')])
>>> result == [project, task]
True True
>>> result, = Work.find(['role_employee', 'ilike', '%emp2/test%']) >>> result, = Work.find(['role_employee', 'ilike', '%emp2/test%'])
>>> result.id == task.id >>> result == task
True True
>>> result = Work.find(['role_employee', 'ilike', '%emp1/test%']) >>> result = Work.find(['role_employee', 'ilike', '%emp1/test%'])
>>> result >>> result
[] []
>>> result, = Work.find(['role_employee', 'ilike', '%emp1%']) >>> result = Work.find(['role_employee', 'ilike', '%emp1%'],
>>> result.id == task.id ... order=[('id', 'ASC')])
>>> result == [project, task]
True True
>>> result = Work.find(['role_employee', 'ilike', '%test%']) >>> result = Work.find(['role_employee', 'ilike', '%test%'])
>>> result >>> result
@ -178,14 +183,16 @@ On_change_parent test::
>>> task.allocations[0].employee = employee2 >>> task.allocations[0].employee = employee2
>>> task.save() >>> task.save()
>>> Work.find(['role_employee', 'ilike', '%emp1/dev%']) >>> result = Work.find(['role_employee', 'ilike', '%emp1/dev%'])
[] >>> result == [project]
True
>>> task.parent = None >>> task.parent = None
>>> task.save() >>> task.save()
>>> task.parent = project >>> task.parent = project
>>> task.save() >>> task.save()
>>> result, = Work.find(['role_employee', 'ilike', '%emp1/dev%']) >>> result = Work.find(['role_employee', 'ilike', '%emp1/dev%'],
>>> result.id == task.id ... order=[('id', 'ASC')])
>>> result == [project, task]
True True
>>> allocation2 = Allocation() >>> allocation2 = Allocation()
>>> allocation2.role = reviewer >>> allocation2.role = reviewer
@ -193,24 +200,26 @@ On_change_parent test::
>>> allocation2.work = task >>> allocation2.work = task
>>> allocation2.save() >>> allocation2.save()
>>> result, = Work.find(['role_employee', 'ilike', '%emp2/revi%']) >>> result, = Work.find(['role_employee', 'ilike', '%emp2/revi%'])
>>> result.id == task.id >>> result == task
True True
>>> task.parent = None >>> task.parent = None
>>> task.save() >>> task.save()
>>> task.parent = project >>> task.parent = project
>>> task.save() >>> task.save()
>>> result, = Work.find(['role_employee', 'ilike', '%emp2/revi%']) >>> result, = Work.find(['role_employee', 'ilike', '%emp2/revi%'])
>>> result.id == task.id >>> result == task
True True
>>> task.allocations[0].delete() >>> task.allocations[0].delete()
>>> task.save() >>> task.save()
>>> result = Work.find(['role_employee', 'ilike', '%emp1/dev%']) >>> result = Work.find(['role_employee', 'ilike', '%emp1/dev%'],
>>> result ... order=[('id', 'ASC')])
[] >>> result == [project]
True
>>> task.parent = None >>> task.parent = None
>>> task.save() >>> task.save()
>>> task.parent = project >>> task.parent = project
>>> task.save() >>> task.save()
>>> result, = Work.find(['role_employee', 'ilike', '%emp1/dev%']) >>> result = Work.find(['role_employee', 'ilike', '%emp1/dev%'],
>>> result.id == task.id ... order=[('id', 'ASC')])
>>> result == [project, task]
True True

View File

@ -1,5 +1,5 @@
<data> <data>
<xpath expr="/form/field[@name='sequence']" position="after"> <xpath expr="//field[@name='sequence']" position="after">
<label name="role"/> <label name="role"/>
<field name="role"/> <field name="role"/>
</xpath> </xpath>