91 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			91 lines
		
	
	
		
			3.0 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 | 
