Update to latest project_phase changes.
This commit is contained in:
parent
01dd1923fd
commit
caae16fefc
|
@ -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
18
role.py
|
@ -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
|
||||||
|
|
18
role.xml
18
role.xml
|
@ -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">
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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>
|
Loading…
Reference in New Issue