Skip to content

Commit f303b10

Browse files
committed
Refine the ProjectDependencyTreeView implementation #1742
Signed-off-by: tdruez <[email protected]>
1 parent 43592e9 commit f303b10

File tree

2 files changed

+20
-16
lines changed

2 files changed

+20
-16
lines changed

scanpipe/tests/test_views.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1339,6 +1339,7 @@ def test_scanpipe_views_project_dependency_tree(self, mock_get_url):
13391339
"compliance_alert": "",
13401340
"has_compliance_issue": False,
13411341
"is_vulnerable": False,
1342+
"children": [],
13421343
}
13431344
],
13441345
}
@@ -1350,6 +1351,7 @@ def test_scanpipe_views_project_dependency_tree(self, mock_get_url):
13501351
"compliance_alert": "",
13511352
"has_compliance_issue": False,
13521353
"is_vulnerable": False,
1354+
"children": [],
13531355
},
13541356
],
13551357
}

scanpipe/views.py

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2546,34 +2546,31 @@ def get_context_data(self, **kwargs):
25462546
return context
25472547

25482548
def get_dependency_tree(self, project):
2549-
root_packages = project.discoveredpackages.root_packages().order_by("name")
2549+
root_packages = (
2550+
project.discoveredpackages.root_packages()
2551+
.order_by("name")
2552+
.only_package_url_fields(
2553+
extra=["project_id", "compliance_alert", "affected_by_vulnerabilities"]
2554+
)
2555+
)
25502556
project_children = [self.get_node(package) for package in root_packages]
25512557

25522558
# Dependencies with no assigned `for_packages`.
25532559
project_dependencies = project.discovereddependencies.project_dependencies()
25542560
for dependency in project_dependencies:
25552561
project_children.append({"name": dependency.package_url})
25562562

2557-
project_tree = {
2563+
dependency_tree = {
25582564
"name": project.name,
25592565
"children": project_children,
25602566
}
2561-
2562-
return project_tree
2567+
return dependency_tree
25632568

25642569
def get_node(self, package):
2565-
node = {
2566-
"name": str(package),
2567-
"url": package.get_absolute_url(),
2568-
"compliance_alert": package.compliance_alert,
2569-
"has_compliance_issue": package.has_compliance_issue,
2570-
"is_vulnerable": package.is_vulnerable,
2571-
}
2572-
25732570
# Resolved dependencies
25742571
children = [
25752572
self.get_node(child_package)
2576-
for child_package in package.children_packages.all()
2573+
for child_package in package.children_packages.all().order_by("name")
25772574
]
25782575

25792576
# Un-resolved dependencies
@@ -2586,7 +2583,12 @@ def get_node(self, package):
25862583
}
25872584
)
25882585

2589-
if children:
2590-
node["children"] = children
2591-
2586+
node = {
2587+
"name": str(package),
2588+
"url": package.get_absolute_url(),
2589+
"compliance_alert": package.compliance_alert,
2590+
"has_compliance_issue": package.has_compliance_issue,
2591+
"is_vulnerable": package.is_vulnerable,
2592+
"children": children,
2593+
}
25922594
return node

0 commit comments

Comments
 (0)