Skip to content

Commit 3d17c5d

Browse files
authored
Merge pull request #2335 from aboutcode-org/correct_logic_for_non_vuln_versions
Correct logic for non vuln versions
2 parents 6f83f06 + 9eaf6b2 commit 3d17c5d

1 file changed

Lines changed: 17 additions & 18 deletions

File tree

vulnerabilities/models.py

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3583,9 +3583,6 @@ def bulk_get_or_create_from_purls(self, purls: List[Union[PackageURL, str]]):
35833583
def only_vulnerable(self):
35843584
return self._vulnerable()
35853585

3586-
def only_non_vulnerable(self):
3587-
return self._not_vulnerable().filter(is_ghost=False)
3588-
35893586
def for_purl(self, purl):
35903587
"""
35913588
Return a queryset matching the ``purl`` Package URL.
@@ -3624,20 +3621,6 @@ def with_is_vulnerable(self):
36243621
)
36253622
)
36263623

3627-
def with_is_not_vulnerable(self):
3628-
"""
3629-
Annotate Package with ``is_not_vulnerable`` boolean attribute.
3630-
"""
3631-
return self.annotate(
3632-
is_not_vulnerable=Exists(
3633-
ImpactedPackageFixedBy.objects.filter(
3634-
package__pk=OuterRef("pk"),
3635-
impacted_package__advisory__is_latest=True,
3636-
impacted_package__advisory___all_impacts_unfurled_at__isnull=False,
3637-
)
3638-
)
3639-
)
3640-
36413624
def all_vulnerable(self):
36423625
latest_unfurled_impacts = ImpactedPackageAffecting.objects.filter(
36433626
package_id=OuterRef("pk"),
@@ -3790,9 +3773,25 @@ def get_non_vulnerable_versions(self):
37903773
if self.version_rank == 0:
37913774
self.calculate_version_rank
37923775

3776+
evaluated = Exists(
3777+
ImpactedPackageFixedBy.objects.filter(
3778+
package_id=OuterRef("pk"),
3779+
impacted_package__advisory__is_latest=True,
3780+
impacted_package__advisory___all_impacts_unfurled_at__isnull=False,
3781+
)
3782+
)
3783+
vulnerable = Exists(
3784+
ImpactedPackageAffecting.objects.filter(
3785+
package_id=OuterRef("pk"),
3786+
impacted_package__advisory__is_latest=True,
3787+
impacted_package__advisory___all_impacts_unfurled_at__isnull=False,
3788+
)
3789+
)
3790+
37933791
qs = (
37943792
PackageV2.objects.get_fixed_by_package_versions(self, fix=False)
3795-
.only_non_vulnerable()
3793+
.annotate(evaluated=evaluated, vulnerable=vulnerable)
3794+
.filter(evaluated=True, vulnerable=False, is_ghost=False)
37963795
.filter(version_rank__gt=self.version_rank)
37973796
.order_by("version_rank")
37983797
)

0 commit comments

Comments
 (0)