← Back to team overview

openerp-dev-web team mailing list archive

[Merge] lp:~openerp-dev/openobject-addons/trunk-dev-addons1-extra into lp:~openerp-dev/openobject-addons/trunk-dev-addons1

 

jam-openerp has proposed merging lp:~openerp-dev/openobject-addons/trunk-dev-addons1-extra into lp:~openerp-dev/openobject-addons/trunk-dev-addons1.

Requested reviews:
  OpenERP Core Team (openerp)
Related bugs:
  #701070 cannot schedule only one project
  https://bugs.launchpad.net/bugs/701070

For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-dev-addons1-extra/+merge/45815

Hello, 
   Issue Fixed:
    + Builder buildbot-trunk-dev-addons1 build #595 test project_long_term.lint
    + Builder buildbot-trunk-dev-addons1 build #595 test project_long_term.test - YAML Test
    + Bug lp:701013 
    + YAML Fix date removed.
   Kindly review this.
Thank You.
-- 
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-dev-addons1-extra/+merge/45815
Your team OpenERP R&D Team is subscribed to branch lp:~openerp-dev/openobject-addons/trunk-dev-addons1-extra.
=== modified file 'project_long_term/project_long_term.py'
--- project_long_term/project_long_term.py	2011-01-11 04:57:28 +0000
+++ project_long_term/project_long_term.py	2011-01-11 07:14:05 +0000
@@ -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 @@
         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 @@
             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 @@
         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 @@
             # 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 @@
     #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 @@
         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 @@
     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

=== modified file 'project_long_term/test/schedule_phase_tasks.yml'
--- project_long_term/test/schedule_phase_tasks.yml	2011-01-06 14:48:24 +0000
+++ project_long_term/test/schedule_phase_tasks.yml	2011-01-11 07:14:05 +0000
@@ -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))

=== modified file 'project_long_term/test/test_schedule_phases_case1.yml'
--- project_long_term/test/test_schedule_phases_case1.yml	2011-01-03 12:16:56 +0000
+++ project_long_term/test/test_schedule_phases_case1.yml	2011-01-11 07:14:05 +0000
@@ -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!'

=== modified file 'project_long_term/test/test_schedule_tasks_case1.yml'
--- project_long_term/test/test_schedule_tasks_case1.yml	2011-01-06 13:31:07 +0000
+++ project_long_term/test/test_schedule_tasks_case1.yml	2011-01-11 07:14:05 +0000
@@ -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.")


Follow ups