Copy children works and timesheets

issue11525
review435211004
This commit is contained in:
Sergi Almacellas Abellana
2022-06-16 14:32:44 +02:00
parent e077c3747e
commit 9017138728
2 changed files with 30 additions and 2 deletions
+19
View File
@@ -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
+11 -2
View File
@@ -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):