From 072c756759ff9012cbd1b0e03ee9b18ae9dfc2d2 Mon Sep 17 00:00:00 2001 From: "mra (Open ERP)" Date: Thu, 11 Mar 2010 12:40:06 +0530 Subject: [IMP] project_long_term: Improve the module and bug fixes and overall cleaning bzr revid: mra@tinyerp.com-20100311071006-u6usdghqls7t4inl --- .../wizard/compute_phases_date.py | 27 +++++++++++----------- .../project_long_term/wizard/compute_tasks_date.py | 24 +++++++++---------- addons/project_long_term/wizard/schedule_tasks.py | 21 +++++++++-------- .../project_long_term/wizard/working_calendar.py | 16 ++++++------- 4 files changed, 45 insertions(+), 43 deletions(-) (limited to 'addons/project_long_term/wizard') diff --git a/addons/project_long_term/wizard/compute_phases_date.py b/addons/project_long_term/wizard/compute_phases_date.py index 3c14d7525aa..a595a190d4e 100644 --- a/addons/project_long_term/wizard/compute_phases_date.py +++ b/addons/project_long_term/wizard/compute_phases_date.py @@ -18,14 +18,13 @@ # along with this program. If not, see . # ############################################################################## +import datetime +from resource.faces import * +from new import classobj import wizard import pooler from tools.translate import _ -import datetime - -from resource.faces import * -from new import classobj import working_calendar as wkcal @@ -60,12 +59,13 @@ class wizard_compute_phases(wizard.interface): leaves = [] time_efficiency = 1.0 resource_id = resource_obj.search(cr, uid, [('user_id', '=', phase.responsible_id.id)]) + if resource_id: # Create a new resource object with # all the attributes of the Resource Class resource = resource_obj.browse(cr, uid, resource_id, context=context)[0] time_efficiency = resource.time_efficiency - leaves = wkcal.compute_leaves(cr, uid, calendar_id or False , resource_id, resource.calendar_id.id) + leaves = wkcal.compute_leaves(cr, uid, calendar_id , resource.id, resource.calendar_id.id) phase_resource_obj = classobj(str(phase.responsible_id.name), (Resource,), {'__doc__': phase.responsible_id.name, '__name__': phase.responsible_id.name, @@ -105,18 +105,19 @@ class wizard_compute_phases(wizard.interface): end_date = e_date date_start = end_date # Write the calculated dates back + ctx = context.copy() + ctx.update({'scheduler': True}) phase_obj.write(cr, uid, [phase.id], {'date_start': start_date.strftime('%Y-%m-%d %H:%M:%S'), 'date_end': end_date.strftime('%Y-%m-%d %H:%M:%S')}, - context={'scheduler': True - }) + context=ctx) # Recursive call till all the next phases scheduled for phase in phase.next_phase_ids: if phase.state in ['draft','open','pending']: - self._phase_schedule(cr, uid, phase, date_start, phase.project_id.resource_calendar_id.id or False) + self._phase_schedule(cr, uid, phase, date_start, phase.project_id.resource_calendar_id.id or False, context=context) else: continue - def _compute_date(self, cr, uid, data, context): + def _compute_date(self, cr, uid, data, context={}): """ Compute the phases for scheduling. """ @@ -132,7 +133,7 @@ class wizard_compute_phases(wizard.interface): else: # Else take all the draft,open,pending states phases phase_ids = phase_obj.search(cr, uid,[('state', 'in', ['draft', 'open', 'pending']), ('previous_phase_ids', '=', False) - ]) + ], context=context) phase_ids.sort() phase_objs = phase_obj.browse(cr, uid, phase_ids, context=context) for phase in phase_objs: @@ -141,7 +142,7 @@ class wizard_compute_phases(wizard.interface): start_date = datetime.datetime.now().strftime("%Y-%m-%d") start_dt = datetime.datetime.strftime((datetime.datetime.strptime(start_date, "%Y-%m-%d")), "%Y-%m-%d %H:%M") calendar_id = phase.project_id.resource_calendar_id.id - self._phase_schedule(cr, uid, phase, start_dt, calendar_id or False) + self._phase_schedule(cr, uid, phase, start_dt, calendar_id or False, context=context) return {} def _open_phases_list(self, cr, uid, data, context): @@ -162,7 +163,7 @@ class wizard_compute_phases(wizard.interface): states = { 'init': { 'actions': [], - 'result': {'type':'form', 'arch':compute_form, 'fields':compute_fields, 'state':[ + 'result': {'type': 'form', 'arch': compute_form, 'fields': compute_fields, 'state':[ ('end', 'Cancel'), ('compute', 'Compute') @@ -170,7 +171,7 @@ class wizard_compute_phases(wizard.interface): }, 'compute': { 'actions': [_compute_date], - 'result': {'type': 'action', 'action':_open_phases_list, 'state':'end'}, + 'result': {'type': 'action', 'action': _open_phases_list, 'state': 'end'}, }, } wizard_compute_phases('wizard.compute.phases') diff --git a/addons/project_long_term/wizard/compute_tasks_date.py b/addons/project_long_term/wizard/compute_tasks_date.py index cc6a443a454..1187980057b 100644 --- a/addons/project_long_term/wizard/compute_tasks_date.py +++ b/addons/project_long_term/wizard/compute_tasks_date.py @@ -18,18 +18,17 @@ # along with this program. If not, see . # ############################################################################## - -import wizard -import pooler -from tools.translate import _ import datetime - from resource.faces import * from new import classobj import operator import working_calendar as wkcal +import wizard +import pooler +from tools.translate import _ + compute_form = """
@@ -105,7 +104,7 @@ class wizard_compute_tasks(wizard.interface): try: resource = reduce(operator.or_, resources) except: - raise wizard.except_wizard(_('MemberError'), _('Project must have members assigned !')) + raise wizard.except_wizard(_('Error'), _('Project must have members assigned !')) minimum_time_unit = 1 if calendar_id: # If project has calendar working_days = wkcal.compute_working_calendar(cr, uid, calendar_id) @@ -131,29 +130,30 @@ class wizard_compute_tasks(wizard.interface): s_date = t.start.to_datetime() e_date = t.end.to_datetime() if loop_no == 0: - project_obj.write(cr, uid, [project_id], {'date' : e_date}) + project_obj.write(cr, uid, [project_id], {'date' : e_date}, context=context) else: + ctx = context.copy() + ctx.update({'scheduler': True}) user_id = user_obj.search(cr, uid, [('name', '=', t.booked_resource[0].__name__)]) task_pool.write(cr, uid, [task_objs[loop_no-1].id], {'date_start': s_date.strftime('%Y-%m-%d %H:%M:%S'), 'date_deadline': e_date.strftime('%Y-%m-%d %H:%M:%S'), 'user_id': user_id[0]}, - context={'scheduler': True - }) + context=ctx) loop_no +=1 return {} states = { 'init': { 'actions': [], - 'result': {'type':'form', 'arch':compute_form, 'fields':compute_fields, 'state':[ + 'result': {'type': 'form', 'arch': compute_form, 'fields': compute_fields, 'state': [ ('end', 'Cancel'), ('compute', 'Compute') ]}, }, 'compute': { 'actions': [_compute_date], - 'result': {'type':'form','arch':success_msg,'fields':{}, 'state':[('end', 'Ok')]}, + 'result': {'type': 'form','arch': success_msg,'fields': {}, 'state': [('end', 'Ok')]}, } } wizard_compute_tasks('wizard.compute.tasks') -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file diff --git a/addons/project_long_term/wizard/schedule_tasks.py b/addons/project_long_term/wizard/schedule_tasks.py index 6db678333a9..16a40155fa8 100644 --- a/addons/project_long_term/wizard/schedule_tasks.py +++ b/addons/project_long_term/wizard/schedule_tasks.py @@ -18,18 +18,17 @@ # along with this program. If not, see . # ############################################################################## - -import wizard -import pooler -from tools.translate import _ import datetime - from resource.faces import * from new import classobj import operator import working_calendar as wkcal +import wizard +import pooler +from tools.translate import _ + success_msg = """