def calculate_date(self):
start_date = self.start_date
print(start_date)
date_lst = []
if start_date.weekday() == 0:
week_end_date = start_date - datetime.timedelta(1)
week_start_date = start_date - datetime.timedelta(7)
date_lst.append((week_start_date, week_end_date, week_end_date, self.week))
if start_date.day == 3:
month_end_date = start_date - datetime.timedelta(3)
month_start_date = datetime.date(month_end_date.year, month_end_date.month, 1)
date_lst.append((month_start_date, month_end_date, month_end_date, self.month))
if start_date.month in [1, 4, 7, 10] and start_date.day == 3:
season_dic = {1: [datetime.date(start_date.year - 1, 10, 1), datetime.date(start_date.year - 1, 12, 31),
datetime.date(start_date.year - 1, 12, 31)],
4: [datetime.date(start_date.year, 1, 1), datetime.date(start_date.year, 3, 31),
datetime.date(start_date.year, 3, 31)],
7: [datetime.date(start_date.year, 4, 1), datetime.date(start_date.year, 6, 30),
datetime.date(start_date.year, 6, 30)],
10: [datetime.date(start_date.year, 7, 1), datetime.date(start_date.year, 9, 30),
datetime.date(start_date.year, 9, 30)]
}
season_date_lis = season_dic.get(start_date.month)
date_lst.append((season_date_lis[0], season_date_lis[1], season_date_lis[2], self.season))
if start_date.month is 1 and start_date.day == 3:
year_start_date = datetime.date(start_date.year - 1, 1, 1)
year_end_date = datetime.date(start_date.year - 1, 12, 31)
year_save_date = datetime.date(start_date.year - 1, 12, 31)
date_lst.append((year_start_date, year_end_date, year_save_date, self.year))
if date_lst:
self.start_date = min([i[0] for i in date_lst])
return date_lst