Skip to content

Commit 652f667

Browse files
author
Gonchik Tsymzhitov
committed
Jira: add method all screen fields
1 parent b938b1f commit 652f667

File tree

2 files changed

+65
-0
lines changed

2 files changed

+65
-0
lines changed

atlassian/jira.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -715,6 +715,14 @@ def create_custom_field(self, name, type, search_key=None, description=None):
715715
data['description'] = description
716716
return self.post(url, data=data)
717717

718+
def get_all_screens(self):
719+
"""
720+
Get all available screens from Jira
721+
:return: list of json elements of screen with field id, name. description
722+
"""
723+
url = 'rest/api/2/screens'
724+
return self.get(url)
725+
718726
def get_all_available_screen_fields(self, screen_id):
719727
"""
720728
Get all available fields by screen id
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
from atlassian import Jira
2+
import logging
3+
4+
"""
5+
That example shows how to find the same screen fields based on fields number or hash of orders.
6+
used python 3 string forms f'{variable}'
7+
"""
8+
9+
logging.basicConfig(level=logging.ERROR)
10+
11+
jira = Jira(
12+
url="jira.example.com",
13+
username="username",
14+
password="********",
15+
timeout=10)
16+
17+
18+
def extract_count(json):
19+
try:
20+
# Also convert to int since update_time will be string. When comparing
21+
# strings, "10" is smaller than "2".
22+
return int(json['available_fields_count'])
23+
except KeyError:
24+
return 0
25+
26+
27+
all_screens = jira.get_all_screens()
28+
screens = list()
29+
count_fields_per_screen = list()
30+
hashes = list()
31+
for screen in all_screens:
32+
screen_id = screen.get("id")
33+
available_screen_fields = jira.get_all_available_screen_fields(screen_id=screen_id)
34+
field_ids = [x.get("id") for x in available_screen_fields]
35+
number_fields = len(available_screen_fields)
36+
hash_field = hash(tuple(field_ids))
37+
hashes.append(hash_field)
38+
screens.append({"screen_id": screen_id,
39+
"available_fields_count": number_fields,
40+
"available_fields_hash": hash_field,
41+
"available_fields": field_ids})
42+
count_fields_per_screen.append(number_fields)
43+
print(f"Number of available screen fields {number_fields} for screen with name {screen.get('name')}")
44+
45+
screens.sort(key=extract_count, reverse=True)
46+
flipped_fields = {}
47+
48+
print("The same screen of fields based on the count")
49+
for x in screens:
50+
if count_fields_per_screen.count(x['available_fields_count']) > 1:
51+
print(f"Please, check {jira.url}/secure/admin/ConfigureFieldScreen.jspa?id={x['screen_id']}")
52+
53+
print("=" * 12)
54+
print("The same field screens based on the hash")
55+
for x in screens:
56+
if hashes.count(x['available_fields_hash']) > 1:
57+
print(f"Please, check {jira.url}/secure/admin/ConfigureFieldScreen.jspa?id={x['screen_id']}")

0 commit comments

Comments
 (0)