diff --git a/allocation.py b/allocation.py index f39c9c893c..cb75df71b5 100644 --- a/allocation.py +++ b/allocation.py @@ -29,12 +29,13 @@ class Allocation(ModelSQL, ModelView): return 100 @classmethod - def write(cls, allocations, values): + def write(cls, *args): Work = Pool().get('project.work') - super(Allocation, cls).write(allocations, values) + super(Allocation, cls).write(*args) works = Work.search([ - ('allocations', 'in', [a.id for a in allocations]), + ('allocations', 'in', + [a.id for allocations in args[::2] for a in allocations]), ]) for work in works: diff --git a/work.py b/work.py index 824ccda643..98c0dd9c4c 100644 --- a/work.py +++ b/work.py @@ -536,17 +536,19 @@ class Work: self.parent.compute_dates() @classmethod - def write(cls, works, values): - super(Work, cls).write(works, values) + def write(cls, *args): + super(Work, cls).write(*args) - if 'effort' in values: - for work in works: - work.reset_leveling() - fields = ('constraint_start_time', 'constraint_finish_time', - 'effort') - if reduce(lambda x, y: x or y in values, fields, False): - for work in works: - work.compute_dates() + actions = iter(args) + for works, values in zip(actions, actions): + if 'effort' in values: + for work in works: + work.reset_leveling() + fields = ('constraint_start_time', 'constraint_finish_time', + 'effort') + if reduce(lambda x, y: x or y in values, fields, False): + for work in works: + work.compute_dates() @classmethod def create(cls, vlist): @@ -580,11 +582,14 @@ class PredecessorSuccessor(ModelSQL): ondelete='CASCADE', required=True, select=True) @classmethod - def write(cls, pred_succs, values): + def write(cls, *args): Work = Pool().get('project.work') - super(PredecessorSuccessor, cls).write(pred_succs, values) + super(PredecessorSuccessor, cls).write(*args) - works = Work.browse(values.itervalues()) + work_ids = [v for values in args[1::2] + for k, v in values.itervalues() + if k in ('predecessor', 'successor')] + works = Work.browse(work_ids) for work in works: work.reset_leveling() for work in works: