from datetime import date, timedelta def get_date(session) -> str: if "date" not in session: session["date"] = date.today().strftime("%d-%b-%Y") return session["date"] def set_date(date_, session): session["date"] = date_ return session["date"] def get_start_date(session): if "start" not in session: session["start"] = get_first_day(date.today()).strftime("%d-%b-%Y") return session["start"] def get_finish_date(session): if "finish" not in session: session["finish"] = get_last_day(date.today()).strftime("%d-%b-%Y") return session["finish"] def set_period(start, finish, session): session["start"] = start if isinstance(start, str) else start.strftime("%d-%b-%Y") session["finish"] = finish if isinstance(finish, str) else finish.strftime("%d-%b-%Y") def get_first_day(dt, d_years=0, d_months=0): # d_years, d_months are "deltas" to apply to dt y, m = dt.year + d_years, dt.month + d_months a, m = divmod(m - 1, 12) return date(y + a, m + 1, 1) def get_last_day(dt): return get_first_day(dt, 0, 1) + timedelta(-1)