def create_list_of_saturdays(): """ Create a list of Saturdays equal to the number of Saturdays between the Saturday immediately following the start date and the Saturday immediately proceeding the target date for completion. """ i = 1 lst = [] for saturday in range(num_saturdays): saturday = sat_start + relativedelta(weekday=SA(+i)) lst.append(saturday) i += 1 return lst
def test_recurrence_next_dates_month(self): dates = self.env['project.task.recurrence']._get_next_recurring_dates( date_start=date(2020, 1, 15), repeat_interval=1, repeat_unit='month', repeat_type=False, # Forever repeat_until=False, repeat_on_month='date', repeat_on_year=False, weekdays=False, repeat_day=31, repeat_week=False, repeat_month=False, count=12) # should take the last day of each month self.assertEqual(dates[0], date(2020, 1, 31)) self.assertEqual(dates[1], date(2020, 2, 29)) self.assertEqual(dates[2], date(2020, 3, 31)) self.assertEqual(dates[3], date(2020, 4, 30)) self.assertEqual(dates[4], date(2020, 5, 31)) self.assertEqual(dates[5], date(2020, 6, 30)) self.assertEqual(dates[6], date(2020, 7, 31)) self.assertEqual(dates[7], date(2020, 8, 31)) self.assertEqual(dates[8], date(2020, 9, 30)) self.assertEqual(dates[9], date(2020, 10, 31)) self.assertEqual(dates[10], date(2020, 11, 30)) self.assertEqual(dates[11], date(2020, 12, 31)) dates = self.env['project.task.recurrence']._get_next_recurring_dates( date_start=date(2020, 2, 20), repeat_interval=3, repeat_unit='month', repeat_type=False, # Forever repeat_until=False, repeat_on_month='date', repeat_on_year=False, weekdays=False, repeat_day=29, repeat_week=False, repeat_month=False, count=5) self.assertEqual(dates[0], date(2020, 2, 29)) self.assertEqual(dates[1], date(2020, 5, 29)) self.assertEqual(dates[2], date(2020, 8, 29)) self.assertEqual(dates[3], date(2020, 11, 29)) self.assertEqual(dates[4], date(2021, 2, 28)) dates = self.env['project.task.recurrence']._get_next_recurring_dates( date_start=date(2020, 1, 10), repeat_interval=1, repeat_unit='month', repeat_type='until', repeat_until=datetime(2020, 5, 31), repeat_on_month='day', repeat_on_year=False, weekdays=[ SA(4), ], # 4th Saturday repeat_day=29, repeat_week=False, repeat_month=False, count=6) self.assertEqual(len(dates), 5) self.assertEqual(dates[0], datetime(2020, 1, 25)) self.assertEqual(dates[1], datetime(2020, 2, 22)) self.assertEqual(dates[2], datetime(2020, 3, 28)) self.assertEqual(dates[3], datetime(2020, 4, 25)) self.assertEqual(dates[4], datetime(2020, 5, 23))
def find_saturday_following_date_specified(sat): return sat + relativedelta(weekday=SA(+1))