83 lines
2.9 KiB
Python
Executable File
83 lines
2.9 KiB
Python
Executable File
import datetime
|
|
|
|
def get_days_of_month(months_back=0):
|
|
# set the current day to the first day of the current month
|
|
# and loop for the days until the month changes
|
|
current_day = datetime.datetime.today().replace(day=1)
|
|
current_month = current_day.month
|
|
days = []
|
|
while months_back:
|
|
current_day = datetime.datetime.today().replace(day=1)
|
|
current_day -= datetime.timedelta(days=1)
|
|
current_day = current_day.replace(day=1)
|
|
current_month = current_day.month
|
|
months_back -= 1
|
|
while current_day.month == current_month:
|
|
days.append(current_day)
|
|
current_day += datetime.timedelta(days=1)
|
|
|
|
return days
|
|
|
|
|
|
def get_month_view(worklogs):
|
|
week = datetime.datetime.strptime(
|
|
worklogs[0]["date"][0:10], '%Y-%m-%d').date()
|
|
week_number_start = week
|
|
to_monday = week_number_start.weekday()
|
|
week_number_start -= datetime.timedelta(days=to_monday)
|
|
week_number_end = week_number_start+datetime.timedelta(days=6)
|
|
week_iso = week.isocalendar().week
|
|
month_view = worklogs[0]["author"]
|
|
for worklog in worklogs:
|
|
ticket = worklog["ticket_id"]
|
|
date = worklog["date"][0:10]
|
|
timespent = worklog["time_spent"]
|
|
week_day = datetime.datetime.strptime(date, '%Y-%m-%d').date()
|
|
if (week_day.isocalendar().week == week_iso):
|
|
month_view += "\nWeek " + str(week_iso)+"\tfrom "+week_number_start.__str__() + \
|
|
"\tto "+week_number_end.__str__()+"\n\n"
|
|
week_iso += 1
|
|
week_number_start += datetime.timedelta(days=7)
|
|
week_number_end += datetime.timedelta(days=7)
|
|
month_view += ticket+'\tdate '+date+'\ttime '+timespent + '\n'
|
|
|
|
return month_view
|
|
|
|
|
|
def date_getter(worklog):
|
|
return worklog['date']
|
|
|
|
|
|
def get_days(day, weeks_back=False):
|
|
if weeks_back:
|
|
day = day - datetime.timedelta(weeks=weeks_back)
|
|
year, weeknum, day_of_week = day.isocalendar()
|
|
while day_of_week != 1:
|
|
day = day - datetime.timedelta(days=1)
|
|
year, weeknum, day_of_week = day.isocalendar()
|
|
days = []
|
|
current_month = day.month
|
|
while day_of_week <= 7:
|
|
if day.month != current_month:
|
|
break # Stop collecting if month changes
|
|
days.append(day)
|
|
day = day + datetime.timedelta(days=1)
|
|
day_of_week += 1
|
|
days_second_part = []
|
|
if day_of_week <= 7: # This condition means the loop ended because the month changed
|
|
next_month = day.month
|
|
while day_of_week <= 7 and day.month == next_month:
|
|
days_second_part.append(day)
|
|
day = day + datetime.timedelta(days=1)
|
|
day_of_week += 1
|
|
|
|
return days, days_second_part
|
|
|
|
def get_days_for_range(date_from, date_to):
|
|
delta = datetime.timedelta(days=1)
|
|
days = []
|
|
while date_from <= date_to:
|
|
days.append(date_from)
|
|
date_from += delta
|
|
|
|
return days |