Skip to content

Commit 163650b

Browse files
committed
Remove V1 code
Signed-off-by: Tushar Goel <tushar.goel.dav@gmail.com>
1 parent 67fa8b2 commit 163650b

5 files changed

Lines changed: 87 additions & 285 deletions

File tree

‎vulnerabilities/migrations/0138_remove_advisoryrelatedalias_advisory_and_more.py‎

Lines changed: 0 additions & 196 deletions
This file was deleted.
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
# Generated by Django 5.2.11 on 2026-10-12 08:32
2+
3+
from django.db import migrations
4+
5+
# V1 models/tables removed in favor of AdvisoryV2 / PackageV2.
6+
# Use SeparateDatabaseAndState so:
7+
# - state is updated with DeleteModel
8+
# - database uses DROP TABLE IF EXISTS (tables may already be gone on some envs)
9+
# Autogenerated RemoveField + AlterUniqueTogether ordering is invalid and fails
10+
# when fields are removed before unique_together is cleared, or when tables are
11+
# already missing.
12+
13+
V1_TABLES = [
14+
# Through / join tables first
15+
"vulnerabilities_advisoryrelatedalias",
16+
"vulnerabilities_todorelatedadvisory",
17+
"vulnerabilities_affectedbypackagerelatedvulnerabilit_severities",
18+
"vulnerabilities_affectedbypackagerelatedvulnerability",
19+
"vulnerabilities_fixingpackagerelatedvulnerability",
20+
"vulnerabilities_vulnerabilityrelatedreference",
21+
"vulnerabilities_weakness_vulnerabilities",
22+
"vulnerabilities_vulnerabilityreference_vulnerabilities",
23+
"vulnerabilities_vulnerability_severities",
24+
"vulnerabilities_vulnerability_references",
25+
# Dependent models
26+
"vulnerabilities_codefix",
27+
"vulnerabilities_exploit",
28+
"vulnerabilities_packagechangelog",
29+
"vulnerabilities_vulnerabilitychangelog",
30+
"vulnerabilities_alias",
31+
"vulnerabilities_weakness",
32+
"vulnerabilities_vulnerabilityseverity",
33+
"vulnerabilities_vulnerabilityreference",
34+
"vulnerabilities_advisorytodo",
35+
"vulnerabilities_package",
36+
"vulnerabilities_advisory",
37+
"vulnerabilities_vulnerability",
38+
]
39+
40+
41+
def drop_v1_tables(apps, schema_editor):
42+
quote = schema_editor.quote_name
43+
with schema_editor.connection.cursor() as cursor:
44+
for table in V1_TABLES:
45+
cursor.execute(f"DROP TABLE IF EXISTS {quote(table)} CASCADE")
46+
47+
48+
class Migration(migrations.Migration):
49+
50+
dependencies = [
51+
("vulnerabilities", "0144_remove_advisoryv2_advisory_latest_by_avid_idx_and_more"),
52+
]
53+
54+
operations = [
55+
migrations.SeparateDatabaseAndState(
56+
database_operations=[
57+
migrations.RunPython(drop_v1_tables, migrations.RunPython.noop),
58+
],
59+
state_operations=[
60+
migrations.DeleteModel(name="AdvisoryRelatedAlias"),
61+
migrations.DeleteModel(name="ToDoRelatedAdvisory"),
62+
migrations.DeleteModel(name="AdvisoryToDo"),
63+
migrations.DeleteModel(name="AffectedByPackageRelatedVulnerability"),
64+
migrations.DeleteModel(name="FixingPackageRelatedVulnerability"),
65+
migrations.DeleteModel(name="VulnerabilityRelatedReference"),
66+
migrations.DeleteModel(name="CodeFix"),
67+
migrations.DeleteModel(name="Exploit"),
68+
migrations.DeleteModel(name="PackageChangeLog"),
69+
migrations.DeleteModel(name="VulnerabilityChangeLog"),
70+
migrations.DeleteModel(name="Alias"),
71+
migrations.DeleteModel(name="Weakness"),
72+
migrations.DeleteModel(name="VulnerabilitySeverity"),
73+
migrations.DeleteModel(name="VulnerabilityReference"),
74+
migrations.DeleteModel(name="Package"),
75+
migrations.DeleteModel(name="Advisory"),
76+
migrations.DeleteModel(name="Vulnerability"),
77+
],
78+
),
79+
]

‎vulnerabilities/tests/test_data_migrations.py‎

Lines changed: 4 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,13 @@
77
# See https://aboutcode.org for more information about nexB OSS projects.
88
#
99

10-
from datetime import datetime
11-
1210
from django.apps import apps
13-
from django.db import IntegrityError
1411
from django.db import connection
1512
from django.db.migrations.executor import MigrationExecutor
1613
from django.db.models import Count
1714
from django.test import TestCase
18-
from django.utils import timezone
19-
from packageurl import PackageURL
20-
from univers.version_range import VersionRange
2115

2216
from vulnerabilities import severity_systems
23-
from vulnerabilities.utils import purl_to_dict
2417

2518

2619
class TestMigrations(TestCase):
@@ -59,83 +52,8 @@ def setUpBeforeMigration(self, apps):
5952
pass
6053

6154

62-
class TestCodeCommitMigration(TestMigrations):
63-
"""
64-
Tests the migration that introduces the CodeCommit model
65-
and adds new ManyToMany fields to ImpactedPackage ( affecting_commits, fixed_by_commits ).
66-
"""
67-
68-
app_name = "vulnerabilities"
69-
migrate_from = "0102_alter_impactedpackage_affecting_vers_and_more"
70-
migrate_to = "0103_codecommit_impactedpackage_affecting_commits_and_more"
71-
72-
def setUpBeforeMigration(self, apps):
73-
"""
74-
Prepare old data before migration — this should be destroyed afterward.
75-
"""
76-
ImpactedPackage = apps.get_model("vulnerabilities", "ImpactedPackage")
77-
AdvisoryV2 = apps.get_model("vulnerabilities", "AdvisoryV2")
78-
79-
date = datetime.now()
80-
adv = AdvisoryV2.objects.create(
81-
unique_content_id="old_adv",
82-
url="https://old.example.com",
83-
summary="Old advisory",
84-
date_collected=date,
85-
advisory_id="old_adv",
86-
avid="test_pipeline/old_adv",
87-
datasource_id="test_pipeline",
88-
# pipeline_id="test_pipeline_v2",
89-
)
90-
ImpactedPackage.objects.create(advisory=adv, base_purl="pkg:pypi/oldpkg")
91-
92-
def test_unique_constraint_on_commit_hash_and_vcs_url(self):
93-
"""Ensure the (commit_hash, vcs_url) uniqueness constraint works."""
94-
CodeCommit = self.apps.get_model("vulnerabilities", "CodeCommit")
95-
96-
CodeCommit.objects.create(
97-
commit_hash="abc123",
98-
vcs_url="https://github.com/example/repo.git",
99-
commit_rank="0",
100-
commit_author="tester",
101-
commit_message="message 1",
102-
commit_date=datetime.now(),
103-
)
104-
105-
with self.assertRaises(IntegrityError):
106-
CodeCommit.objects.create(
107-
commit_hash="abc123",
108-
vcs_url="https://github.com/example/repo.git",
109-
)
110-
111-
def test_m2m_relationships_work(self):
112-
"""Ensure that the new M2M relationships can store data."""
113-
ImpactedPackage = self.apps.get_model("vulnerabilities", "ImpactedPackage")
114-
AdvisoryV2 = self.apps.get_model("vulnerabilities", "AdvisoryV2")
115-
CodeCommit = self.apps.get_model("vulnerabilities", "CodeCommit")
116-
117-
adv = AdvisoryV2.objects.get(
118-
unique_content_id="old_adv",
119-
advisory_id="old_adv",
120-
avid="test_pipeline/old_adv",
121-
datasource_id="test_pipeline",
122-
)
123-
124-
impacted = ImpactedPackage.objects.get(advisory=adv, base_purl="pkg:pypi/oldpkg")
125-
commit1 = CodeCommit.objects.create(
126-
commit_hash="def456",
127-
vcs_url="https://example.com/repo.git",
128-
)
129-
commit2 = CodeCommit.objects.create(
130-
commit_hash="eef456",
131-
vcs_url="https://example.com/repo.git",
132-
)
133-
134-
impacted.affecting_commits.add(commit1)
135-
impacted.fixed_by_commits.add(commit2)
136-
137-
self.assertIn(commit1, impacted.affecting_commits.all())
138-
self.assertIn(commit2, impacted.fixed_by_commits.all())
55+
# TestCodeCommitMigration removed: CodeCommit was deleted in 0105, and migration
56+
# 0145 irreversibly drops V1 tables so reversing to 0102/0103 is no longer possible.
13957

14058

14159
class TestLatestAdvisoryV2Migration(TestMigrations):
@@ -523,7 +441,8 @@ def test_severity_value_cleaned(self):
523441

524442
def test_advisory_content_id_recomputed(self):
525443
self.advisory1.refresh_from_db()
444+
# Hash excludes url/advisory_id (compute_content_id_v2); severity value cleaned to "".
526445
self.assertEqual(
527446
self.advisory1.unique_content_id,
528-
"a15d4651cb05e3513c12263a11e34bd9103f68833cac8f7ffdbbd71b9cb4cf16",
447+
"885d5cc15389a644089516b7047dff3716f666a0219befe32938777ae5e686fb",
529448
)

0 commit comments

Comments
 (0)