Skip to content

Commit 1502c10

Browse files
committed
Add Methods To Check If Event Starts And Ends This Year
1 parent ceb0bf9 commit 1502c10

File tree

2 files changed

+40
-1
lines changed

2 files changed

+40
-1
lines changed

events/models.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,24 @@ def next_time(self):
181181
except IndexError:
182182
return None
183183

184+
def is_scheduled_to_start_this_year(self) -> bool:
185+
current_year: int = datetime.datetime.now().year
186+
try:
187+
if self.next_time.dt_start.year == current_year:
188+
return True
189+
except Exception:
190+
pass
191+
return False
192+
193+
def is_scheduled_to_end_this_year(self) -> bool:
194+
current_year: int = datetime.datetime.now().year
195+
try:
196+
if self.next_time.dt_end.year == current_year:
197+
return True
198+
except Exception:
199+
pass
200+
return False
201+
184202
@property
185203
def previous_time(self):
186204
now = timezone.now()

events/tests/test_models.py

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,6 @@ def test_recurring_event(self):
6262
self.assertEqual(self.event.next_time.dt_start, recurring_time_dtstart)
6363
self.assertTrue(rt.valid_dt_end())
6464

65-
6665
rt.begin = now - datetime.timedelta(days=5)
6766
rt.finish = now - datetime.timedelta(days=3)
6867
rt.save()
@@ -186,3 +185,25 @@ def test_event_previous_event(self):
186185
# 'Event.previous_event' can return None if there is no
187186
# OccurringRule or RecurringRule found.
188187
self.assertIsNone(self.event.previous_event)
188+
189+
def test_scheduled_to_start_this_year_method(self):
190+
now = seconds_resolution(timezone.now())
191+
192+
occurring_time_dtstart = now + datetime.timedelta(days=3)
193+
OccurringRule.objects.create(
194+
event=self.event,
195+
dt_start=occurring_time_dtstart,
196+
dt_end=occurring_time_dtstart
197+
)
198+
self.assertTrue(self.event.is_scheduled_to_start_this_year())
199+
200+
def test_scheduled_to_end_this_year_method(self):
201+
now = seconds_resolution(timezone.now())
202+
203+
occurring_time_dtstart = now + datetime.timedelta(days=3)
204+
OccurringRule.objects.create(
205+
event=self.event,
206+
dt_start=occurring_time_dtstart,
207+
dt_end=occurring_time_dtstart
208+
)
209+
self.assertTrue(self.event.is_scheduled_to_end_this_year())

0 commit comments

Comments
 (0)