|
| 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