Skip to content

Commit 6e1e519

Browse files
author
Glenn Snyder
authored
Merge pull request #111 from Synamedia/rest-api-fixes-for-large-project-numbers
Fixed issues when there are >10 projects. Extended categories and for…
2 parents 8af1a48 + ab60a92 commit 6e1e519

File tree

1 file changed

+21
-7
lines changed

1 file changed

+21
-7
lines changed

blackduck/HubRestApi.py

100644100755
Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -243,8 +243,8 @@ def _get_role_url(self):
243243
def get_roles(self, parameters={}):
244244
url = self._get_role_url() + self._get_parameter_string(parameters)
245245
response = self.execute_get(url)
246-
return response.json()
247-
246+
return response.json()
247+
248248
def get_roles_url_from_user_or_group(self, user_or_group):
249249
# Given a user or user group object, return the 'roles' url
250250
roles_url = None
@@ -382,8 +382,8 @@ def get_user_groups(self, parameters={}):
382382
return response.json()
383383

384384
def get_user_group_by_name(self, group_name):
385-
groups = self.get_user_groups()
386-
for group in groups['items']:
385+
group_list = self.get_user_groups({"q": f"name:{group_name}"})
386+
for group in group_list['items']:
387387
if group['name'] == group_name:
388388
return group
389389

@@ -543,8 +543,8 @@ def find_component_info_for_protex_component(self, protex_component_id, protex_c
543543
#
544544
##
545545

546-
valid_categories = ['VERSION','CODE_LOCATIONS','COMPONENTS','SECURITY','FILES']
547-
valid_report_formats = ["CSV"]
546+
valid_categories = ['VERSION','CODE_LOCATIONS','COMPONENTS','SECURITY','FILES', 'ATTACHMENTS', 'CRYPTO_ALGORITHMS', 'PROJECT_VERSION_CUSTOM_FIELDS', 'BOM_COMPONENT_CUSTOM_FIELDS', 'LICENSE_TERM_FULFILLMENT']
547+
valid_report_formats = ["CSV", "JSON"]
548548
def create_version_reports(self, version, report_list, format="CSV"):
549549
assert all(list(map(lambda k: k in HubInstance.valid_categories, report_list))), "One or more selected report categories in {} are not valid ({})".format(
550550
report_list, HubInstance.valid_categories)
@@ -1036,7 +1036,7 @@ def assign_user_group_to_project(self, project_name, user_group_name, project_ro
10361036
project_url = project['_meta']['href']
10371037
assignable_user_groups_link = self.get_link(project, 'assignable-usergroups')
10381038
if assignable_user_groups_link:
1039-
assignable_user_groups_response = self.execute_get(assignable_user_groups_link)
1039+
assignable_user_groups_response = self.execute_get(f"{assignable_user_groups_link}?q=name:{user_group_name}")
10401040
assignable_user_groups = assignable_user_groups_response.json()
10411041

10421042
# TODO: What to do if the user group is already assigned to the project, and therefore
@@ -1080,6 +1080,20 @@ def assign_user_group_to_project(self, project_name, user_group_name, project_ro
10801080
else:
10811081
logger.warning("Did not find a project by the name {}".format(project_name))
10821082

1083+
def delete_user_group_from_project(self, project_name, user_group_name):
1084+
project = self.get_project_by_name(project_name)
1085+
1086+
if project:
1087+
project_url = project['_meta']['href']
1088+
1089+
user_group = self.get_user_group_by_name(user_group_name)
1090+
if user_group:
1091+
user_group_url = user_group['_meta']['href']
1092+
user_group_id = user_group_url.rsplit('/', 1)[-1]
1093+
1094+
project_user_group_url = f"{project_url}/usergroups/{user_group_id}"
1095+
self.execute_delete(project_user_group_url)
1096+
10831097
def assign_user_to_project(self, user_name, project_name, project_roles, limit=1000):
10841098
# Assign users to projects
10851099
project = self.get_project_by_name(project_name)

0 commit comments

Comments
 (0)