Skip to content

Commit 287c834

Browse files
committed
Reprocess old suse advisory in next import cycle
Signed-off-by: Keshav Priyadarshi <[email protected]>
1 parent 00354da commit 287c834

File tree

1 file changed

+25
-1
lines changed

1 file changed

+25
-1
lines changed

vulnerabilities/migrations/0075_alter_vulnerabilityseverity_options_and_more.py

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,14 @@
22

33
from django.db import migrations, models
44
from aboutcode.pipeline import LoopProgress
5+
from datetime import datetime
6+
from datetime import timezone
57

68

79
class Migration(migrations.Migration):
810
"""
911
Add url field to the VulnerabilitySeverity model and remove reference foreignkey
10-
relationship. Also, add new M2M 'severities' field in Vulnerability and
12+
relationship. Also, add new M2M 'severities' field in Vulnerability and
1113
AffectedByPackageRelatedVulnerability relationship.
1214
1315
To achieve this following model changes and data migrations are applied in chronological order:
@@ -16,10 +18,12 @@ class Migration(migrations.Migration):
1618
- Add 'severities' field to Vulnerability.
1719
- Add 'url' field to VulnerabilitySeverity.
1820
- Data migration to remove corrupted SUSE scores.
21+
- Data migration to enable reprocessing of old suse Advisory on next import.
1922
- Data migration to populate new VulnerabilitySeverity url field using reference.
2023
- Data migration to populate Vulnerability 'severities' M2M relationship.
2124
- Delete VulnerabilitySeverity reference field.
2225
"""
26+
2327
def remove_inaccurate_suse_score(apps, schema_editor):
2428
"""
2529
Remove inaccurate suse severity scores.
@@ -35,6 +39,22 @@ def reverse_remove_inaccurate_suse_score(apps, schema_editor):
3539
"""Reverse data migration not needed for inaccurate severity scores."""
3640
pass
3741

42+
def reprocess_suse_advisory_on_next_import(apps, schema_editor):
43+
"""Clear `date_imported` on old suse advisory to enable reprocessing on next suse import."""
44+
45+
print(f"\nEnable reprocess of old suse advisory on next import.")
46+
Advisory = apps.get_model("vulnerabilities", "Advisory")
47+
Advisory.objects.filter(
48+
created_by="vulnerabilities.importers.suse_scores.SUSESeverityScoreImporter"
49+
).update(date_imported=None)
50+
51+
def reverse_reprocess_suse_advisory_on_next_import(apps, schema_editor):
52+
"""Populate `date_imported` on old suse advisory to prevent reprocessing on next suse import."""
53+
Advisory = apps.get_model("vulnerabilities", "Advisory")
54+
Advisory.objects.filter(
55+
created_by="vulnerabilities.importers.suse_scores.SUSESeverityScoreImporter"
56+
).update(date_imported=datetime.now(timezone.utc))
57+
3858
def populate_severity_model_with_url(apps, schema_editor):
3959
"""Populate the new VulnerabilitySeverity `url` field using reference url"""
4060

@@ -181,6 +201,10 @@ def reverse_populate_vulnerability_model_with_severities(apps, schema_editor):
181201
code=remove_inaccurate_suse_score,
182202
reverse_code=reverse_remove_inaccurate_suse_score,
183203
),
204+
migrations.RunPython(
205+
code=reprocess_suse_advisory_on_next_import,
206+
reverse_code=reverse_reprocess_suse_advisory_on_next_import,
207+
),
184208
migrations.RunPython(
185209
code=populate_severity_model_with_url,
186210
reverse_code=reverse_populate_severity_model_reference_using_url,

0 commit comments

Comments
 (0)