refactoring, date range feature
This commit is contained in:
		
							
								
								
									
										56
									
								
								main.py
									
									
									
									
									
								
							
							
						
						
									
										56
									
								
								main.py
									
									
									
									
									
								
							@@ -3,7 +3,7 @@ import json
 | 
			
		||||
import datetime
 | 
			
		||||
from dotenv import load_dotenv
 | 
			
		||||
from os import getenv
 | 
			
		||||
from month_view import *
 | 
			
		||||
from dates import *
 | 
			
		||||
import sys
 | 
			
		||||
 | 
			
		||||
load_dotenv()
 | 
			
		||||
@@ -16,6 +16,8 @@ WEEKS_BACK = 0
 | 
			
		||||
MONTH_VIEW = False
 | 
			
		||||
MONTHS_BACK = 0
 | 
			
		||||
VERBOSE = True
 | 
			
		||||
DATE_FROM = None
 | 
			
		||||
DATE_TO = None
 | 
			
		||||
 | 
			
		||||
def get_flag_value(flag):
 | 
			
		||||
    return flag.split("=")[1]
 | 
			
		||||
@@ -31,6 +33,12 @@ for arg in sys.argv:
 | 
			
		||||
        USERNAMES[0] = get_flag_value(arg)
 | 
			
		||||
        if ',' in USERNAMES[0]:
 | 
			
		||||
            USERNAMES = USERNAMES[0].split(',')
 | 
			
		||||
    if "--date-from" in arg:
 | 
			
		||||
        DATE_FROM = datetime.datetime.strptime(
 | 
			
		||||
        get_flag_value(arg), '%Y-%m-%d').date()
 | 
			
		||||
    if "--date-to" in arg:
 | 
			
		||||
        DATE_TO = datetime.datetime.strptime(
 | 
			
		||||
        get_flag_value(arg), '%Y-%m-%d').date()
 | 
			
		||||
if "--verbose" in sys.argv:
 | 
			
		||||
    VERBOSE = True
 | 
			
		||||
 | 
			
		||||
@@ -93,45 +101,12 @@ def get_all_worklogs(issues):
 | 
			
		||||
    worklogs.sort(key=date_getter)
 | 
			
		||||
    return worklogs
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def date_getter(worklog):
 | 
			
		||||
    return worklog['date']
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def get_days(day):
 | 
			
		||||
    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(str(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(str(day))
 | 
			
		||||
            day = day + datetime.timedelta(days=1)
 | 
			
		||||
            day_of_week += 1
 | 
			
		||||
 | 
			
		||||
    return days, days_second_part
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def get_worklogs_for_days(worklogs, days):
 | 
			
		||||
    timeperiod_tickets = []
 | 
			
		||||
    for worklog in worklogs:
 | 
			
		||||
        worklog_date = datetime.datetime.strptime(
 | 
			
		||||
            worklog["date"].split('T')[0], '%Y-%m-%d').date()
 | 
			
		||||
        if str(worklog_date) in days:
 | 
			
		||||
        if worklog_date in days:
 | 
			
		||||
            timeperiod_tickets.append(worklog)
 | 
			
		||||
    return timeperiod_tickets
 | 
			
		||||
 | 
			
		||||
@@ -150,11 +125,20 @@ def main():
 | 
			
		||||
            month_view = get_month_view(worklogs)
 | 
			
		||||
            print(month_view)
 | 
			
		||||
        return
 | 
			
		||||
    if DATE_FROM and DATE_TO:
 | 
			
		||||
        for username in USERNAMES:
 | 
			
		||||
            issues = get_issues(username)
 | 
			
		||||
            all_worklogs = get_all_worklogs(issues)
 | 
			
		||||
            days = get_days_for_range(DATE_FROM, DATE_TO)
 | 
			
		||||
            print(all_worklogs)
 | 
			
		||||
            worklogs = get_worklogs_for_days(all_worklogs, days)
 | 
			
		||||
            print(worklogs)
 | 
			
		||||
        return
 | 
			
		||||
    for username in USERNAMES:
 | 
			
		||||
        issues = get_issues(username)
 | 
			
		||||
        all_worklogs = get_all_worklogs(issues)
 | 
			
		||||
        today = datetime.date.today()
 | 
			
		||||
        days, days_second_part = get_days(today)
 | 
			
		||||
        days, days_second_part = get_days(today, WEEKS_BACK)
 | 
			
		||||
        worklogs = get_worklogs_for_days(all_worklogs, days)
 | 
			
		||||
        omnimat_string = ""
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user