Function to get complete tree structure
def get_project_tree(host_url, username, password, project_key, n):
"""
This method is used to search for tree elements
Template parameters:
[project_key] the project key
Query parameters:
[element_path] the path to search in
"""
# The REST API path to search for tree elements
path_uri = '/rest/com.easesolutions.jira.plugins.requirements/1.0/tree/' + project_key + '?'
# The field-value pair/s that will be added to the query string
number_prefix_field_value = 'n=' + str(n)
# The query string to be added to the URI
query_string = number_prefix_field_value
# Send a GET request to search for tree elements
# Return result of the GET request
try:
return requests.get(host_url + path_uri + query_string, auth=HTTPBasicAuth(username, password))
except requests.exceptions.RequestException as e:
print e
Function to print folder structure
def print_folder_structure(folders):
# If folder has values then print the information of the folder
if folders:
print '\n%s %s' % ('Display name: ', folders[0]['name_display'])
print '%s %s' % ('Folder ID: ', folders[0]['id'])
print '%s %s' % ('Parent folder ID: ', folders[0]['parent'])
# Perform recursion if there is a folder under this folder
sub_folders = folders[0]['folders']
print_folder_structure(sub_folders)
Main
# ['SC'] project key parameter for the project to search the element
# Store the result of the POST request to [response]
response = get_project_tree(HOST_URL, USERNAME, PASSWORD, 'SC', 1)
# Check response if element info is returned
if response.status_code == 200:
# Get the value of the JSON response
# Pass the result to print_folder_structure method to print the folder structure of the found element
json_object = json.loads(response.text)
folders = json_object['folders']
print_folder_structure(folders)
else:
print 'Error code: ', response.status_code
print response.text
Refer to Constant variable for information of the following constant variable: [HOST_URL, USERNAME, PASSWORD]
Output
Display name: 1 GUI Specs
Folder ID: 1
Parent folder ID: -1
Display name: 1.1 Panel UI
Folder ID: 2
Parent folder ID: 1
Raw JSON response
{
"id": -1,
"folders": [
{
"name": "GUI Specs",
"description": "",
"id": 1,
"name_display": "1 GUI Specs",
"parent": -1,
"folders": [
{
"name": "Panel UI",
"description": "",
"id": 2,
"name_display": "1.1 Panel UI",
"parent": 1,
"folders": [],
"issues": [],
"position": 1
}
],
"issues": [],
"position": 1
}
],
"issues": []
}