Skip to content

Commit cc7aa4e

Browse files
committed
Add data migration for VCIO API v3
Signed-off-by: tdruez <tdruez@aboutcode.org>
1 parent 0fd268f commit cc7aa4e

2 files changed

Lines changed: 40 additions & 2 deletions

File tree

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# Generated by Django 6.0.3 on 2026-04-14 11:10
2+
3+
from django.db import migrations
4+
from django.db.models import Q
5+
6+
7+
def add_advisory_id(apps, schema_editor):
8+
"""Copy vulnerability_id to advisory_id in affected_by_vulnerabilities entries."""
9+
DiscoveredPackage = apps.get_model("scanpipe", "DiscoveredPackage")
10+
DiscoveredDependency = apps.get_model("scanpipe", "DiscoveredDependency")
11+
EMPTY_VALUES = [None, [], ""]
12+
13+
vulnerable = ~Q(affected_by_vulnerabilities__in=EMPTY_VALUES)
14+
15+
for model in [DiscoveredPackage, DiscoveredDependency]:
16+
for instance in model.objects.filter(vulnerable):
17+
for entry in instance.affected_by_vulnerabilities:
18+
if "advisory_id" not in entry:
19+
entry["advisory_id"] = entry.get("vulnerability_id", "")
20+
instance.save(update_fields=["affected_by_vulnerabilities"])
21+
22+
23+
class Migration(migrations.Migration):
24+
25+
dependencies = [
26+
('scanpipe', '0079_apitoken_data'),
27+
]
28+
29+
operations = [
30+
migrations.RunPython(
31+
add_advisory_id,
32+
reverse_code=migrations.RunPython.noop,
33+
),
34+
]

scanpipe/tests/pipes/test_vulnerablecode.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,10 +79,14 @@ def test_scanpipe_pipes_vulnerablecode_filter_vulnerabilities(self):
7979
vulnerability1 = vulnerability_data[0]
8080
self.assertEqual("PYSEC-2024-28", vulnerability1.get("advisory_id"))
8181
ignore_set = {vulnerability1.get("advisory_id")}
82-
self.assertEqual(23, len(filter_vulnerabilities(vulnerability_data, ignore_set)))
82+
self.assertEqual(
83+
23, len(filter_vulnerabilities(vulnerability_data, ignore_set))
84+
)
8385

8486
ignore_set = {vulnerability1.get("aliases")[0]}
85-
self.assertEqual(23, len(filter_vulnerabilities(vulnerability_data, ignore_set)))
87+
self.assertEqual(
88+
23, len(filter_vulnerabilities(vulnerability_data, ignore_set))
89+
)
8690

8791
def test_scanpipe_pipes_vulnerablecode_chunked(self):
8892
result = list(chunked([1, 2, 3, 4, 5], 2))

0 commit comments

Comments
 (0)