general refactoring

This commit is contained in:
Michał Kalinowski
2024-10-21 15:33:30 +02:00
parent b22adf75b0
commit 38f138d950
2 changed files with 83 additions and 98 deletions

124
main.py
View File

@@ -10,21 +10,27 @@ load_dotenv()
ACCESS_TOKEN = getenv("TOKEN") ACCESS_TOKEN = getenv("TOKEN")
URL = getenv("URL") URL = getenv("URL")
USERNAMES = ["kalinom6"] # Modify USERNAMES = ["kalinom6"]
CERT = getenv("CERT_LOCATION") CERT = getenv("CERT_LOCATION")
WEEKS_BACK = -1 WEEKS_BACK = 0
CHECK_MONTH_BACK = False
MONTH_VIEW = False MONTH_VIEW = False
VERBOSE = False MONTHS_BACK = 0
VERBOSE = True
def get_flag_value(flag):
return flag.split("=")[1]
if "--monthview" in sys.argv: if "--monthview" in sys.argv:
MONTH_VIEW = True MONTH_VIEW = True
if "--monthback" in sys.argv: for arg in sys.argv:
CHECK_MONTH_BACK = True if "--weeksback" in arg and not MONTH_VIEW:
else: WEEKS_BACK = int(get_flag_value(arg))
for arg in sys.argv: if "--monthsback" in arg and MONTH_VIEW:
if "--weeksback" in arg: MONTHS_BACK = int(get_flag_value(arg))
WEEKS_BACK = int(arg.split("=")[1]) if "--username" in arg:
USERNAMES[0] = get_flag_value(arg)
if ',' in USERNAMES[0]:
USERNAMES = USERNAMES[0].split(',')
if "--verbose" in sys.argv: if "--verbose" in sys.argv:
VERBOSE = True VERBOSE = True
@@ -50,7 +56,7 @@ def get_issues(username):
payload = { payload = {
"jql": jql, "jql": jql,
"startAt": 0, "startAt": 0,
"maxResults": 15, "maxResults": 999,
"fields": [ "fields": [
"key", "summary" "key", "summary"
] ]
@@ -68,7 +74,7 @@ def get_issues(username):
return tasks return tasks
def get_worklogs(issues): def get_all_worklogs(issues):
worklogs = [] worklogs = []
for issue in issues: for issue in issues:
data = send_request(f'{URL}/issue/{issue["task_id"]}/worklog', "GET") data = send_request(f'{URL}/issue/{issue["task_id"]}/worklog', "GET")
@@ -84,11 +90,11 @@ def get_worklogs(issues):
if worklog["author"] in USERNAMES: if worklog["author"] in USERNAMES:
worklogs.append(worklog) worklogs.append(worklog)
worklogs.sort(key=date_sort) worklogs.sort(key=date_getter)
return worklogs return worklogs
def date_sort(worklog): def date_getter(worklog):
return worklog['date'] return worklog['date']
@@ -120,65 +126,65 @@ def get_days(day):
return days, days_second_part return days, days_second_part
def get_week_tickets(worklogs, days): def get_worklogs_for_days(worklogs, days):
this_week_tickets = [] timeperiod_tickets = []
for worklog in worklogs: for worklog in worklogs:
worklog_date = datetime.datetime.strptime( worklog_date = datetime.datetime.strptime(
worklog["date"].split('T')[0], '%Y-%m-%d').date() worklog["date"].split('T')[0], '%Y-%m-%d').date()
if str(worklog_date) in days: if str(worklog_date) in days:
this_week_tickets.append(worklog) timeperiod_tickets.append(worklog)
return this_week_tickets return timeperiod_tickets
def main(): def main():
print('The script starts its work...') print('The script starts its work...')
issues = []
worklogs = []
if MONTH_VIEW: if MONTH_VIEW:
for username in USERNAMES: for username in USERNAMES:
issues = get_issues(username) issues = get_issues(username)
worklogs = get_worklogs(issues) all_worklogs = get_all_worklogs(issues)
days = get_days_of_month(CHECK_MONTH_BACK) days = get_days_of_month(MONTHS_BACK)
worklogs = get_month_tickets(worklogs, days, CHECK_MONTH_BACK) print(all_worklogs)
omnimat_string = get_month_view(worklogs) worklogs = get_worklogs_for_days(all_worklogs, days)
print(omnimat_string) print(worklogs)
else: month_view = get_month_view(worklogs)
for username in USERNAMES: print(month_view)
issues = get_issues(username) return
worklogs = get_worklogs(issues) for username in USERNAMES:
today = datetime.date.today() issues = get_issues(username)
days, days_second_part = get_days(today) all_worklogs = get_all_worklogs(issues)
week_worklogs = get_week_tickets(worklogs, days) today = datetime.date.today()
omnimat_string = "" days, days_second_part = get_days(today)
worklogs = get_worklogs_for_days(all_worklogs, days)
for worklog in week_worklogs: omnimat_string = ""
if worklog["ticket_id"] not in omnimat_string:
omnimat_string += worklog["ticket_id"] + '\n'
omnimat_string = ""
if days_second_part:
second_omnimat_string = ""
worklogs_second_part = get_week_tickets(worklogs, days_second_part)
for worklog in week_worklogs:
if worklog["ticket_id"] not in second_omnimat_string:
second_omnimat_string += worklog["ticket_id"] + '\n'
print(worklogs)
for worklog in worklogs:
if worklog["ticket_id"] not in omnimat_string:
omnimat_string += worklog["ticket_id"] + '\n'
if days_second_part:
second_omnimat_string = ""
worklogs_second_part = get_worklogs_for_days(all_worklogs, days_second_part)
for worklog in worklogs:
if worklog["ticket_id"] not in second_omnimat_string:
second_omnimat_string += worklog["ticket_id"] + '\n'
if VERBOSE:
print('Issues of the user:')
print(json.dumps(issues, indent=4))
print(f"Worklogs for the time period:")
print(json.dumps(worklogs, indent=4))
print("Days:")
print(days)
print(f"Omnimat string:")
print(omnimat_string)
if days_second_part:
if VERBOSE: if VERBOSE:
print('Issues of the user:') print(f"Worklogs for the weeks 2nd part:")
print(json.dumps(issues, indent=4)) print(json.dumps(worklogs_second_part, indent=4))
print(f"Worklogs for the week:")
print(json.dumps(week_worklogs, indent=4))
print("Days:") print("Days:")
print(days) print(days_second_part)
print(f"Omnimat string:") print(f"Omnimat string:")
print(omnimat_string) print(second_omnimat_string)
if days_second_part:
if VERBOSE:
print(f"Worklogs for the weeks 2nd part:")
print(json.dumps(worklogs_second_part, indent=4))
print("Days:")
print(days_second_part)
print(f"Omnimat string:")
print(omnimat_string)
if __name__ == '__main__': if __name__ == '__main__':
main() main()

View File

@@ -1,43 +1,23 @@
import datetime import datetime
#code of month branch def get_days_of_month(months_back=0):
def get_days_of_month(previous_month=False): # set the current day to the first day of the current month
today = datetime.date.today() # and loop for the days until the month changes
start_of_month = today.replace(day=1) current_day = datetime.datetime.today().replace(day=1)
end_of_month = today.replace(day=28)+datetime.timedelta(days=4) current_month = current_day.month
end_of_month -= datetime.timedelta(days=end_of_month.day)
days = [] 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(str(current_day).split(' ')[0])
current_day += datetime.timedelta(days=1)
# minus one month
if previous_month == True:
start_of_month -= datetime.timedelta(days=1)
start_of_month = start_of_month.replace(day=1)
end_of_month = start_of_month
end_of_month = today.replace(day=28)+datetime.timedelta(days=4)
end_of_month -= datetime.timedelta(days=end_of_month.day)
days.append(str(start_of_month))
while start_of_month != end_of_month:
start_of_month += datetime.timedelta(days=1)
days.append(str(start_of_month))
# returns all days of current month
return days return days
def get_month_tickets(worklogs, days, previous_month=False):
this_month_tickets = []
for worklog in worklogs:
worklog_date = datetime.datetime.strptime(
worklog["date"].split('T')[0], '%Y-%m-%d').date()
current_month = datetime.date.today().month
# minus one month
if previous_month == True:
current_month -= 1
worklog_month = str(worklog_date).split('-')[1]
if str(worklog_date) in days and int(worklog_month) == current_month:
this_month_tickets.append(worklog)
return this_month_tickets
def get_month_view(worklogs): def get_month_view(worklogs):
@@ -50,7 +30,7 @@ def get_month_view(worklogs):
week_number_end = week_number_start+datetime.timedelta(days=6) week_number_end = week_number_start+datetime.timedelta(days=6)
week_iso = week.isocalendar().week week_iso = week.isocalendar().week
omnimat_string = worklogs[0]["author"] month_view = worklogs[0]["author"]
for worklog in worklogs: for worklog in worklogs:
ticket = worklog["ticket_id"] ticket = worklog["ticket_id"]
@@ -59,13 +39,12 @@ def get_month_view(worklogs):
week_day = datetime.datetime.strptime(date, '%Y-%m-%d').date() week_day = datetime.datetime.strptime(date, '%Y-%m-%d').date()
if (week_day.isocalendar().week == week_iso): if (week_day.isocalendar().week == week_iso):
omnimat_string += "\nWeek " + str(week_iso)+"\tfrom "+week_number_start.__str__() + \ month_view += "\nWeek " + str(week_iso)+"\tfrom "+week_number_start.__str__() + \
"\tto "+week_number_end.__str__()+"\n\n" "\tto "+week_number_end.__str__()+"\n\n"
week_iso += 1 week_iso += 1
week_number_start += datetime.timedelta(days=7) week_number_start += datetime.timedelta(days=7)
week_number_end += datetime.timedelta(days=7) week_number_end += datetime.timedelta(days=7)
omnimat_string += ticket+'\tdate '+date+'\ttime '+timespent + '\n' month_view += ticket+'\tdate '+date+'\ttime '+timespent + '\n'
return omnimat_string return month_view
#end of code month branch