Skip to content

Commit e9e0273

Browse files
committed
Make Alias vulnerability field optional
Signed-off-by: Keshav Priyadarshi <git@keshav.space>
1 parent 4f6ffe8 commit e9e0273

2 files changed

Lines changed: 19 additions & 3 deletions

File tree

vulnerabilities/migrations/0089_migrate_advisory_aliases.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from aboutcode.pipeline import LoopProgress
1111
from django.db import migrations
1212
from django.db import models
13+
import django.db.models.deletion
1314

1415
"""
1516
Model and data migration for converting the Advisory aliases
@@ -85,6 +86,19 @@ def reverse_populate_new_advisory_aliases_field(apps, schema_editor):
8586
)
8687

8788
operations = [
89+
# Make vulnerability relation optional
90+
migrations.AlterField(
91+
model_name="alias",
92+
name="vulnerability",
93+
field=models.ForeignKey(
94+
blank=True,
95+
null=True,
96+
on_delete=django.db.models.deletion.SET_NULL,
97+
related_name="aliases",
98+
to="vulnerabilities.vulnerability",
99+
),
100+
),
101+
88102
# Rename aliases field to old_aliases
89103
migrations.AlterModelOptions(
90104
name="advisory",
@@ -109,7 +123,7 @@ def reverse_populate_new_advisory_aliases_field(apps, schema_editor):
109123
code=populate_new_advisory_aliases_field,
110124
reverse_code=reverse_populate_new_advisory_aliases_field,
111125
),
112-
# Delete old_alias field
126+
# Delete JSON aliases field
113127
migrations.RemoveField(
114128
model_name="advisory",
115129
name="old_aliases",

vulnerabilities/models.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1276,8 +1276,10 @@ class Alias(models.Model):
12761276

12771277
vulnerability = models.ForeignKey(
12781278
Vulnerability,
1279-
on_delete=models.CASCADE,
12801279
related_name="aliases",
1280+
on_delete=models.SET_NULL,
1281+
null=True,
1282+
blank=True,
12811283
)
12821284

12831285
objects = AliasQuerySet.as_manager()
@@ -1372,7 +1374,7 @@ def to_advisory_data(self) -> "AdvisoryData":
13721374
from vulnerabilities.importer import Reference
13731375

13741376
return AdvisoryData(
1375-
aliases=self.aliases,
1377+
aliases=[item.alias for item in self.aliases.all()],
13761378
summary=self.summary,
13771379
affected_packages=[
13781380
AffectedPackage.from_dict(pkg) for pkg in self.affected_packages if pkg

0 commit comments

Comments
 (0)