-
Notifications
You must be signed in to change notification settings - Fork 0
/
jira.py
45 lines (38 loc) · 1.25 KB
/
jira.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import utils
import config
import datetime
from operator import itemgetter
def strip_issue(issue):
return {
'url': '{}/browse/{}'.format(config.jira_url, issue['key']),
'summary': issue['fields']['summary'],
'assignee': issue['fields']['assignee']['name'],
'status': issue['fields']['status']['name'],
}
def string_template(item):
return '{url} {summary} @{assignee} `{status}`'.format(
url=item['url'],
summary=item['summary'],
assignee=config.jira_slack_mapping.get(item['assignee'], item['assignee']).lower(),
status=item['status']
)
def get():
response = utils.make_request(
'POST',
'{}/rest/api/2/search'.format(config.jira_url),
auth=(config.jira_login, config.jira_password),
json={
"jql": config.jira_jql,
"fields": ["summary", "status", "assignee"]
},
)
return response
def get_issues():
if datetime.datetime.today().weekday() == 0:
return None
result = get()['issues']
if not result:
return None
result = (strip_issue(x) for x in result)
result = '*Stuck issues*\n' + '\n'.join([string_template(x) for x in sorted(result, key=itemgetter('status'))])
return result