Coverage for scripts / get_request_type.py: 0%
61 statements
« prev ^ index » next coverage.py v7.13.0, created at 2025-12-25 18:08 -0500
« prev ^ index » next coverage.py v7.13.0, created at 2025-12-25 18:08 -0500
1#!/usr/bin/env python3
2"""
3Get JSM request type details.
5Usage:
6 python get_request_type.py 1 25
7 python get_request_type.py 1 25 --output json
8 python get_request_type.py 1 25 --show-fields
9"""
11import sys
12import os
13import argparse
14import json
15from pathlib import Path
17sys.path.insert(0, str(Path(__file__).parent.parent.parent.parent / 'shared' / 'scripts' / 'lib'))
19from config_manager import get_jira_client
20from error_handler import print_error, JiraError
21from formatters import format_json
24def get_request_type(service_desk_id: str, request_type_id: str, profile: str = None) -> dict:
25 """
26 Get request type details.
28 Args:
29 service_desk_id: Service desk ID
30 request_type_id: Request type ID
31 profile: JIRA profile to use
33 Returns:
34 Request type data
35 """
36 client = get_jira_client(profile)
37 request_type = client.get_request_type(service_desk_id, request_type_id)
38 client.close()
40 return request_type
43def format_request_type_text(request_type: dict, show_fields: bool = False) -> None:
44 """
45 Format request type as human-readable text.
47 Args:
48 request_type: Request type data
49 show_fields: Show field information hint
50 """
51 print("Request Type Details:")
52 print()
53 print(f"ID: {request_type.get('id', '')}")
54 print(f"Name: {request_type.get('name', '')}")
55 print(f"Description: {request_type.get('description', '')}")
57 if 'helpText' in request_type:
58 print(f"Help Text: {request_type.get('helpText', '')}")
60 print()
61 print(f"Service Desk ID: {request_type.get('serviceDeskId', '')}")
62 print(f"Issue Type ID: {request_type.get('issueTypeId', '')}")
64 if 'groupIds' in request_type:
65 groups = request_type.get('groupIds', [])
66 print(f"Groups: {', '.join(groups) if groups else 'None'}")
68 if 'icon' in request_type:
69 icon = request_type.get('icon', {})
70 if 'id' in icon:
71 print()
72 print("Portal Configuration:")
73 print(f" Icon ID: {icon.get('id', '')}")
75 if show_fields:
76 print()
77 print("To see required fields:")
78 print(f" python get_request_type_fields.py {request_type.get('serviceDeskId', '')} {request_type.get('id', '')}")
81def format_request_type_json(request_type: dict) -> str:
82 """
83 Format request type as JSON.
85 Args:
86 request_type: Request type data
88 Returns:
89 JSON string
90 """
91 return format_json(request_type)
94def main():
95 parser = argparse.ArgumentParser(
96 description='Get JSM request type details',
97 epilog='Example: python get_request_type.py 1 25'
98 )
100 parser.add_argument('service_desk_id',
101 help='Service desk ID')
102 parser.add_argument('request_type_id',
103 help='Request type ID')
104 parser.add_argument('--output', '-o',
105 choices=['text', 'json'],
106 default='text',
107 help='Output format (default: text)')
108 parser.add_argument('--show-fields', '-f',
109 action='store_true',
110 help='Show hint to view fields')
111 parser.add_argument('--profile',
112 help='JIRA profile to use (default: from config)')
114 args = parser.parse_args()
116 try:
117 # Fetch request type
118 request_type = get_request_type(
119 args.service_desk_id,
120 args.request_type_id,
121 profile=args.profile
122 )
124 # Output results
125 if args.output == 'json':
126 print(format_request_type_json(request_type))
127 else:
128 format_request_type_text(request_type, args.show_fields)
130 except JiraError as e:
131 print_error(e)
132 sys.exit(1)
133 except Exception as e:
134 print_error(e, debug=True)
135 sys.exit(1)
138if __name__ == '__main__':
139 main()