From 2f8badc03fb7ed6c30438a8e77a9d8fc5f9242fd Mon Sep 17 00:00:00 2001 From: Tobias Macey Date: Mon, 20 Oct 2025 12:10:19 -0400 Subject: [PATCH] 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: - openedx_ledger_transaction.idempotency_key See: https://docs.djangoproject.com/en/5.2/releases/5.0/#migrating-uuidfield --- openedx_ledger/__init__.py | 2 +- .../0016_mariadb_uuid_conversion.py | 44 +++++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 openedx_ledger/migrations/0016_mariadb_uuid_conversion.py diff --git a/openedx_ledger/__init__.py b/openedx_ledger/__init__.py index 84bbfba..359a444 100644 --- a/openedx_ledger/__init__.py +++ b/openedx_ledger/__init__.py @@ -1,4 +1,4 @@ """ A library that records transactions against a ledger, denominated in units of value. """ -__version__ = "1.6.12" +__version__ = "1.6.13" diff --git a/openedx_ledger/migrations/0016_mariadb_uuid_conversion.py b/openedx_ledger/migrations/0016_mariadb_uuid_conversion.py new file mode 100644 index 0000000..f173def --- /dev/null +++ b/openedx_ledger/migrations/0016_mariadb_uuid_conversion.py @@ -0,0 +1,44 @@ +# Generated migration for MariaDB UUID field conversion (Django 5.2) +""" +Migration to convert UUIDField from char(32) to uuid type for MariaDB compatibility. +""" + +from django.db import migrations + + +def apply_mariadb_migration(apps, schema_editor): + connection = schema_editor.connection + if connection.vendor != 'mysql': + return + with connection.cursor() as cursor: + cursor.execute("SELECT VERSION()") + version = cursor.fetchone()[0] + if 'mariadb' not in version.lower(): + return + with connection.cursor() as cursor: + cursor.execute("ALTER TABLE openedx_ledger_transaction MODIFY idempotency_key uuid NULL") + + +def reverse_mariadb_migration(apps, schema_editor): + connection = schema_editor.connection + if connection.vendor != 'mysql': + return + with connection.cursor() as cursor: + cursor.execute("SELECT VERSION()") + version = cursor.fetchone()[0] + if 'mariadb' not in version.lower(): + return + with connection.cursor() as cursor: + cursor.execute("ALTER TABLE openedx_ledger_transaction MODIFY idempotency_key char(32) NULL") + + +class Migration(migrations.Migration): + dependencies = [ + ('openedx_ledger', '0015_add_course_run_start_date_to_transaction'), + ] + operations = [ + migrations.RunPython( + code=apply_mariadb_migration, + reverse_code=reverse_mariadb_migration, + ), + ]