| 1060 | |
| 1061 | |
| 1062 | def relate_aliases_with_advisories(aliases): |
| 1063 | from vulnerabilities.models import AdvisoryAlias |
| 1064 | from vulnerabilities.models import AdvisoryV2 |
| 1065 | |
| 1066 | aliases = set(aliases) |
| 1067 | |
| 1068 | found_aliases = AdvisoryAlias.objects.filter(alias__in=aliases).prefetch_related("advisories") |
| 1069 | |
| 1070 | found_alias_values = set(found_aliases.values_list("alias", flat=True)) |
| 1071 | |
| 1072 | alias_advisories = AdvisoryV2.objects.filter( |
| 1073 | aliases__alias__in=found_alias_values, |
| 1074 | is_latest=True, |
| 1075 | _all_impacts_unfurled_at__isnull=False, |
| 1076 | ).distinct() |
| 1077 | |
| 1078 | missing_aliases = aliases - found_alias_values |
| 1079 | |
| 1080 | advisory_id_advisories = AdvisoryV2.objects.filter( |
| 1081 | advisory_id__in=missing_aliases, |
| 1082 | _all_impacts_unfurled_at__isnull=False, |
| 1083 | ).latest_per_avid() |
| 1084 | |
| 1085 | advisories = set(alias_advisories) |
| 1086 | advisories.update(advisory_id_advisories) |
| 1087 | return advisories |
| 1088 | |
| 1089 | |
| 1090 | def build_alias_to_advisory_map(aliases_strs): |