@@ -10,38 +10,75 @@ class Migration(migrations.Migration):
1010 def drop_malformed_advisory_v2 (apps , _ ):
1111 AdvisoryV2 = apps .get_model ("vulnerabilities" , "AdvisoryV2" )
1212 AdvisoryAlias = apps .get_model ("vulnerabilities" , "AdvisoryAlias" )
13+ AdvisorySet = apps .get_model ("vulnerabilities" , "AdvisorySet" )
1314
1415 valid_alias_prefix = [
15- "cve-" , "osv-" , "xsa-" , "vsv" , "zbx-" , "zf2" , "vu#" , "gms-" , "usn-" ,
16- "sw-" , "ss-" , "ts-" , "osvdb-" , "ysa-" , "se-core-" , "pysec-" , "alpine-" ,
17- "dw2" , "go-" , "mal-" , "zdi-can" , "asa-" , "ezsa-" , "ghsl-" , "ghsa-" ,
18- "talos-" , "srcclr-sid-" , "bit-" , "gnutls-" , "rustsec-" , "snyk-" ,
19- "temp-" , "TYPO3-" , "wnpa-sec-" , "sa-core-" , "skcsirt-" , "flow-" , "gsd-"
16+ "cve-" ,
17+ "osv-" ,
18+ "xsa-" ,
19+ "vsv" ,
20+ "zbx-" ,
21+ "zf2" ,
22+ "vu#" ,
23+ "gms-" ,
24+ "usn-" ,
25+ "sw-" ,
26+ "ss-" ,
27+ "ts-" ,
28+ "osvdb-" ,
29+ "ysa-" ,
30+ "se-core-" ,
31+ "pysec-" ,
32+ "alpine-" ,
33+ "dw2" ,
34+ "go-" ,
35+ "mal-" ,
36+ "zdi-can" ,
37+ "asa-" ,
38+ "ezsa-" ,
39+ "ghsl-" ,
40+ "ghsa-" ,
41+ "talos-" ,
42+ "srcclr-sid-" ,
43+ "bit-" ,
44+ "gnutls-" ,
45+ "rustsec-" ,
46+ "snyk-" ,
47+ "temp-" ,
48+ "TYPO3-" ,
49+ "wnpa-sec-" ,
50+ "sa-core-" ,
51+ "skcsirt-" ,
52+ "flow-" ,
53+ "gsd-" ,
2054 ]
2155
22- target_importers = ["alpine_linux_importer_v2" ,
23- "fireeye_importer_v2" ,
24- "istio_importer_v2" ,
25- "mattermost_importer_v2" ]
56+ target_importers = [
57+ "alpine_linux_importer_v2" ,
58+ "fireeye_importer_v2" ,
59+ "istio_importer_v2" ,
60+ "mattermost_importer_v2" ,
61+ ]
2662 query = Q ()
2763 for alias_prefix in valid_alias_prefix :
2864 query |= Q (alias__istartswith = alias_prefix )
2965
3066 malformed_alias_ids = list (
31- AdvisoryAlias .objects .filter (
32- advisories__datasource_id__in = target_importers
33- ).exclude (query ).values_list ('id' , flat = True ).distinct ()
67+ AdvisoryAlias .objects .filter (advisories__datasource_id__in = target_importers )
68+ .exclude (query )
69+ .values_list ("id" , flat = True )
70+ .distinct ()
71+ )
72+
73+ advisories_to_delete = AdvisoryV2 .objects .filter (
74+ datasource_id__in = target_importers , aliases__id__in = malformed_alias_ids
3475 )
3576
36- AdvisoryV2 .objects .filter (
37- datasource_id__in = target_importers ,
38- aliases__id__in = malformed_alias_ids
39- ).delete ()
77+ AdvisorySet .objects .filter (primary_advisory__in = advisories_to_delete ).delete ()
78+
79+ advisories_to_delete .delete ()
4080
41- AdvisoryAlias .objects .filter (
42- id__in = malformed_alias_ids ,
43- advisories__isnull = True
44- ).delete ()
81+ AdvisoryAlias .objects .filter (id__in = malformed_alias_ids , advisories__isnull = True ).delete ()
4582
4683 operations = [
4784 migrations .RunPython (drop_malformed_advisory_v2 , reverse_code = migrations .RunPython .noop ),
0 commit comments