diff --git a/src/ifcopenshell-python/ifcopenshell/api/sequence/edit_task_time.py b/src/ifcopenshell-python/ifcopenshell/api/sequence/edit_task_time.py index 722ea46f45..4d27c86583 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/sequence/edit_task_time.py +++ b/src/ifcopenshell-python/ifcopenshell/api/sequence/edit_task_time.py @@ -65,7 +65,7 @@ class Usecase: self.calculate_finish() elif "ScheduleStart" in self.settings["attributes"].keys() and self.settings["task_time"].ScheduleDuration: self.calculate_finish() - elif "ScheduleFinish" in self.settings["attributes"].keys() and self.settings["task_time"].ScheduleStart: + elif self.settings["attributes"].get("ScheduleFinish", None) and self.settings["task_time"].ScheduleStart: self.calculate_duration() if self.settings["task_time"].ScheduleDuration and ( diff --git a/src/ifcopenshell-python/test/api/sequence/test_edit_task_time.py b/src/ifcopenshell-python/test/api/sequence/test_edit_task_time.py index 25b945fdc7..4ba66461fb 100644 --- a/src/ifcopenshell-python/test/api/sequence/test_edit_task_time.py +++ b/src/ifcopenshell-python/test/api/sequence/test_edit_task_time.py @@ -72,6 +72,22 @@ class TestEditTaskTime(test.bootstrap.IFC4): assert task_time.RemainingTime == "P1D" assert task_time.Completion == 0.5 + def test_editing_just_a_start_date_with_no_duration_or_finish(self): + task_time = ifcopenshell.api.run("sequence.add_task_time", self.file, task=self.file.createIfcTask()) + ifcopenshell.api.run( + "sequence.edit_task_time", + self.file, + task_time=task_time, + attributes={ + "ScheduleDuration": None, + "ScheduleStart": "2000-01-01T00:00:00", + "ScheduleFinish": None, + }, + ) + assert task_time.ScheduleStart == "2000-01-01T00:00:00" + assert task_time.ScheduleFinish is None + assert task_time.ScheduleDuration is None + def test_schedule_finish_dates_are_auto_calculated_if_possible(self): task_time = ifcopenshell.api.run("sequence.add_task_time", self.file, task=self.file.createIfcTask()) ifcopenshell.api.run(