43 lines
1.1 KiB
Python
43 lines
1.1 KiB
Python
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)
|