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

1#!/usr/bin/env python3 

2""" 

3Get JSM request type details. 

4 

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

10 

11import sys 

12import os 

13import argparse 

14import json 

15from pathlib import Path 

16 

17sys.path.insert(0, str(Path(__file__).parent.parent.parent.parent / 'shared' / 'scripts' / 'lib')) 

18 

19from config_manager import get_jira_client 

20from error_handler import print_error, JiraError 

21from formatters import format_json 

22 

23 

24def get_request_type(service_desk_id: str, request_type_id: str, profile: str = None) -> dict: 

25 """ 

26 Get request type details. 

27 

28 Args: 

29 service_desk_id: Service desk ID 

30 request_type_id: Request type ID 

31 profile: JIRA profile to use 

32 

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

39 

40 return request_type 

41 

42 

43def format_request_type_text(request_type: dict, show_fields: bool = False) -> None: 

44 """ 

45 Format request type as human-readable text. 

46 

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', '')}") 

56 

57 if 'helpText' in request_type: 

58 print(f"Help Text: {request_type.get('helpText', '')}") 

59 

60 print() 

61 print(f"Service Desk ID: {request_type.get('serviceDeskId', '')}") 

62 print(f"Issue Type ID: {request_type.get('issueTypeId', '')}") 

63 

64 if 'groupIds' in request_type: 

65 groups = request_type.get('groupIds', []) 

66 print(f"Groups: {', '.join(groups) if groups else 'None'}") 

67 

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', '')}") 

74 

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', '')}") 

79 

80 

81def format_request_type_json(request_type: dict) -> str: 

82 """ 

83 Format request type as JSON. 

84 

85 Args: 

86 request_type: Request type data 

87 

88 Returns: 

89 JSON string 

90 """ 

91 return format_json(request_type) 

92 

93 

94def main(): 

95 parser = argparse.ArgumentParser( 

96 description='Get JSM request type details', 

97 epilog='Example: python get_request_type.py 1 25' 

98 ) 

99 

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

113 

114 args = parser.parse_args() 

115 

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 ) 

123 

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) 

129 

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) 

136 

137 

138if __name__ == '__main__': 

139 main()