summaryrefslogtreecommitdiff
path: root/addons/project_long_term/wizard/compute_tasks_date.py
diff options
context:
space:
mode:
Diffstat (limited to 'addons/project_long_term/wizard/compute_tasks_date.py')
-rw-r--r--addons/project_long_term/wizard/compute_tasks_date.py52
1 files changed, 27 insertions, 25 deletions
diff --git a/addons/project_long_term/wizard/compute_tasks_date.py b/addons/project_long_term/wizard/compute_tasks_date.py
index cc6a443a454..77e7bbd6512 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 <http://www.gnu.org/licenses/>.
#
##############################################################################
-
-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 = """<?xml version="1.0" ?>
<form string="Compute Scheduling of Tasks">
<field name="project_id" colspan="4"/>
@@ -41,7 +40,7 @@ success_msg = """<?xml version="1.0" ?>
</form>"""
compute_fields = {
- 'project_id': {'string':'Project', 'type':'many2one', 'relation':'project.project', 'required':'True'},
+ 'project_id': {'string':'Project', 'type':'many2one', 'relation':'project.project', 'required':True},
}
class wizard_compute_tasks(wizard.interface):
@@ -62,8 +61,8 @@ class wizard_compute_tasks(wizard.interface):
])
if task_ids:
task_ids.sort()
- task_objs = task_pool.browse(cr, uid, task_ids, context=context)
- calendar_id = project.resource_calendar_id.id
+ tasks = task_pool.browse(cr, uid, task_ids, context=context)
+ calendar_id = project.resource_calendar_id and project.resource_calendar_id.id or False
start_date = project.date_start
if not project.date_start:
start_date = datetime.datetime.now().strftime("%Y-%m-%d")
@@ -73,12 +72,14 @@ class wizard_compute_tasks(wizard.interface):
for user in project.members:
leaves = []
time_efficiency = 1.0
- resource_id = resource_obj.search(cr, uid, [('user_id', '=', user.id)])
+ resource_id = resource_obj.search(cr, uid, [('user_id', '=', user.id)], context=context)
if resource_id:
- resource = resource_obj.browse(cr, uid, resource_id, context=context)[0]
- leaves = wkcal.compute_leaves(cr, uid, calendar_id or False , resource_id, resource.calendar_id.id)
- time_efficiency = resource.time_efficiency
- resources.append(classobj(str(user.name), (Resource,), {'__doc__': user.name,
+# resource = resource_obj.browse(cr, uid, resource_id, context=context)[0]
+ resource = resource_obj.read(cr, uid, resource_id, ['calendar_id','time_efficiency'], context=context)[0]
+ if resource.get('calendar_id', False):
+ leaves = wkcal.compute_leaves(cr, uid, calendar_id , resource_id[0], resource['calendar_id'] and resource['calendar_id'][0] or False)
+ time_efficiency = resource.get('time_efficiency')
+ resources.append(classobj((user.name.encode('utf8')), (Resource,), {'__doc__': user.name,
'__name__': user.name,
'vacation': tuple(leaves),
'efficiency': time_efficiency
@@ -105,20 +106,20 @@ 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)
vacation = tuple(wkcal.compute_leaves(cr, uid, calendar_id))
# Dynamic Creation of tasks
i = 0
- for each_task in task_objs:
+ for each_task in tasks:
hours = str(each_task.planned_hours / each_task.occupation_rate)+ 'H'
if each_task.priority in priority_dict.keys():
priorty = priority_dict[each_task.priority]
if each_task.user_id:
for resource in resources:
- if resource.__name__ == each_task.user_id.name:
+ if resource.__name__ == each_task.user_id.name: # check me!!
task = create_tasks(i, hours, priorty, resource)
else:
task = create_tasks(i, hours, priorty)
@@ -131,29 +132,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'),
+ task_pool.write(cr, uid, [tasks[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':[
- ('end', 'Cancel'),
- ('compute', 'Compute')
+ 'result': {'type': 'form', 'arch': compute_form, 'fields': compute_fields, 'state': [
+ ('end', 'Cancel', 'gtk-cancel'),
+ ('compute', 'Compute', 'gtk-ok', True)
]},
},
'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