Skip to content

Commit 2ff0b11

Browse files
committed
Avoid triggering fresh db query on prefetched data
- The Package.vulnerabilities property triggers fresh db query even on prefetched data. Signed-off-by: Keshav Priyadarshi <[email protected]>
1 parent 064c42d commit 2ff0b11

File tree

4 files changed

+8
-9
lines changed

4 files changed

+8
-9
lines changed

vulnerabilities/management/commands/export.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
# See https://github.com/aboutcode-org/vulnerablecode for support or download.
77
# See https://aboutcode.org for more information about nexB OSS projects.
88
#
9+
import itertools
910
import logging
1011
from itertools import groupby
1112
from pathlib import Path
@@ -126,7 +127,11 @@ def export_data(self, base_path: Path):
126127
}
127128
package_vulnerabilities.append(package_data)
128129

129-
for vuln in pkg_version.vulnerabilities:
130+
vulnerabilities = itertools.chain(
131+
pkg_version.affected_by_vulnerabilities.all(),
132+
pkg_version.fixing_vulnerabilities.all(),
133+
)
134+
for vuln in vulnerabilities:
130135
vcid = vuln.vulnerability_id
131136
# do not write twice the same file
132137
if vcid in seen_vcid:

vulnerabilities/models.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -994,10 +994,6 @@ def next_non_vulnerable_version(self):
994994
next_non_vulnerable, _ = self.get_non_vulnerable_versions()
995995
return next_non_vulnerable.version if next_non_vulnerable else None
996996

997-
@property
998-
def vulnerabilities(self):
999-
return self.affected_by_vulnerabilities.all() | self.fixing_vulnerabilities.all()
1000-
1001997
@property
1002998
def latest_non_vulnerable_version(self):
1003999
"""

vulnerabilities/tests/test_data/export_command/aboutcode-vulnerabilities/ps/VCID-pst6-b358-aaap.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ severities:
66
- score: '7.0'
77
scoring_system: cvssv3_vector
88
scoring_elements: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
9-
published_at:
9+
published_at: None
1010
url: https://..
1111
weaknesses:
1212
- CWE-15

vulnerabilities/tests/test_models.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -428,9 +428,7 @@ def test_affecting_vulnerabilities_vulnerabilityqueryset_method(self):
428428
searched_for_package = self.package_pypi_redis_4_1_1
429429

430430
# Return a queryset of Vulnerabilities that affect this Package.
431-
this_package_vulnerabilities = (
432-
searched_for_package.vulnerabilities.affecting_vulnerabilities()
433-
)
431+
this_package_vulnerabilities = searched_for_package.affected_by
434432

435433
assert this_package_vulnerabilities[0] == self.vuln_VCID_g2fu_45jw_aaan
436434
assert this_package_vulnerabilities[1] == self.vuln_VCID_rqe1_dkmg_aaad

0 commit comments

Comments
 (0)