Copy children works and timesheets
issue11525 review435211004
This commit is contained in:
@@ -181,5 +181,24 @@ class ProjectTestCase(
|
||||
{'project.work': map(int, works)}):
|
||||
self.assertFalse(TimesheetLine.default_work())
|
||||
|
||||
@with_transaction()
|
||||
def test_copy_work_with_children(self):
|
||||
"Test copy work with children"
|
||||
pool = Pool()
|
||||
ProjectWork = pool.get('project.work')
|
||||
|
||||
company = create_company()
|
||||
with set_company(company):
|
||||
work, = ProjectWork.create([
|
||||
{'name': "Parent", 'children': [('create', [
|
||||
{'name': "Work 1", 'timesheet_available': True},
|
||||
{'name': "Work 2", 'timesheet_available': False},
|
||||
])]}])
|
||||
new_work, = ProjectWork.copy([work])
|
||||
|
||||
child1, child2 = new_work.children
|
||||
self.assertTrue(child1.timesheet_available)
|
||||
self.assertFalse(child2.timesheet_available)
|
||||
|
||||
|
||||
del ModuleTestCase
|
||||
|
||||
@@ -505,11 +505,20 @@ class Work(sequence_ordered(), tree(separator='\\'), ModelSQL, ModelView):
|
||||
default = {}
|
||||
else:
|
||||
default = default.copy()
|
||||
default.setdefault('children', None)
|
||||
default.setdefault('progress', None)
|
||||
default.setdefault(
|
||||
'status', lambda data: WorkStatus.get_default_status(data['type']))
|
||||
return super().copy(project_works, default=default)
|
||||
new_works = super().copy(project_works, default=default)
|
||||
to_save = []
|
||||
for work, new_work in zip(project_works, new_works):
|
||||
if work.timesheet_available:
|
||||
new_work.timesheet_available = work.timesheet_available
|
||||
new_work.timesheet_start_date = work.timesheet_start_date
|
||||
new_work.timesheet_end_date = work.timesheet_end_date
|
||||
to_save.append(new_work)
|
||||
if to_save:
|
||||
cls.save(to_save)
|
||||
return new_works
|
||||
|
||||
@classmethod
|
||||
def delete(cls, project_works):
|
||||
|
||||
Reference in New Issue
Block a user