[MERGE] Merge project_long_term improverment
bzr revid: sbh@tinyerp.com-20110111071809-uvzyjvt05sqhtf3j
This commit is contained in:
@@ -19,15 +19,10 @@
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from datetime import datetime, timedelta
|
||||
from dateutil.relativedelta import relativedelta
|
||||
from datetime import datetime
|
||||
from tools.translate import _
|
||||
from osv import fields, osv
|
||||
from resource.faces import task as Task
|
||||
import operator
|
||||
from new import classobj
|
||||
import types
|
||||
import new
|
||||
|
||||
class project_phase(osv.osv):
|
||||
_name = "project.phase"
|
||||
@@ -219,9 +214,7 @@ class project_phase(osv.osv):
|
||||
if context is None:
|
||||
context = {}
|
||||
phase_ids = []
|
||||
resource_pool = self.pool.get('resource.resource')
|
||||
data_pool = self.pool.get('ir.model.data')
|
||||
resource_allocation_pool = self.pool.get('project.resource.allocation')
|
||||
uom_pool = self.pool.get('product.uom')
|
||||
task_pool = self.pool.get('project.task')
|
||||
data_model, day_uom_id = data_pool.get_object_reference(cr, uid, 'product', 'uom_day')
|
||||
@@ -304,9 +297,6 @@ class project_phase(osv.osv):
|
||||
ids = [ids]
|
||||
task_pool = self.pool.get('project.task')
|
||||
resource_pool = self.pool.get('resource.resource')
|
||||
data_pool = self.pool.get('ir.model.data')
|
||||
resource_allocation_pool = self.pool.get('project.resource.allocation')
|
||||
|
||||
for phase in self.browse(cr, uid, ids, context=context):
|
||||
project = phase.project_id
|
||||
calendar_id = project.resource_calendar_id and project.resource_calendar_id.id or False
|
||||
@@ -448,7 +438,6 @@ class project(osv.osv):
|
||||
resource_pool = self.pool.get('resource.resource')
|
||||
data_pool = self.pool.get('ir.model.data')
|
||||
resource_allocation_pool = self.pool.get('project.resource.allocation')
|
||||
uom_pool = self.pool.get('product.uom')
|
||||
data_model, day_uom_id = data_pool.get_object_reference(cr, uid, 'product', 'uom_day')
|
||||
|
||||
for project in self.browse(cr, uid, ids, context=context):
|
||||
@@ -517,8 +506,11 @@ def Project_%d():
|
||||
# Allocating Memory for the required Project and Pahses and Resources
|
||||
exec(func_str)
|
||||
Project = eval('Project_%d' % project.id)
|
||||
project = Task.BalancedProject(Project)
|
||||
|
||||
project = None
|
||||
try:
|
||||
project = Task.BalancedProject(Project)
|
||||
except :
|
||||
raise osv.except_osv(_('Error !'),_('Invalid resource allocation, Phase Scheduling is not possible.\nPlease check project member resource.'))
|
||||
for phase_id in phase_ids:
|
||||
act_phase = phase_pool.browse(cr, uid, phase_id, context=context)
|
||||
resources = act_phase.resource_ids
|
||||
@@ -558,7 +550,7 @@ def Project_%d():
|
||||
#TODO: DO Resource allocation and compute availability
|
||||
def compute_allocation(self, rc, uid, ids, start_date, end_date, context=None):
|
||||
if context == None:
|
||||
contex = {}
|
||||
context = {}
|
||||
allocation = {}
|
||||
return allocation
|
||||
|
||||
@@ -573,8 +565,6 @@ def Project_%d():
|
||||
task_pool = self.pool.get('project.task')
|
||||
resource_pool = self.pool.get('resource.resource')
|
||||
data_pool = self.pool.get('ir.model.data')
|
||||
resource_allocation_pool = self.pool.get('project.resource.allocation')
|
||||
uom_pool = self.pool.get('product.uom')
|
||||
data_model, day_uom_id = data_pool.get_object_reference(cr, uid, 'product', 'uom_day')
|
||||
|
||||
for project in self.browse(cr, uid, ids, context=context):
|
||||
@@ -684,9 +674,6 @@ class project_task(osv.osv):
|
||||
def generate_task(self, cr, uid, task_id, parent=False, flag=False, context=None):
|
||||
if context is None:
|
||||
context = {}
|
||||
phase_pool = self.pool.get('project.phase')
|
||||
resource_pool = self.pool.get('resource.resource')
|
||||
resource_allocation_pool = self.pool.get('project.resource.allocation')
|
||||
task = self.browse(cr, uid, task_id, context=context)
|
||||
duration = str(task.planned_hours )+ 'H'
|
||||
str_resource = False
|
||||
|
||||
@@ -25,6 +25,8 @@
|
||||
- resource_id: project_long_term.resource_analyst
|
||||
- resource_id: project_long_term.resource_developer
|
||||
- resource_id: project_long_term.resource_designer
|
||||
- resource_id: project_long_term.resource_tester
|
||||
- resource_id: project_long_term.resource_project_manager
|
||||
|
||||
-
|
||||
Create the phase task 'Develop GUI for Server Configuration'
|
||||
@@ -36,7 +38,7 @@
|
||||
state: draft
|
||||
phase_id: project_phase_phase0
|
||||
project_id: project_project_project0
|
||||
user_id: project.res_users_developer
|
||||
|
||||
|
||||
-
|
||||
Create the phase task 'Develop GUI for Modules Configuration'
|
||||
@@ -48,7 +50,7 @@
|
||||
state: draft
|
||||
phase_id: project_phase_phase0
|
||||
project_id: project_project_project0
|
||||
user_id: project.res_users_developer
|
||||
|
||||
-
|
||||
Create the phase task 'Develop GUI for OpenERP Synchronisation'
|
||||
-
|
||||
@@ -59,7 +61,7 @@
|
||||
state: draft
|
||||
phase_id: project_phase_phase0
|
||||
project_id: project_project_project0
|
||||
user_id: project.res_users_developer
|
||||
|
||||
-
|
||||
Create the phase task 'Design required GUI/Menus'
|
||||
-
|
||||
@@ -70,7 +72,6 @@
|
||||
state: draft
|
||||
phase_id: project_phase_phase0
|
||||
project_id: project_project_project0
|
||||
user_id: project.res_users_designer
|
||||
|
||||
-
|
||||
Schedule phase tasks
|
||||
@@ -84,6 +85,6 @@
|
||||
!python {model: project.phase}: |
|
||||
phase = self.browse(cr, uid, [ref("project_phase_phase0")])[0]
|
||||
for task in phase.task_ids:
|
||||
if (not task.user_id) or (not task.date_start) or (not task.date_end):
|
||||
if (not task.date_start) or (not task.date_end):
|
||||
raise AssertionError("Phase Tasks not scheduled: %d uid=%r start=%r end=%r" % \
|
||||
(task.id, task.user_id, task.date_start, task.date_end))
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
I create a project 'Development and Testing'.
|
||||
-
|
||||
!record {model: project.project, id: project_project_project0}:
|
||||
date_start: '2010-12-30'
|
||||
date_start: !eval time.strftime('%Y-%m-%d')
|
||||
balance: 0.0
|
||||
credit: 0.0
|
||||
currency_id: base.EUR
|
||||
@@ -59,7 +59,12 @@
|
||||
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=3)).strftime('%Y-%m-%d')
|
||||
first_phase = self.browse(cr, uid, ref('project_phase_firstphase0'))
|
||||
assert (first_phase.date_start == '2010-12-30' and first_phase.date_end == '2010-12-31'),'Dates are wrong!'
|
||||
assert (first_phase.date_start >= start and first_phase.date_end <= end),'Dates are wrong!'
|
||||
second_phase = self.browse(cr, uid, ref('project_phase_secondphase0'))
|
||||
assert (second_phase.date_start == '2011-01-01' and second_phase.date_end == '2011-01-03'),'Dates are wrong!'
|
||||
end = (datetime.date.today() + relativedelta(days=10)).strftime('%Y-%m-%d')
|
||||
assert (second_phase.date_start >= first_phase.date_end and second_phase.date_end <= end),'Dates are wrong!'
|
||||
|
||||
@@ -259,5 +259,5 @@
|
||||
!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.user_id) or (not task.date_start) or (not task.date_end):
|
||||
if (not task.date_start) or (not task.date_end):
|
||||
raise AssertionError("Tasks are not scheduled.")
|
||||
|
||||
Reference in New Issue
Block a user