Created
March 6, 2020 00:23
-
-
Save sagarjhaa/5b7e624bf43abe78f0f6963cb1ebb359 to your computer and use it in GitHub Desktop.
python script to list all your redmines for a year
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import requests | |
from datetime import datetime | |
from collections import defaultdict | |
def get_redmines(username,password,redmineurl,projectname): | |
response = None | |
url = """https://{}:{}@{}/projects/{}/issues.json?utf8=✓s | |
'&limit=1000 | |
'&set_filter=1 | |
'&sort=assigned_to,id:desc | |
'&f[]=fixed_version_id | |
'&f[]=assigned_to_id&op[assigned_to_id]==&v[assigned_to_id][]=me&f[]= | |
'&c[]=project&c[]=tracker&c[]=status&c[]=priority&c[]=subject&c[]=assigned_to&c[]=fixed_version&c[]=category&c[]=updated_on&group_by=&t[]=""" | |
url = url.format(username,password,redmineurl,projectname) | |
response = requests.get(url).json() | |
return response | |
def display_issues(month,issues): | |
print(month) | |
for index,issue in enumerate(issues,1): | |
start_date = datetime.strptime(issue['created_on'].split('T')[0],'%Y-%m-%d').date() | |
if 'closed_on' in issue: | |
close_date = datetime.strptime(issue['closed_on'].split('T')[0],'%Y-%m-%d').date() | |
else: | |
close_date = 'OPEN' | |
print("{:3} | {:10} | {:10} | {} | {:30} | {}".format(index,str(start_date),str(close_date),issue['id'],issue['category']['name'],issue['subject'])) | |
print('-----'*30) | |
def populate_data(year,response): | |
group_by_month = defaultdict(list) | |
if response and 'issues' in response: | |
for index,issue in enumerate(response['issues'],1): | |
group_by_month[issue['fixed_version']['name']].append(issue) | |
else: | |
print('Error - {}'.format(response['errors'])) | |
for month in range(1,13): | |
month = 'R'+str(year)+'.'+str(month) | |
if month in group_by_month: | |
display_issues(month, group_by_month[month]) | |
# Change the username, password, redmine-url and the project-name. | |
response = get_redmines('username','password','redmine-url','project-name') | |
populate_data(year=20,response=response) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment