From 71a3990a041696c4003b03a7e072cb50185b15ef Mon Sep 17 00:00:00 2001 From: "rpa (Open ERP)" Date: Mon, 27 Sep 2010 19:14:03 +0530 Subject: [FIX]: Fixed pylint warnings bzr revid: rpa@tinyerp.com-20100927134403-d0xv04c0kkfkn724 --- addons/project_long_term/project_long_term.py | 30 ++++++++------------------- 1 file changed, 9 insertions(+), 21 deletions(-) (limited to 'addons/project_long_term/project_long_term.py') diff --git a/addons/project_long_term/project_long_term.py b/addons/project_long_term/project_long_term.py index 79837416d97..be0eb07bd47 100644 --- a/addons/project_long_term/project_long_term.py +++ b/addons/project_long_term/project_long_term.py @@ -19,8 +19,7 @@ # ############################################################################## -import time -from datetime import date, datetime, timedelta +from datetime import datetime from tools.translate import _ from osv import fields, osv from resource.faces import task as Task @@ -292,16 +291,11 @@ class project_phase(osv.osv): # Create a new project for each phase def Project(): start = start_date - minimum_time_unit = 1 - resource = phase_resource_obj # If project has working calendar then that # else the default one would be considered if calendar_id: - working_days = resource_pool.compute_working_calendar(cr, uid, calendar_id, context=context) - vacation = tuple(resource_pool.compute_vacation(cr, uid, calendar_id)) - - def phase(): - effort = duration + resource_pool.compute_working_calendar(cr, uid, calendar_id, context=context) + resource_pool.compute_vacation(cr, uid, calendar_id) project = Task.BalancedProject(Project) s_date = project.phase.start.to_datetime() @@ -340,7 +334,6 @@ class project_phase(osv.osv): Schedule the tasks according to resource available and priority. """ task_pool = self.pool.get('project.task') - resource_pool = self.pool.get('resource.resource') if context is None: context = {} resources_list = self.generate_resources(cr, uid, ids, context=context) @@ -432,9 +425,7 @@ class project(osv.osv): """ if type(ids) in (long, int,): ids = [ids] - user_pool = self.pool.get('res.users') task_pool = self.pool.get('project.task') - resource_pool = self.pool.get('resource.resource') if context is None: context = {} @@ -493,7 +484,7 @@ class project_task(osv.osv): if context is None: context = {} user_pool = self.pool.get('res.users') - project_pool = self.pool.get('project.project') + resource_pool = self.pool.get('resource.resource') priority_dict = {'0': 1000, '1': 800, '2': 500, '3': 300, '4': 100} # Create dynamic no of tasks with the resource specified def create_tasks(task_number, eff, priorty=500, obj=False): @@ -501,28 +492,23 @@ class project_task(osv.osv): """ task is a dynamic method! """ - effort = eff if obj: resource = obj - priority = priorty task.__doc__ = "TaskNO%d" %task_number task.__name__ = "task%d" %task_number return task # Create a 'Faces' project with all the tasks and resources def Project(): - title = "Project" - start = datetime.strftime(datetime.strptime(start_date, "%Y-%m-%d"), "%Y-%m-%d %H:%M") try: resource = reduce(operator.or_, resources) except: raise osv.except_osv(_('Error'), _('Should have Resources Allocation or Project Members!')) - minimum_time_unit = 1 + if calendar_id: # If project has working calendar - working_days = resource_pool.compute_working_calendar(cr, uid, calendar_id, context=context) - vacation = tuple(resource_pool.compute_vacation(cr, uid, calendar_id, context=context)) + resource_pool.compute_working_calendar(cr, uid, calendar_id, context=context) + resource_pool.compute_vacation(cr, uid, calendar_id, context=context) # Dynamic creation of tasks - task_number = 0 for openobect_task in self.browse(cr, uid, ids, context=context): hours = str(openobect_task.planned_hours )+ 'H' if openobect_task.priority in priority_dict.keys(): @@ -556,5 +542,7 @@ class project_task(osv.osv): loop_no += 1 return True + project_task() + # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: -- cgit v1.2.3 From 91ace29a8aa15492de8857b4a2f9f0bba6de869e Mon Sep 17 00:00:00 2001 From: "rpa (Open ERP)" Date: Tue, 28 Sep 2010 10:37:11 +0530 Subject: [FIX]: project_long_term: Fixed pylint warnings bzr revid: rpa@tinyerp.com-20100928050711-x7czhl7jwku3s8kl --- addons/project_long_term/project_long_term.py | 4 ---- 1 file changed, 4 deletions(-) (limited to 'addons/project_long_term/project_long_term.py') diff --git a/addons/project_long_term/project_long_term.py b/addons/project_long_term/project_long_term.py index a535015d067..dba58e1789f 100644 --- a/addons/project_long_term/project_long_term.py +++ b/addons/project_long_term/project_long_term.py @@ -277,7 +277,6 @@ class project_phase(osv.osv): context = {} resource_pool = self.pool.get('resource.resource') uom_pool = self.pool.get('product.uom') - phase_resource = False if context is None: context = {} default_uom_id = self._get_default_uom_id(cr, uid) @@ -290,9 +289,6 @@ class project_phase(osv.osv): duration = str(avg_hours) + 'H' # Create a new project for each phase def Project(): - start = start_date - minimum_time_unit = 1 - resource = phase_resource_obj # If project has working calendar then that # else the default one would be considered if calendar_id: -- cgit v1.2.3 From 4356a354e448f160f81ea1890ff93c16b0c56125 Mon Sep 17 00:00:00 2001 From: "Harry (OpenERP)" Date: Tue, 28 Sep 2010 19:22:54 +0530 Subject: [FIX] project_long_term: resolve regression on scheduling task bzr revid: hmo@tinyerp.com-20100928135254-2fux2qn5lozzs2nd --- addons/project_long_term/project_long_term.py | 3 +++ 1 file changed, 3 insertions(+) (limited to 'addons/project_long_term/project_long_term.py') diff --git a/addons/project_long_term/project_long_term.py b/addons/project_long_term/project_long_term.py index dba58e1789f..9f8f5bf8d56 100644 --- a/addons/project_long_term/project_long_term.py +++ b/addons/project_long_term/project_long_term.py @@ -291,6 +291,9 @@ class project_phase(osv.osv): def Project(): # If project has working calendar then that # else the default one would be considered + start = start_date + minimum_time_unit = 1 + resource = phase_resource_obj if calendar_id: working_days = resource_pool.compute_working_calendar(cr, uid, calendar_id, context=context) vacation = tuple(resource_pool.compute_vacation(cr, uid, calendar_id)) -- cgit v1.2.3 From 7f728b9e802834694b15b6c65235d2f6e108b57d Mon Sep 17 00:00:00 2001 From: gpa Date: Wed, 29 Sep 2010 20:37:02 +0530 Subject: added changes for project bzr revid: gpa@tinyerp.com-20100929150702-209fgqoz1am8n4cb --- addons/project_long_term/project_long_term.py | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) (limited to 'addons/project_long_term/project_long_term.py') diff --git a/addons/project_long_term/project_long_term.py b/addons/project_long_term/project_long_term.py index a535015d067..a831750c8f3 100644 --- a/addons/project_long_term/project_long_term.py +++ b/addons/project_long_term/project_long_term.py @@ -24,6 +24,7 @@ from tools.translate import _ from osv import fields, osv from resource.faces import task as Task import operator +from mx import DateTime class project_phase(osv.osv): _name = "project.phase" @@ -90,6 +91,19 @@ class project_phase(osv.osv): 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'] + + def _compute(self, cr, uid, ids, context=None): + res = {} + if not ids: + return res + for phase in self.browse(cr, uid, ids, context=context): + tot = 0.0 + for task in phase.task_ids: + tot += task.planned_hours + res[phase.id] = { + 'total_hours' : tot + } + return res _columns = { 'name': fields.char("Name", size=64, required=True), @@ -108,7 +122,8 @@ class project_phase(osv.osv): 'responsible_id': fields.many2one('res.users', 'Responsible', states={'done':[('readonly',True)], 'cancelled':[('readonly',True)]}), 'state': fields.selection([('draft', 'Draft'), ('open', 'In Progress'), ('pending', 'Pending'), ('cancelled', 'Cancelled'), ('done', 'Done')], 'State', readonly=True, required=True, help='If the phase is created the state \'Draft\'.\n If the phase is started, the state becomes \'In Progress\'.\n If review is needed the phase is in \'Pending\' state.\ - \n If the phase is over, the states is set to \'Done\'.') + \n If the phase is over, the states is set to \'Done\'.'), + 'total_hours': fields.function(_compute, method=True, string='Total Hours'), } _defaults = { 'responsible_id': lambda obj,cr,uid,context: uid, @@ -130,6 +145,14 @@ class project_phase(osv.osv): project_id = project_obj.browse(cr, uid, project, context=context) result['date_start'] = project_id.date_start return {'value': result} + + def onchange_days(self, cr, uid, ids, project, context=None): + result = {} + for id in ids: + project_id = self.browse(cr, uid, id, context=context) + newdate = DateTime.strptime(project_id.date_start, '%Y-%m-%d') + DateTime.RelativeDateTime(days=project_id.duration or 0.0) + result['date_end'] = newdate.strftime('%Y-%m-%d') + return {'value': result} def _check_date_start(self, cr, uid, phase, date_end, context=None): if context is None: -- cgit v1.2.3 From 0994368ae173e6569ae31b09dda90ab78fa765bb Mon Sep 17 00:00:00 2001 From: "Harry (OpenERP)" Date: Thu, 30 Sep 2010 20:11:19 +0530 Subject: [IMP] project bzr revid: hmo@tinyerp.com-20100930144119-rqcos1j0xumt4h6t --- addons/project_long_term/project_long_term.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'addons/project_long_term/project_long_term.py') diff --git a/addons/project_long_term/project_long_term.py b/addons/project_long_term/project_long_term.py index d1df71630f8..2caf36766b0 100644 --- a/addons/project_long_term/project_long_term.py +++ b/addons/project_long_term/project_long_term.py @@ -109,8 +109,8 @@ class project_phase(osv.osv): 'name': fields.char("Name", size=64, required=True), 'date_start': fields.date('Start Date', help="Starting Date of the phase", states={'done':[('readonly',True)], 'cancelled':[('readonly',True)]}), 'date_end': fields.date('End Date', help="Ending Date of the phase", states={'done':[('readonly',True)], 'cancelled':[('readonly',True)]}), - 'constraint_date_start': fields.date('Start Date', help='force the phase to start after this date', states={'done':[('readonly',True)], 'cancelled':[('readonly',True)]}), - 'constraint_date_end': fields.date('End Date', help='force the phase to finish before this date', states={'done':[('readonly',True)], 'cancelled':[('readonly',True)]}), + 'constraint_date_start': fields.date('Minimum Start Date', help='force the phase to start after this date', states={'done':[('readonly',True)], 'cancelled':[('readonly',True)]}), + 'constraint_date_end': fields.date('Deadline', help='force the phase to finish before this date', states={'done':[('readonly',True)], 'cancelled':[('readonly',True)]}), 'project_id': fields.many2one('project.project', 'Project', required=True), 'next_phase_ids': fields.many2many('project.phase', 'project_phase_rel', 'prv_phase_id', 'next_phase_id', 'Next Phases', states={'cancelled':[('readonly',True)]}), 'previous_phase_ids': fields.many2many('project.phase', 'project_phase_rel', 'next_phase_id', 'prv_phase_id', 'Previous Phases', states={'cancelled':[('readonly',True)]}), @@ -394,8 +394,10 @@ class project_resource_allocation(osv.osv): _columns = { 'resource_id': fields.many2one('resource.resource', 'Resource', required=True), 'phase_id': fields.many2one('project.phase', 'Project Phase', ondelete='cascade', required=True), - 'phase_id_date_start': fields.related('phase_id', 'date_start', type='date', string='Starting Date of the phase'), - 'phase_id_date_end': fields.related('phase_id', 'date_end', type='date', string='Ending Date of the phase'), + 'project_id': fields.related('phase_id', 'project_id', type='many2one', relation="project.project", string='Project', store=True), + 'user_id': fields.related('resource_id', 'user_id', type='many2one', relation="res.users", string='User'), + 'date_start': fields.date('Start Date', help="Starting Date"), + 'date_end': fields.date('End Date', help="Ending Date"), 'useability': fields.float('Usability', help="Usability of this resource for this project phase in percentage (=50%)"), } _defaults = { -- cgit v1.2.3 From 622e39465b006df40574f02cf70d9e7008d10ac7 Mon Sep 17 00:00:00 2001 From: "Vianney,Anup(OpenERP)" <> Date: Wed, 6 Oct 2010 16:42:47 +0530 Subject: [FIX] project_long_term : _compute() method corrected and view of project phase corrected. lp bug: https://launchpad.net/bugs/655316 fixed bzr revid: ach@tinyerp.com-20101006111247-53h19u0qw8z97u4u --- addons/project_long_term/project_long_term.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'addons/project_long_term/project_long_term.py') diff --git a/addons/project_long_term/project_long_term.py b/addons/project_long_term/project_long_term.py index 2caf36766b0..0c31c485753 100644 --- a/addons/project_long_term/project_long_term.py +++ b/addons/project_long_term/project_long_term.py @@ -92,7 +92,7 @@ class project_phase(osv.osv): 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'] - def _compute(self, cr, uid, ids, context=None): + def _compute(self, cr, uid, ids,field_name, arg, context=None): res = {} if not ids: return res @@ -100,9 +100,7 @@ class project_phase(osv.osv): tot = 0.0 for task in phase.task_ids: tot += task.planned_hours - res[phase.id] = { - 'total_hours' : tot - } + res[phase.id] = tot return res _columns = { -- cgit v1.2.3