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.Role,
role.Allocation,
role.TaskPhase,
role.WorkStatus,
role.Work,
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)
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

View File

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

View File

@ -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

View File

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