Skip to content

Commit 824f7bc

Browse files
committed
fix: Convert UUIDField columns to uuid type for MariaDB
Converts UUIDField columns from char(32) to uuid type for MariaDB Django 5 compatibility. This migration converts 25 UUIDFields across 4 apps: - content_assignments: 6 fields - core: 1 field - subsidy_access_policy: 7 fields - subsidy_request: 7 fields See: https://docs.djangoproject.com/en/5.2/releases/5.0/#migrating-uuidfield
1 parent 1225033 commit 824f7bc

File tree

5 files changed

+211
-1
lines changed

5 files changed

+211
-1
lines changed

enterprise_access/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@
77
__all__ = ('celery_app',)
88

99

10-
__version__ = '1.0.0'
10+
__version__ = '1.0.1'
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# Generated migration for MariaDB UUID field conversion (Django 5.2)
2+
"""
3+
Migration to convert UUIDField from char(32) to uuid type for MariaDB compatibility.
4+
"""
5+
6+
from django.db import migrations
7+
8+
9+
def apply_mariadb_migration(apps, schema_editor):
10+
connection = schema_editor.connection
11+
if connection.vendor != 'mysql':
12+
return
13+
with connection.cursor() as cursor:
14+
cursor.execute("SELECT VERSION()")
15+
version = cursor.fetchone()[0]
16+
if 'mariadb' not in version.lower():
17+
return
18+
with connection.cursor() as cursor:
19+
cursor.execute("ALTER TABLE content_assignments_assignment MODIFY uuid uuid NOT NULL")
20+
cursor.execute("ALTER TABLE content_assignments_assignment MODIFY enterprise_customer_uuid uuid NOT NULL")
21+
cursor.execute("ALTER TABLE content_assignments_learnercontentassignment MODIFY uuid uuid NOT NULL")
22+
cursor.execute("ALTER TABLE content_assignments_learnercontentassignment MODIFY transaction_uuid uuid NULL")
23+
cursor.execute("ALTER TABLE content_assignments_learnercontentassignment MODIFY allocation_batch_id uuid NULL")
24+
cursor.execute("ALTER TABLE content_assignments_assignmentconfiguration MODIFY uuid uuid NOT NULL")
25+
26+
27+
def reverse_mariadb_migration(apps, schema_editor):
28+
connection = schema_editor.connection
29+
if connection.vendor != 'mysql':
30+
return
31+
with connection.cursor() as cursor:
32+
cursor.execute("SELECT VERSION()")
33+
version = cursor.fetchone()[0]
34+
if 'mariadb' not in version.lower():
35+
return
36+
with connection.cursor() as cursor:
37+
cursor.execute("ALTER TABLE content_assignments_assignment MODIFY uuid char(32) NOT NULL")
38+
cursor.execute("ALTER TABLE content_assignments_assignment MODIFY enterprise_customer_uuid char(32) NOT NULL")
39+
cursor.execute("ALTER TABLE content_assignments_learnercontentassignment MODIFY uuid char(32) NOT NULL")
40+
cursor.execute("ALTER TABLE content_assignments_learnercontentassignment MODIFY transaction_uuid char(32) NULL")
41+
cursor.execute("ALTER TABLE content_assignments_learnercontentassignment MODIFY allocation_batch_id char(32) NULL")
42+
cursor.execute("ALTER TABLE content_assignments_assignmentconfiguration MODIFY uuid char(32) NOT NULL")
43+
44+
45+
class Migration(migrations.Migration):
46+
dependencies = [
47+
('content_assignments', '0023_historicallearnercontentassignment_is_assigned_course_run_and_more'),
48+
]
49+
operations = [
50+
migrations.RunPython(
51+
code=apply_mariadb_migration,
52+
reverse_code=reverse_mariadb_migration,
53+
),
54+
]
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# Generated migration for MariaDB UUID field conversion (Django 5.2)
2+
"""
3+
Migration to convert UUIDField from char(32) to uuid type for MariaDB compatibility.
4+
"""
5+
6+
from django.db import migrations
7+
8+
9+
def apply_mariadb_migration(apps, schema_editor):
10+
connection = schema_editor.connection
11+
if connection.vendor != 'mysql':
12+
return
13+
with connection.cursor() as cursor:
14+
cursor.execute("SELECT VERSION()")
15+
version = cursor.fetchone()[0]
16+
if 'mariadb' not in version.lower():
17+
return
18+
with connection.cursor() as cursor:
19+
cursor.execute("ALTER TABLE core_user MODIFY enterprise_customer_uuid uuid NULL")
20+
21+
22+
def reverse_mariadb_migration(apps, schema_editor):
23+
connection = schema_editor.connection
24+
if connection.vendor != 'mysql':
25+
return
26+
with connection.cursor() as cursor:
27+
cursor.execute("SELECT VERSION()")
28+
version = cursor.fetchone()[0]
29+
if 'mariadb' not in version.lower():
30+
return
31+
with connection.cursor() as cursor:
32+
cursor.execute("ALTER TABLE core_user MODIFY enterprise_customer_uuid char(32) NULL")
33+
34+
35+
class Migration(migrations.Migration):
36+
dependencies = [
37+
('core', '0004_auth_user_indexes'),
38+
]
39+
operations = [
40+
migrations.RunPython(
41+
code=apply_mariadb_migration,
42+
reverse_code=reverse_mariadb_migration,
43+
),
44+
]
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# Generated migration for MariaDB UUID field conversion (Django 5.2)
2+
"""
3+
Migration to convert UUIDField from char(32) to uuid type for MariaDB compatibility.
4+
"""
5+
6+
from django.db import migrations
7+
8+
9+
def apply_mariadb_migration(apps, schema_editor):
10+
connection = schema_editor.connection
11+
if connection.vendor != 'mysql':
12+
return
13+
with connection.cursor() as cursor:
14+
cursor.execute("SELECT VERSION()")
15+
version = cursor.fetchone()[0]
16+
if 'mariadb' not in version.lower():
17+
return
18+
with connection.cursor() as cursor:
19+
cursor.execute("ALTER TABLE subsidy_access_policy_subsidyaccesspolicy MODIFY uuid uuid NOT NULL")
20+
cursor.execute("ALTER TABLE subsidy_access_policy_subsidyaccesspolicy MODIFY enterprise_customer_uuid uuid NOT NULL")
21+
cursor.execute("ALTER TABLE subsidy_access_policy_subsidyaccesspolicy MODIFY catalog_uuid uuid NOT NULL")
22+
cursor.execute("ALTER TABLE subsidy_access_policy_subsidyaccesspolicy MODIFY subsidy_uuid uuid NOT NULL")
23+
cursor.execute("ALTER TABLE subsidy_access_policy_groupassociation MODIFY enterprise_group_uuid uuid NOT NULL")
24+
cursor.execute("ALTER TABLE subsidy_access_policy_subsidyaccesspolicyredemptioncount MODIFY uuid uuid NOT NULL")
25+
cursor.execute("ALTER TABLE subsidy_access_policy_subsidyaccesspolicyredemptioncount MODIFY transaction_uuid uuid NOT NULL")
26+
27+
28+
def reverse_mariadb_migration(apps, schema_editor):
29+
connection = schema_editor.connection
30+
if connection.vendor != 'mysql':
31+
return
32+
with connection.cursor() as cursor:
33+
cursor.execute("SELECT VERSION()")
34+
version = cursor.fetchone()[0]
35+
if 'mariadb' not in version.lower():
36+
return
37+
with connection.cursor() as cursor:
38+
cursor.execute("ALTER TABLE subsidy_access_policy_subsidyaccesspolicy MODIFY uuid char(32) NOT NULL")
39+
cursor.execute("ALTER TABLE subsidy_access_policy_subsidyaccesspolicy MODIFY enterprise_customer_uuid char(32) NOT NULL")
40+
cursor.execute("ALTER TABLE subsidy_access_policy_subsidyaccesspolicy MODIFY catalog_uuid char(32) NOT NULL")
41+
cursor.execute("ALTER TABLE subsidy_access_policy_subsidyaccesspolicy MODIFY subsidy_uuid char(32) NOT NULL")
42+
cursor.execute("ALTER TABLE subsidy_access_policy_groupassociation MODIFY enterprise_group_uuid char(32) NOT NULL")
43+
cursor.execute("ALTER TABLE subsidy_access_policy_subsidyaccesspolicyredemptioncount MODIFY uuid char(32) NOT NULL")
44+
cursor.execute("ALTER TABLE subsidy_access_policy_subsidyaccesspolicyredemptioncount MODIFY transaction_uuid char(32) NOT NULL")
45+
46+
47+
class Migration(migrations.Migration):
48+
dependencies = [
49+
('subsidy_access_policy', '0029_historicalsubsidyaccesspolicy_learner_credit_request_config_and_more'),
50+
]
51+
operations = [
52+
migrations.RunPython(
53+
code=apply_mariadb_migration,
54+
reverse_code=reverse_mariadb_migration,
55+
),
56+
]
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# Generated migration for MariaDB UUID field conversion (Django 5.2)
2+
"""
3+
Migration to convert UUIDField from char(32) to uuid type for MariaDB compatibility.
4+
"""
5+
6+
from django.db import migrations
7+
8+
9+
def apply_mariadb_migration(apps, schema_editor):
10+
connection = schema_editor.connection
11+
if connection.vendor != 'mysql':
12+
return
13+
with connection.cursor() as cursor:
14+
cursor.execute("SELECT VERSION()")
15+
version = cursor.fetchone()[0]
16+
if 'mariadb' not in version.lower():
17+
return
18+
with connection.cursor() as cursor:
19+
cursor.execute("ALTER TABLE subsidy_request_subsidyrequest MODIFY uuid uuid NOT NULL")
20+
cursor.execute("ALTER TABLE subsidy_request_subsidyrequest MODIFY enterprise_customer_uuid uuid NOT NULL")
21+
cursor.execute("ALTER TABLE subsidy_request_couponcoderequest MODIFY subscription_plan_uuid uuid NOT NULL")
22+
cursor.execute("ALTER TABLE subsidy_request_couponcoderequest MODIFY license_uuid uuid NULL")
23+
cursor.execute("ALTER TABLE subsidy_request_learnercreditrequest MODIFY enterprise_customer_uuid uuid NOT NULL")
24+
cursor.execute("ALTER TABLE subsidy_request_learnercreditrequest MODIFY uuid uuid NOT NULL")
25+
cursor.execute("ALTER TABLE subsidy_request_couponcoderequest MODIFY uuid uuid NOT NULL")
26+
27+
28+
def reverse_mariadb_migration(apps, schema_editor):
29+
connection = schema_editor.connection
30+
if connection.vendor != 'mysql':
31+
return
32+
with connection.cursor() as cursor:
33+
cursor.execute("SELECT VERSION()")
34+
version = cursor.fetchone()[0]
35+
if 'mariadb' not in version.lower():
36+
return
37+
with connection.cursor() as cursor:
38+
cursor.execute("ALTER TABLE subsidy_request_subsidyrequest MODIFY uuid char(32) NOT NULL")
39+
cursor.execute("ALTER TABLE subsidy_request_subsidyrequest MODIFY enterprise_customer_uuid char(32) NOT NULL")
40+
cursor.execute("ALTER TABLE subsidy_request_couponcoderequest MODIFY subscription_plan_uuid char(32) NOT NULL")
41+
cursor.execute("ALTER TABLE subsidy_request_couponcoderequest MODIFY license_uuid char(32) NULL")
42+
cursor.execute("ALTER TABLE subsidy_request_learnercreditrequest MODIFY enterprise_customer_uuid char(32) NOT NULL")
43+
cursor.execute("ALTER TABLE subsidy_request_learnercreditrequest MODIFY uuid char(32) NOT NULL")
44+
cursor.execute("ALTER TABLE subsidy_request_couponcoderequest MODIFY uuid char(32) NOT NULL")
45+
46+
47+
class Migration(migrations.Migration):
48+
dependencies = [
49+
('subsidy_request', '0021_alter_historicallearnercreditrequestactions_error_reason_and_more'),
50+
]
51+
operations = [
52+
migrations.RunPython(
53+
code=apply_mariadb_migration,
54+
reverse_code=reverse_mariadb_migration,
55+
),
56+
]

0 commit comments

Comments
 (0)