diff --git a/vulnerabilities/models.py b/vulnerabilities/models.py index 826d35a54..952f3ce86 100644 --- a/vulnerabilities/models.py +++ b/vulnerabilities/models.py @@ -2926,7 +2926,10 @@ def to_dict(self): class AdvisoryV2QuerySet(BaseQuerySet): def latest_for_avid(self, avid: str): - return self.get(avid=avid, is_latest=True) + try: + return self.get(avid=avid, is_latest=True) + except self.model.DoesNotExist: + return None def latest_per_avid(self): return self.filter(is_latest=True) diff --git a/vulnerabilities/tests/test_same_avid_different_content_id.py b/vulnerabilities/tests/test_same_avid_different_content_id.py index 6e60ab4c3..ae8900953 100644 --- a/vulnerabilities/tests/test_same_avid_different_content_id.py +++ b/vulnerabilities/tests/test_same_avid_different_content_id.py @@ -55,6 +55,14 @@ def test_latest_for_avid_returns_latest_by_date_collected( assert result.id != older.id +@pytest.mark.django_db +def test_latest_for_avid_returns_none_when_advisory_does_not_exist(django_assert_num_queries): + with django_assert_num_queries(1): + result = AdvisoryV2.objects.latest_for_avid("pysec/PYSEC-3000-0") + + assert result is None + + @pytest.mark.django_db def test_latest_for_avid_tie_breaks_by_id(advisory_factory, django_assert_num_queries): avid = "source/ADV-2"