From 95d5162db44c76b65696ff1ade2ba65082fa5b59 Mon Sep 17 00:00:00 2001 From: Tyler Neu Date: Thu, 3 Aug 2023 16:55:12 -0500 Subject: [PATCH 1/3] Only offset next_occurrence if the object is new. Clone with offset without an initial save() so that next_occurrence considers new day_offset value. --- ambition_utils/rrule/models.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/ambition_utils/rrule/models.py b/ambition_utils/rrule/models.py index 33a87c7..2f77e4d 100644 --- a/ambition_utils/rrule/models.py +++ b/ambition_utils/rrule/models.py @@ -364,8 +364,8 @@ def set_date_objects(self): # Convert back to utc before saving self.next_occurrence = self.convert_to_utc(self.next_occurrence) - # Offset, if applicable, for old and new. - self.next_occurrence = self.offset(self.next_occurrence) + # Offset, if applicable, for new objects. + self.next_occurrence = self.offset(self.next_occurrence) def set_date_objects_for_params(self, params, is_new=False): """ @@ -468,9 +468,11 @@ def clone(self) -> RRule: def clone_with_day_offset(self, day_offset: int) -> RRule: """ Creates a clone of a passed RRule object with day_offset set. + clone() is not called to ensure .id is not set before .save() so offset is applied. :param day_offset: The number of days to offset the clone's start date. Can be negative. """ - clone = self.clone() + clone = copy.deepcopy(self) + clone.id = None clone.day_offset = day_offset clone.save() return clone From 6e95975b456dee5fe0e77b57e38e93e9728602b6 Mon Sep 17 00:00:00 2001 From: Tyler Neu Date: Thu, 3 Aug 2023 16:58:48 -0500 Subject: [PATCH 2/3] Version bump --- ambition_utils/docs/release_notes.rst | 5 +++++ ambition_utils/version.py | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/ambition_utils/docs/release_notes.rst b/ambition_utils/docs/release_notes.rst index 51b8d89..2d2b5ff 100644 --- a/ambition_utils/docs/release_notes.rst +++ b/ambition_utils/docs/release_notes.rst @@ -2,6 +2,11 @@ Release Notes ============= +3.1.8 +----- +* next_occurernce is only offset on save() if the object is new. +* clone_with_day_offset no longer calls clone() to ensure the clone is not saved with an id before day_offset is set. + 3.1.8 ----- * Added RRule.day_offset to support true offset support. clone_with_day_offset method now sets day_offset. diff --git a/ambition_utils/version.py b/ambition_utils/version.py index b7edc10..5341ea5 100644 --- a/ambition_utils/version.py +++ b/ambition_utils/version.py @@ -1 +1 @@ -__version__ = '3.1.8' +__version__ = '3.1.9' From 79b889b8aa2b4e32b476b4d831bc9611c38b60dc Mon Sep 17 00:00:00 2001 From: Tyler Neu Date: Thu, 3 Aug 2023 16:59:18 -0500 Subject: [PATCH 3/3] Proper version --- ambition_utils/docs/release_notes.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ambition_utils/docs/release_notes.rst b/ambition_utils/docs/release_notes.rst index 2d2b5ff..8fdf8f1 100644 --- a/ambition_utils/docs/release_notes.rst +++ b/ambition_utils/docs/release_notes.rst @@ -2,7 +2,7 @@ Release Notes ============= -3.1.8 +3.1.9 ----- * next_occurernce is only offset on save() if the object is new. * clone_with_day_offset no longer calls clone() to ensure the clone is not saved with an id before day_offset is set.