Turkesh Patel (openERP) has proposed merging
lp:~openerp-dev/openobject-addons/trunk-clean-test-project_long_term-tpa into
lp:openobject-addons.
Requested reviews:
Ujjvala Collins (OpenERP) (uco-openerp)
For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-clean-test-project_long_term-tpa/+merge/85081
project_long_term
aded deadcode in project_long_term.py file
--
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-clean-test-project_long_term-tpa/+merge/85081
Your team OpenERP R&D Team is subscribed to branch
lp:~openerp-dev/openobject-addons/trunk-clean-test-project_long_term-tpa.
=== modified file 'project_long_term/__openerp__.py'
--- project_long_term/__openerp__.py 2011-12-08 22:25:43 +0000
+++ project_long_term/__openerp__.py 2011-12-09 08:59:28 +0000
@@ -43,14 +43,7 @@
"init_xml": [],
"demo_xml": ["project_long_term_demo.xml"],
"test": [
- 'test/test_schedule_phases_case1.yml',
- 'test/schedule_project_phases.yml',
- 'test/schedule_project_tasks.yml',
- 'test/test_schedule_phases_case2.yml',
- 'test/project_schedule_consecutive_day.yml',
- 'test/project_schedule_without_wroking_hour.yml',
- 'test/phase_constraint.yml',
- 'test/test_schedule_tasks_case1.yml',
+ 'test/phase_process.yml',
],
"update_xml": [
"security/ir.model.access.csv",
=== modified file 'project_long_term/project_long_term.py'
--- project_long_term/project_long_term.py 2011-11-22 08:51:38 +0000
+++ project_long_term/project_long_term.py 2011-12-09 08:59:28 +0000
@@ -72,12 +72,13 @@
if phase['date_start'] and phase['date_end'] and phase['date_start'] > phase['date_end']:
return False
return True
-
+ #dead code
def _get_default_uom_id(self, cr, uid):
model_data_obj = self.pool.get('ir.model.data')
model_data_id = model_data_obj._get_id(cr, uid, 'product', 'uom_hour')
return model_data_obj.read(cr, uid, [model_data_id], ['res_id'])[0]['res_id']
+ #dead code
def _compute_progress(self, cr, uid, ids, field_name, arg, context=None):
res = {}
if not ids:
=== modified file 'project_long_term/project_long_term_demo.xml'
--- project_long_term/project_long_term_demo.xml 2011-11-13 14:13:16 +0000
+++ project_long_term/project_long_term_demo.xml 2011-12-09 08:59:28 +0000
@@ -5,6 +5,10 @@
This Demo data file Human Resources, Phases and Resources,Tasks allocation and also run scheduling of phase and tasks.
-->
+ <record id="project.project_integrate_openerp" model="project.project">
+ <field name="resource_calendar_id" ref="resource.timesheet_group1"/>
+ </record>
+
<!-- Project Phases -->
<record id="project_phase_1" model="project.phase">
@@ -13,6 +17,7 @@
<field name="product_uom" ref="product.uom_day"/>
<field eval="1" name="sequence"/>
<field name="duration">30</field>
+ <field name="constraint_date_start" eval="time.strftime('%Y-%m-01 10:00:00')"></field>
<field name="project_id" ref="project.project_integrate_openerp"/>
</record>
@@ -37,9 +42,9 @@
<field name="project_id" ref="project.project_integrate_openerp"/>
</record>
<function model="project.phase" name="set_open" eval="[ref('project_phase_3')]"/>
-
+
<record id="project_phase_4" model="project.phase">
- <field eval="[(6, 0, [ref('project_phase_2')])]" name="previous_phase_ids"/>
+ <field eval="[(6, 0, [ref('project_phase_3')])]" name="previous_phase_ids"/>
<field name="name">Development and Integration</field>
<field name="product_uom" ref="product.uom_day"/>
<field eval="4" name="sequence"/>
@@ -60,7 +65,7 @@
<field eval="[(6, 0, [ref('project_phase_5')])]" name="previous_phase_ids"/>
<field name="name">Deployement and Training</field>
<field name="product_uom" ref="product.uom_day"/>
- <field eval="5" name="sequence"/>
+ <field eval="6" name="sequence"/>
<field name="duration">10</field>
<field name="project_id" ref="project.project_integrate_openerp"/>
</record>
=== removed file 'project_long_term/test/phase_constraint.yml'
--- project_long_term/test/phase_constraint.yml 2011-10-27 21:11:24 +0000
+++ project_long_term/test/phase_constraint.yml 1970-01-01 00:00:00 +0000
@@ -1,118 +0,0 @@
--
- Given that I have a project 'Test Phases'.
--
- !record {model: project.project, id: project_project_developyamlproject0}:
- name: "Develop Yaml Project Module"
- date_start: !eval time.strftime('%Y-%m-%d')
- resource_calendar_id: resource.timesheet_group1
- members:
- - base.user_admin
--
- And I create three human ressources to work on this project, an analyst.
--
- !record {model: resource.resource, id: resource_resource_analyst1}:
- calendar_id: resource.timesheet_group1
- name: Analyst
- resource_type: user
- time_efficiency: 1.0
- user_id: base.user_admin
--
- I define a developer HR.
--
- !record {model: resource.resource, id: resource_resource_develop0}:
- calendar_id: resource.timesheet_group1
- name: Developer
- resource_type: user
- time_efficiency: 1.0
- user_id: base.user_admin
--
- I define a tester HR.
--
- !record {model: resource.resource, id: resource_resource_tester1}:
- calendar_id: resource.timesheet_group1
- name: tester
- resource_type: user
- time_efficiency: 1.0
- user_id: base.user_admin
--
- Then I create three phases for my projects; Analysis, Development, Testing.
--
- The first phase is 'Analysis' and has a duration of 6 days.
--
- !record {model: project.phase, id: project_phase_analysisflowforyaml0}:
- date_start: !eval time.strftime('%Y-%m-%d')
- duration: 6.0
- name: "Analysis"
- product_uom: product.uom_day
- project_id: project_project_developyamlproject0
- state: draft
-
--
- I update the constrain and the analysis phase to not start before 4 days.
--
- !python {model : project.phase }: |
- pass
- import datetime
- from dateutil.relativedelta import *
- start = datetime.date.today() + relativedelta(days=4)
- self.write(cr,uid, [(ref("project_phase_analysisflowforyaml0"))], {'constraint_date_start': start})
--
- The second phase is 'Development' and depend on the 'Analysis', with a duration of 6 days.
--
- !record {model: project.phase, id: project_phase_developyaml0}:
- duration: 6.0
- name: Development
- product_uom: product.uom_day
- project_id: project_project_developyamlproject0
- previous_phase_ids:
- - project_phase_analysisflowforyaml0
-
--
- I update the Constrain Date Start adn Date End for phase Develop yaml
--
- !python {model : project.phase }: |
- pass
- import datetime
- #from dateutil.relativedelta import *
- #start = datetime.date.today() - relativedelta(days=5)
- #end = datetime.date.today() + relativedelta(days=10)
- #self.write(cr,uid, [(ref("project_phase_developyaml0"))], {'constraint_date_start': start, 'constraint_date_end':end})
--
- The third phase is 'Testing' and depend on the 'Develop' phase, with a duration of 6 days.
--
- !record {model: project.phase, id: project_phase_testyaml0}:
- duration: 6.0
- name: Testing
- product_uom: product.uom_day
- project_id: project_project_developyamlproject0
- previous_phase_ids:
- - project_phase_developyaml0
--
- Then I launch the scheduler to compute starting and ending phases on all phases of this project.
--
- !record {model: project.compute.phases, id: project_compute_phases_0}:
- project_id: project_project_developyamlproject0
- target_project: one
--
- !python {model: project.project}: |
- self.schedule_phases(cr, uid, [ref("project_project_developyamlproject0")])
--
- After scheduling, I check the starting date and ending date on the phases are correct.
--
- !python {model: project.phase}: |
- import datetime
- from dateutil.relativedelta import *
- minstart = (datetime.date.today() + relativedelta(days=4)).strftime('%Y-%m-%d')
- minend = (datetime.date.today() + relativedelta(days=11)).strftime('%Y-%m-%d')
-
- phase1=self.browse(cr, uid, ref('project_phase_analysisflowforyaml0'))
- assert phase1.date_start>=minstart, 'Error, the Analysis phase '+phase1.date_start+' should start after '+str(minstart)
- assert phase1.date_end>=minend, 'Error, the Analysis phase should end after '+str(minend)
-
- phase2=self.browse(cr, uid, ref('project_phase_developyaml0'))
- assert phase2.date_start>=phase1.date_end, 'Error, the phase Development should start after the end of the Analysis phase'
-
- phase3=self.browse(cr, uid, ref('project_phase_testyaml0'))
- assert phase3.date_start>=phase2.date_end, 'Error, the phase Testing should start after the end of the Development phase'
- assert phase3.date_start<phase3.date_end, 'Error, the phase Testing should start before ending'
-
=== added file 'project_long_term/test/phase_process.yml'
--- project_long_term/test/phase_process.yml 1970-01-01 00:00:00 +0000
+++ project_long_term/test/phase_process.yml 2011-12-09 08:59:28 +0000
@@ -0,0 +1,79 @@
+-
+ In order to test process of Phases,
+-
+ I create a record to schedule the phase of project.
+-
+ !record {model: project.compute.phases, id: project_compute_phases01}:
+ target_project: 'one'
+ project_id: project.project_integrate_openerp
+-
+ I schedule the phases.
+-
+ !python {model: project.compute.phases}: |
+ self.check_selection(cr, uid, [ref("project_compute_phases01")])
+-
+ I check the starting date and ending date on the phases after scheduling.
+-
+ !python {model: project.project}: |
+ project = self.browse(cr, uid, ref("project.project_integrate_openerp"), context=context)
+ def _convert(date):
+ import time
+ return time.strptime(date, '%Y-%m-%d %H:%M:%S')
+ def _check(phase, _convert, _check): #TOFIX: why need to pass function ?
+ for next_phase in phase.next_phase_ids:
+ assert _convert(next_phase.date_start) >= _convert(phase.date_end), "Phase does not start in proper date."
+ _check(next_phase, _convert, _check)
+ return True
+
+ for phase in project.phase_ids:
+
+ assert phase.date_start, "Start date should be computed."
+ assert phase.date_end, "End date should be computed."
+ if not phase.previous_phase_ids and phase.constraint_date_start:
+ assert _convert(phase.date_start) >= _convert(phase.constraint_date_start), "Phase does not start in proper date."
+ _check(phase, _convert, _check)
+-
+ I open phase.
+-
+ !python {model: project.phase}: |
+ self.set_open(cr, uid, [ref("project_phase_1")])
+-
+ I check state of phase after opened.
+-
+ !assert {model: project.phase, id: project_phase_1, severity: error, string: Phase should be in open state}:
+ - state == "open"
+-
+ I put phase in pending state.
+-
+ !python {model: project.phase}: |
+ self.set_pending(cr, uid, [ref("project_phase_1")])
+-
+ I check state of phase after put in pending.
+-
+ !assert {model: project.phase, id: project_phase_1, severity: error, string: Phase should be in pending state}:
+ - state == "pending"
+-
+ I make Phase in cancel state.
+-
+ !python {model: project.phase}: |
+ self.set_cancel(cr, uid, [ref("project_phase_1")])
+-
+ I check state of phase after cancelled.
+-
+ !assert {model: project.phase, id: project_phase_1, severity: error, string: Phase should be in cancel state}:
+ - state == "cancelled"
+-
+ I put again in draft phase.
+-
+ !python {model: project.phase}: |
+ self.set_draft(cr, uid, [ref("project_phase_1")])
+-
+ I close phase.
+-
+ !python {model: project.phase}: |
+ self.set_done(cr, uid, [ref("project_phase_1")])
+-
+ I check state of phase after closed.
+-
+ !assert {model: project.phase, id: project_phase_1, severity: error, string: Phase should be in done state}:
+ - state == "done"
=== removed file 'project_long_term/test/project_schedule_consecutive_day.yml'
--- project_long_term/test/project_schedule_consecutive_day.yml 2011-10-27 21:11:24 +0000
+++ project_long_term/test/project_schedule_consecutive_day.yml 1970-01-01 00:00:00 +0000
@@ -1,127 +0,0 @@
--
- Create a project 'Develop yaml Project Module'.
--
- !record {model: project.project, id: project_project_developyamlproject_2}:
- name: "Develop Yaml Project Module"
- date_start: !eval time.strftime('%Y-%m-%d')
- members:
- - base.user_admin
-
--
- I have set Working Time from Monday to Friday from 9am to 17pm.
--
- !record {model: resource.calendar, id: resource_calendar_hoursweekstest_P2}:
- name: "from Monday to Friday, from 9am to 17pm"
-
--
- I have set Day1 Working Time for Monday to Friday from 9am to 17pm working hour
--
- !record {model: resource.calendar.attendance, id: resource_calendar_hoursweekstest_P2day1}:
- name: "Day1"
- hour_from : 09.00
- hour_to : 17.00
- dayofweek : "0"
- calendar_id : resource_calendar_hoursweekstest_P2
-
--
- I have set Day2 Working Time for Monday to Friday from 9am to 17pm working hour
--
- !record {model: resource.calendar.attendance, id: rresource_calendar_hoursweekstest_P2day2}:
- name: "Day2"
- hour_from : 09.00
- hour_to : 17.00
- dayofweek : "1"
- calendar_id : resource_calendar_hoursweekstest_P2
-
--
- I have set Day3 Working Time for Monday to Friday from 9am to 17pm working hour
--
- !record {model: resource.calendar.attendance, id: resource_calendar_hoursweekstest_P2day3}:
- name: "Day3"
- hour_from : 09.00
- hour_to : 17.00
- dayofweek : "2"
- calendar_id : resource_calendar_hoursweekstest_P2
-
--
- I have set Day4 Working Time for Monday to Friday from 9am to 17pm working hour
--
- !record {model: resource.calendar.attendance, id: resource_calendar_hoursweekstest_P2day4}:
- name: "Day4"
- hour_from: 09.00
- hour_to: 17.00
- dayofweek: "3"
- calendar_id: resource_calendar_hoursweekstest_P2
-
--
- I have set Day5 Working Time for Monday to Friday from 9am to 17pm working hour
--
- !record {model: resource.calendar.attendance, id: resource_calendar_hoursweekstest_P2day5}:
- name: "Day5"
- hour_from: 09.00
- hour_to: 17.00
- dayofweek: "4"
- calendar_id: resource_calendar_hoursweekstest_P2
-
--
- Now Set working period to Project 'Develop yaml Project Module'
--
- !python {model: project.project}: |
- self.write(cr, uid, [ref("project_project_developyamlproject_2")], {'resource_calendar_id': ref("resource_calendar_hoursweekstest_P2")})
-
--
- Create 3 a project phase.
- First 'Analysis Flow for Yaml'Project Phase
--
- !record {model: project.phase, id: project_project_developyamlproject_2_Phase1}:
- date_start: !eval time.strftime('%Y-%m-%d')
- duration: 5.0
- name: "Analysis Flow for Yaml"
- product_uom: product.uom_day
- project_id: project_project_developyamlproject_2
- state: draft
-
--
- Create project phase 'Develop yaml'
--
- !record {model: project.phase, id: project_project_developyamlproject_2_Phase2}:
- duration: 5.0
- name: Develop Yaml
- product_uom: product.uom_day
- project_id: project_project_developyamlproject_2
- previous_phase_ids:
- - project_project_developyamlproject_2_Phase1
-
--
- Create project phase 'Test Yaml'
--
- !record {model: project.phase, id: project_project_developyamlproject_2_Phase3}:
- duration: 5.0
- name: Testing Yaml
- product_uom: product.uom_day
- project_id: project_project_developyamlproject_2
- previous_phase_ids:
- - project_project_developyamlproject_2_Phase2
-
--
- Compute Schedule of phases For One project
--
- !record {model: project.compute.phases, id: project_compute_phases_0}:
- project_id: project_project_developyamlproject_2
- target_project: one
--
- Schedule project phases using Compute Phase Scheduling
--
- !python {model: project.project}: |
- self.schedule_phases(cr, uid, [ref("project_project_developyamlproject_2")])
-
--
- After scheduling, Check that phases scheduled, check that either of phase's start_date, end_date not null.
--
- !python {model: project.project}: |
- proj=self.browse(cr, uid, [ref("project_project_developyamlproject_2")])[0]
- for phase in proj.phase_ids:
- if (not phase.date_start) or (not phase.date_end):
- raise AssertionError("Phases not scheduled")
-
-
=== removed file 'project_long_term/test/project_schedule_without_wroking_hour.yml'
--- project_long_term/test/project_schedule_without_wroking_hour.yml 2011-10-27 21:11:24 +0000
+++ project_long_term/test/project_schedule_without_wroking_hour.yml 1970-01-01 00:00:00 +0000
@@ -1,76 +0,0 @@
--
- Create a project 'Develop yaml Implementation Module'.
--
- !record {model: project.project, id: project_project_developyamlproject_2}:
- name: "Develop Yaml Project Module"
- date_start: !eval time.strftime('%Y-%m-%d')
-
--
- Create 4 Project phase.
- First Project Phase 'Analysis Flow for Yaml'
--
- !record {model: project.phase, id: project_project_developyamlproject_2_phase_1}:
- date_start: !eval time.strftime('%Y-%m-%d')
- duration: 6.0
- product_uom: product.uom_day
- name: "Analysis Flow for Yaml"
- project_id: project_project_developyamlproject_2
- state: draft
-
--
- Create project phase 'Develop yaml'
--
- !record {model: project.phase, id: project_project_developyamlproject_2_phase_2}:
- duration: 6.0
- name: "Develop yaml"
- product_uom: product.uom_day
- project_id: project_project_developyamlproject_2
- previous_phase_ids:
- - project_project_developyamlproject_2_phase_1
- state: draft
--
- Create project phase 'Test Yaml'
--
- !record {model: project.phase, id: project_project_developyamlproject_2_phase_3}:
- duration: 6.0
- name: Testing Yaml
- product_uom: product.uom_day
- project_id: project_project_developyamlproject_2
- previous_phase_ids:
- - project_project_developyamlproject_2_phase_2
- state: draft
-
--
- Create project phase 'Implement Yaml'
--
- !record {model: project.phase, id: project_project_developyamlproject_2_phase_4}:
- duration: 6.0
- name: Testing Yaml
- product_uom: product.uom_day
- project_id: project_project_developyamlproject_2
- previous_phase_ids:
- - project_project_developyamlproject_2_phase_3
- state: draft
--
- Compute Schedule of phases For One project
--
- !record {model: project.compute.phases, id: project_compute_phases_0}:
- project_id: project_project_developyamlproject_2
- target_project: one
-
--
- Schedule project phases using Compute Phase Scheduling
--
- !python {model: project.project}: |
- self.schedule_phases(cr, uid, [ref("project_project_developyamlproject_2")])
-
--
- After scheduling, Check that phases scheduled, check that either of phase's start_date, end_date not null.
--
- !python {model: project.project}: |
- proj=self.browse(cr, uid, [ref("project_project_developyamlproject_2")])[0]
- for phase in proj.phase_ids:
- if (not phase.date_start) or (not phase.date_end):
- raise AssertionError("Phases not scheduled")
-
-
=== removed file 'project_long_term/test/schedule_project_phases.yml'
--- project_long_term/test/schedule_project_phases.yml 2011-10-27 21:11:24 +0000
+++ project_long_term/test/schedule_project_phases.yml 1970-01-01 00:00:00 +0000
@@ -1,180 +0,0 @@
--
- Create a project 'World Bank's Project'
--
- !record {model: project.project, id: project_project_worldbanksproject0}:
- name: "World Bank's Project"
- priority: 4
- members:
- - project.res_users_analyst
- - project.res_users_project_manager
- - project.res_users_technical_leader
- - project.res_users_developer
- - project.res_users_designer
- - project.res_users_tester
-
--
- Create a project phase 'Defining Client's Basic Idea of Project'
--
- !record {model: project.phase, id: project_phase_definingclientsbasicideaofproject0}:
- date_start: !eval time.strftime('%Y-%m-%d')
- duration: 15.0
- name: "Defining Client's Basic Idea of Project"
- product_uom: product.uom_day
- project_id: project_project_worldbanksproject0
-
--
- Create project phase 'Establishing Project Feasibility'
--
- !record {model: project.phase, id: project_phase_establishingprojectfeasibility0}:
- date_start: !eval time.strftime('%Y-%m-%d')
- duration: 30.0
- name: Establishing Project Feasibility
- product_uom: product.uom_day
- project_id: project_project_worldbanksproject0
--
- Create the phase task 'Develop GUI for Server Configuration'
--
- !record {model: project.task, id: project_task_t0}:
- name: Develop GUI for Server Configuration
- planned_hours: 20.0
- state: draft
- phase_id: project_phase_definingclientsbasicideaofproject0
- project_id: project_project_worldbanksproject0
-
--
- Create the phase task 'Develop GUI for Modules Configuration'
--
- !record {model: project.task, id: project_task_t1}:
- name: Develop GUI for Modules Configuration
- planned_hours: 25.0
- remaining_hours: 25.0
- state: draft
- phase_id: project_phase_definingclientsbasicideaofproject0
- project_id: project_project_worldbanksproject0
-
--
- Create project phase 'Preparation of Engineering Designs'
--
- !record {model: project.phase, id: project_phase_preparationofengineeringdesigns0}:
- date_start: !eval time.strftime('%Y-%m-%d')
- duration: 100.0
- name: Preparation of Engineering Designs
- product_uom: product.uom_hour
- project_id: project_project_worldbanksproject0
-
--
- Create the phase task 'Develop GUI for Client Configuration'
--
- !record {model: project.task, id: project_task_t2}:
- name: Develop GUI for Server Configuration
- planned_hours: 20.0
- remaining_hours: 20.0
- state: draft
- phase_id: project_phase_preparationofengineeringdesigns0
- project_id: project_project_worldbanksproject0
-
--
- Create the phase task 'Develop GUI for Client Module Configuration'
--
- !record {model: project.task, id: project_task_t3}:
- name: Develop GUI for Modules Configuration
- planned_hours: 25.0
- remaining_hours: 25.0
- state: draft
- phase_id: project_phase_preparationofengineeringdesigns0
- project_id: project_project_worldbanksproject0
-
-
--
- Create project phase 'Procurement of Works and Goods'
--
- !record {model: project.phase, id: project_phase_procurementofworksandgoods0}:
- date_start: !eval time.strftime('%Y-%m-%d')
- duration: 24.0
- name: Procurement of Works and Goods
- product_uom: product.uom_hour
- project_id: project_project_worldbanksproject0
-
--
- Create project phase 'Project Construction'
--
- !record {model: project.phase, id: project_phase_projectconstruction0}:
- date_start: !eval time.strftime('%Y-%m-%d')
- duration: 4320.0
- name: Project Construction
- product_uom: product.uom_hour
- project_id: project_project_worldbanksproject0
-
-
--
- Create project phase 'Project Completion'
--
- !record {model: project.phase, id: project_phase_projectcompletion0}:
- date_start: !eval time.strftime('%Y-%m-%d')
- duration: 240.0
- name: Project Completion
- product_uom: product.uom_hour
- project_id: project_project_worldbanksproject0
-
--
- Set previous phase for phase 'Establishing Project Feasibility'
--
- !record {model: project.phase, id: project_phase_establishingprojectfeasibility0}:
- previous_phase_ids:
- - project_phase_definingclientsbasicideaofproject0
-
-
--
- Set previous phase for phase 'Preparation of Engineering Designs'
--
- !record {model: project.phase, id: project_phase_preparationofengineeringdesigns0}:
- previous_phase_ids:
- - project_phase_establishingprojectfeasibility0
-
--
- Set previous phase for phase 'Procurement of Works and Goods'
--
- !record {model: project.phase, id: project_phase_procurementofworksandgoods0}:
- previous_phase_ids:
- - project_phase_preparationofengineeringdesigns0
-
--
- Set previous phase for phase 'Project Construction'
--
- !record {model: project.phase, id: project_phase_projectconstruction0}:
- previous_phase_ids:
- - project_phase_procurementofworksandgoods0
-
-
--
- Set previous phase for phase 'Project Completion'
--
- !record {model: project.phase, id: project_phase_projectcompletion0}:
- previous_phase_ids:
- - project_phase_projectconstruction0
-
-
--
- Get the project to schedule phases
--
- !record {model: project.compute.phases, id: project_compute_phases_0}:
- project_id: project_project_worldbanksproject0
- target_project: one
-
-
--
- Schedule project phases
--
- !python {model: project.project}: |
- self.schedule_phases(cr, uid, ref("project_project_worldbanksproject0"))
-
--
- Check if phases scheduled, check that either of phase's start_date, end_date and user_id is not null
--
- !python {model: project.project}: |
- prj=self.browse(cr, uid, [ref("project_project_worldbanksproject0")])[0]
- for phase in prj.phase_ids:
- if (not phase.date_start) or (not phase.date_end):
- raise AssertionError("Tasks not scheduled")
-
-
=== removed file 'project_long_term/test/schedule_project_tasks.yml'
--- project_long_term/test/schedule_project_tasks.yml 2011-10-27 21:11:24 +0000
+++ project_long_term/test/schedule_project_tasks.yml 1970-01-01 00:00:00 +0000
@@ -1,86 +0,0 @@
--
- Create project 'Develop a thunderbird-openerp synchronization plugin'
--
- !record {model: project.project, id: project_project_project1}:
- name: Develop a thunderbird-openerp synchronization plugin
- members:
- - project.res_users_project_manager
- - project.res_users_technical_leader
- - project.res_users_developer
- - project.res_users_designer
- - project.res_users_tester
- - project.res_users_analyst
- - project.res_users_finacial_manager
-
--
- Create phase 'Develop GUI' in thunderbird
--
- !record {model: project.phase, id: project_phase_phase1}:
- date_start: !eval time.strftime('%Y-%m-%d %H:%M:%S')
- duration: 200.0
- name: Develop GUI in thunderbird
- product_uom: product.uom_day
- project_id: project_project_project1
- state: draft
--
- Create the phase task 'Develop GUI for Server Configuration'
--
- !record {model: project.task, id: project_task_t10}:
- name: Develop GUI for Server Configuration
- planned_hours: 20.0
- remaining_hours: 20.0
- state: draft
- phase_id: project_phase_phase1
- project_id: project_project_project1
- user_id: project.res_users_developer
-
--
- Create the phase task 'Develop GUI for Modules Configuration'
--
- !record {model: project.task, id: project_task_t11}:
- name: Develop GUI for Modules Configuration
- planned_hours: 25.0
- remaining_hours: 25.0
- state: draft
- phase_id: project_phase_phase1
- project_id: project_project_project1
- user_id: project.res_users_developer
--
- Create the phase task 'Develop GUI for OpenERP Synchronisation'
--
- !record {model: project.task, id: project_task_t12}:
- name: Develop GUI for OpenERP Synchronisation
- planned_hours: 30.0
- remaining_hours: 30.0
- state: draft
- phase_id: project_phase_phase1
- project_id: project_project_project1
- user_id: project.res_users_developer
--
- Create the phase task 'Design required GUI/Menus'
--
- !record {model: project.task, id: project_task_13}:
- name: Design required GUI/Menus
- planned_hours: 25.0
- remaining_hours: 25.0
- state: draft
- phase_id: project_phase_phase1
- project_id: project_project_project1
- user_id: project.res_users_designer
-
--
- Schedule tasks
--
- !python {model: project.project}: |
- self.schedule_tasks(cr, uid, ref("project_project_project1"))
-
--
- Check if tasks scheduled, check that either of task's start_date, end_date and user_id is not null
--
- !python {model: project.project}: |
- prj = self.browse(cr, uid, [ref("project_project_project1")])[0]
- for task in prj.tasks:
- if task.state in ('done','cancelled'):
- continue
- if (not task.user_id) or (not task.date_start) or (not task.date_end):
- raise AssertionError("Project tasks not scheduled!")
=== removed file 'project_long_term/test/test_schedule_phases_case1.yml'
--- project_long_term/test/test_schedule_phases_case1.yml 2011-11-09 18:12:56 +0000
+++ project_long_term/test/test_schedule_phases_case1.yml 1970-01-01 00:00:00 +0000
@@ -1,76 +0,0 @@
--
- In order to test scheduling of project phases, I create two different phases and
- test it with two different dates for scheduling.
--
- I create a project Development and Testing.
--
- !record {model: project.project, id: project_project_project_case1}:
- name: "Development and Testing"
- date_start: !eval time.strftime('%Y-%m-%d')
- balance: 0.0
- credit: 0.0
- currency_id: base.EUR
- debit: 0.0
- effective_hours: 0.0
- members:
- - base.user_admin
-
- planned_hours: 0.0
- progress_rate: 0.0
- quantity: 0.0
- quantity_max: 0.0
- state: open
- type_ids:
- - project.project_tt_specification
- - project.project_tt_development
- - project.project_tt_testing
- - project.project_tt_merge
--
- I create first phase of the project.
--
- !record {model: project.phase, id: project_phase_firstphase0_case1}:
- duration: 2.0
- name: First Phase
- product_uom: product.uom_day
- project_id: project_project_project_case1
- state: draft
--
- I create second phase of the project.
--
- !record {model: project.phase, id: project_phase_secondphase0_case2}:
- duration: 3.0
- name: Second Phase
- previous_phase_ids:
- - project_phase_firstphase0_case1
- product_uom: product.uom_day
- project_id: project_project_project_case1
- state: draft
--
- Now I create a record to compute the phase of project.
--
- !record {model: project.compute.phases, id: project_compute_phases0}:
- target_project: 'one'
- project_id: project_project_project_case1
--
- I schedule the phases.
--
- !python {model: project.compute.phases}: |
- self.check_selection(cr, uid, [ref("project_compute_phases0")])
--
- I check the starting and ending dates of both phases.
--
- !python {model: project.phase}: |
- import datetime
- from dateutil.relativedelta import *
- start = (datetime.date.today()).strftime('%Y-%m-%d')
- end = (datetime.date.today() + relativedelta(days=1)).strftime('%Y-%m-%d 17:00:00')
- first_phase = self.browse(cr, uid, ref('project_phase_firstphase0_case1'))
- assert (first_phase.date_start[:10] >= start),'Start dates are wrong: %s < %s !' % (first_phase.date_start[:10], start)
- assert (first_phase.date_end >= end),'End dates are wrong: %s <%s!' % (first_phase.date_end, end)
-
- second_phase = self.browse(cr, uid, ref('project_phase_secondphase0_case2'))
- start = first_phase.date_end
- end = (datetime.date.today() + relativedelta(days=4)).strftime('%Y-%m-%d')
- assert second_phase.date_start >= start, 'Dates are wrong on second phase: %s < %s!' % (second_phase.date_start, start)
- assert second_phase.date_end >= end, 'Dates are wrong on second phase %s < %s!' % (second_phase.date_end, end)
-
=== removed file 'project_long_term/test/test_schedule_phases_case2.yml'
--- project_long_term/test/test_schedule_phases_case2.yml 2011-10-27 21:11:24 +0000
+++ project_long_term/test/test_schedule_phases_case2.yml 1970-01-01 00:00:00 +0000
@@ -1,193 +0,0 @@
--
- In order to test scheduling of project phases, I create two different
- working periods and resources. And schedule the phases.
--
- I create first working period 'Working Time A'.
--
- !record {model: resource.calendar, id: resource_calendar_workingtimea0}:
- attendance_ids:
- - dayofweek: '0'
- hour_from: 10.0
- hour_to: 16.0
- name: Monday
- - dayofweek: '1'
- hour_from: 10.0
- hour_to: 16.0
- name: Tuesday
- - dayofweek: '2'
- hour_from: 10.0
- hour_to: 16.0
- name: Wednesday
- - dayofweek: '3'
- hour_from: 10.0
- hour_to: 16.0
- name: Thursday
- name: Working Time A
-
--
- Creating a resource.calendar.attendance record
--
- !record {model: resource.calendar.attendance, id: resource_calendar_attendance_monday0}:
- calendar_id: resource_calendar_workingtimea0
- dayofweek: '0'
- hour_from: 10.0
- hour_to: 16.0
- name: Monday
--
- Creating a resource.calendar.attendance record
--
- !record {model: resource.calendar.attendance, id: resource_calendar_attendance_tuesday0}:
- calendar_id: resource_calendar_workingtimea0
- dayofweek: '1'
- hour_from: 10.0
- hour_to: 16.0
- name: Tuesday
--
- Creating a resource.calendar.attendance record
--
- !record {model: resource.calendar.attendance, id: resource_calendar_attendance_wednesday0}:
- calendar_id: resource_calendar_workingtimea0
- dayofweek: '2'
- hour_from: 10.0
- hour_to: 16.0
- name: Wednesday
--
- Creating a resource.calendar.attendance record
--
- !record {model: resource.calendar.attendance, id: resource_calendar_attendance_thursday0}:
- calendar_id: resource_calendar_workingtimea0
- dayofweek: '3'
- hour_from: 10.0
- hour_to: 16.0
- name: Thursday
--
- I create second working period 'Working Time B'.
--
- !record {model: resource.calendar, id: resource_calendar_workingtimeb0}:
- attendance_ids:
- - dayofweek: '4'
- hour_from: 9.0
- hour_to: 18.0
- name: Friday
- name: Working Time B
--
- Creating a resource.calendar.attendance record
--
- !record {model: resource.calendar.attendance, id: resource_calendar_attendance_friday0}:
- calendar_id: resource_calendar_workingtimeb0
- dayofweek: '4'
- hour_from: 9.0
- hour_to: 18.0
- name: Friday
--
- I create first resource say 'Resource X' without assigning working period.
--
- !record {model: resource.resource, id: resource_resource_resourcex0}:
- name: Resource X
- resource_type: user
- time_efficiency: 1.0
- user_id: base.user_admin
--
- I create first resource say 'Resource Y' with working period 'Working Time B'.
--
- !record {model: resource.resource, id: resource_resource_resourcey0}:
- calendar_id: resource_calendar_workingtimeb0
- name: Resource Y
- resource_type: user
- time_efficiency: 1.0
- user_id: base.user_admin
--
- I create a project 'Development and Testing' and assign working period 'Working Time A'.
--
- !record {model: project.project, id: project_project_project0}:
- balance: 0.0
- credit: 0.0
- currency_id: base.EUR
- debit: 0.0
- effective_hours: 0.0
- members:
- - base.user_admin
- name: Development and Testing
- planned_hours: 20.0
- progress_rate: 0.0
- quantity: 0.0
- quantity_max: 0.0
- resource_calendar_id: resource_calendar_workingtimea0
- state: open
- tasks:
- - delay_hours: 0.0
- effective_hours: 0.0
- name: Task 1
- planned_hours: 10.0
- remaining_hours: 10.0
- state: draft
- total_hours: 10.0
- - delay_hours: 0.0
- effective_hours: 0.0
- name: Task 2
- planned_hours: 10.0
- remaining_hours: 10.0
- state: draft
- total_hours: 10.0
- total_hours: 10.0
- members:
- - project.res_users_analyst
- - project.res_users_project_manager
- - project.res_users_technical_leader
- - project.res_users_developer
- - project.res_users_designer
- - project.res_users_tester
- type_ids:
- - project.project_tt_specification
- - project.project_tt_development
- - project.project_tt_testing
- - project.project_tt_merge
-
--
- I create a phase 'Initial Phase' for project 'Development and Testing'.
--
- !record {model: project.phase, id: project_phase_phase0}:
- date_start: '2011-01-03 08:00:00'
- duration: 0.0
- name: Initial Phase
- product_uom: product.uom_day
- project_id: project_project_project0
- state: draft
--
- I create first task 'Developing module' and assign 10h.
--
- !record {model: project.task, id: project_task_task0}:
- delay_hours: 0.0
- effective_hours: 0.0
- name: Developing module
- planned_hours: 10.0
- project_id: project_project_project0
- remaining_hours: 10.0
- state: draft
- total_hours: 10.0
- phase_id: project_phase_phase0
--
- I create first task 'Testing module' and assign 10h.
--
- !record {model: project.task, id: project_task_task1}:
- delay_hours: 0.0
- effective_hours: 0.0
- name: Testing module
- planned_hours: 10.0
- project_id: project_project_project0
- remaining_hours: 10.0
- state: draft
- total_hours: 10.0
- phase_id: project_phase_phase0
--
- Now I create a record to compute the phase of project.
--
- !record {model: project.compute.phases, id: project_compute_phases0}:
- target_project: 'one'
- project_id: project_project_project0
--
- I schedule the phases.
--
- !python {model: project.compute.phases}: |
- self.check_selection(cr, uid, [ref("project_compute_phases0")])
-
=== removed file 'project_long_term/test/test_schedule_tasks_case1.yml'
--- project_long_term/test/test_schedule_tasks_case1.yml 2011-10-27 21:11:24 +0000
+++ project_long_term/test/test_schedule_tasks_case1.yml 1970-01-01 00:00:00 +0000
@@ -1,246 +0,0 @@
--
- In order to test scheduling of tasks, I create four tasks with different sequences and schedule them.
--
- I create first user.
--
- !record {model: res.users, id: res_users_user0}:
- company_id: base.main_company
- context_lang: en_US
- groups_id:
- - base.group_partner_manager
- - base.group_user
- login: user1
- name: User 1
- password: user1
--
- I create second user.
--
- !record {model: res.users, id: res_users_user1}:
- company_id: base.main_company
- context_lang: en_US
- groups_id:
- - base.group_partner_manager
- - base.group_user
- login: user2
- name: User 2
- password: user2
--
- I create a Project.
--
- !record {model: project.project, id: project_project_projecta0}:
- balance: 0.0
- credit: 0.0
- currency_id: base.EUR
- debit: 0.0
- effective_hours: 0.0
- name: Project A
- members:
- - res_users_user0
- - res_users_user1
- phase_ids:
- - date_start: '2011-01-06 08:00:00'
- duration: 2.0
- name: Phase A
- product_uom: product.uom_day
- state: draft
- task_ids:
- - delay_hours: 0.0
- effective_hours: 0.0
- name: Task D
- planned_hours: 5.0
- remaining_hours: 5.0
- state: draft
- total_hours: 5.0
- - delay_hours: 0.0
- effective_hours: 0.0
- name: Task C
- planned_hours: 5.0
- remaining_hours: 5.0
- sequence: 11
- state: draft
- total_hours: 5.0
- - delay_hours: 0.0
- effective_hours: 0.0
- name: Task B
- planned_hours: 5.0
- remaining_hours: 5.0
- sequence: 13
- state: draft
- total_hours: 5.0
- - delay_hours: 0.0
- effective_hours: 0.0
- name: Task A
- planned_hours: 5.0
- remaining_hours: 5.0
- sequence: 14
- state: draft
- total_hours: 5.0
- planned_hours: 20.0
- progress_rate: 0.0
- quantity: 0.0
- quantity_max: 0.0
- state: open
- tasks:
- - delay_hours: 0.0
- effective_hours: 0.0
- name: Task D
- planned_hours: 5.0
- remaining_hours: 5.0
- state: draft
- total_hours: 5.0
- - delay_hours: 0.0
- effective_hours: 0.0
- name: Task C
- planned_hours: 5.0
- remaining_hours: 5.0
- sequence: 11
- state: draft
- total_hours: 5.0
- - delay_hours: 0.0
- effective_hours: 0.0
- name: Task B
- planned_hours: 5.0
- remaining_hours: 5.0
- sequence: 13
- state: draft
- total_hours: 5.0
- - delay_hours: 0.0
- effective_hours: 0.0
- name: Task A
- planned_hours: 5.0
- remaining_hours: 5.0
- sequence: 14
- state: draft
- total_hours: 5.0
- total_hours: 15.0
--
- I create first task with highest sequence.
--
- !record {model: project.task, id: project_task_taska0}:
- delay_hours: 0.0
- effective_hours: 0.0
- name: Task A
- planned_hours: 5.0
- project_id: project_project_projecta0
- remaining_hours: 5.0
- sequence: 14
- state: draft
- total_hours: 5.0
--
- I create second task.
--
- !record {model: project.task, id: project_task_taskb0}:
- delay_hours: 0.0
- effective_hours: 0.0
- name: Task B
- planned_hours: 5.0
- project_id: project_project_projecta0
- remaining_hours: 5.0
- sequence: 13
- state: draft
- total_hours: 5.0
--
- I create third task.
--
- !record {model: project.task, id: project_task_taskc0}:
- delay_hours: 0.0
- effective_hours: 0.0
- name: Task C
- planned_hours: 5.0
- project_id: project_project_projecta0
- remaining_hours: 5.0
- sequence: 11
- state: draft
- total_hours: 5.0
--
- I create fourth task with lowest sequence.
--
- !record {model: project.task, id: project_task_taskd0}:
- delay_hours: 0.0
- effective_hours: 0.0
- name: Task D
- planned_hours: 5.0
- project_id: project_project_projecta0
- remaining_hours: 5.0
- state: draft
- total_hours: 5.0
--
- Now I create a resource for first user.
--
- !record {model: resource.resource, id: resource_resource_user0}:
- name: User 1
- resource_type: user
- time_efficiency: 1.0
- user_id: res_users_user0
--
- I create a resource for second user.
--
- !record {model: resource.resource, id: resource_resource_user1}:
- name: User 2
- resource_type: user
- time_efficiency: 1.0
- user_id: res_users_user1
--
- Now I create one phase for the project.
--
- !record {model: project.phase, id: project_phase_phasea0}:
- date_start: '2011-01-06 08:00:00'
- duration: 2.0
- name: Phase A
- product_uom: product.uom_day
- project_id: project_project_projecta0
- state: draft
- task_ids:
- - delay_hours: 0.0
- effective_hours: 0.0
- name: Task D
- planned_hours: 5.0
- project_id: project_project_projecta0
- remaining_hours: 5.0
- state: draft
- total_hours: 5.0
- - delay_hours: 0.0
- effective_hours: 0.0
- name: Task C
- planned_hours: 5.0
- project_id: project_project_projecta0
- remaining_hours: 5.0
- sequence: 11
- state: draft
- total_hours: 5.0
- - delay_hours: 0.0
- effective_hours: 0.0
- name: Task B
- planned_hours: 5.0
- project_id: project_project_projecta0
- remaining_hours: 5.0
- sequence: 13
- state: draft
- total_hours: 5.0
- - delay_hours: 0.0
- effective_hours: 0.0
- name: Task A
- planned_hours: 5.0
- project_id: project_project_projecta0
- remaining_hours: 5.0
- sequence: 14
- state: draft
- total_hours: 5.0
--
- Now I create a record to schedule the tasks of project.
--
- !record {model: project.compute.tasks, id: project_compute_tasks0}:
- project_id: project_project_projecta0
--
- I schedule the tasks.
--
- !python {model: project.compute.tasks}: |
- self.compute_date(cr, uid, [ref("project_compute_tasks0")])
--
- I check that whether the tasks now allocated to respected resources or not.
--
- !python {model: project.task}: |
- task_ids = self.search(cr, uid, [('project_id','=',ref('project_project_projecta0'))])
- for task in self.browse(cr, uid, task_ids):
- if (not task.date_start) or (not task.date_end):
- raise AssertionError("Tasks are not scheduled.")
_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help : https://help.launchpad.net/ListHelp