Skip to content
Snippets Groups Projects
Commit 1552134f authored by stvn's avatar stvn
Browse files

Merge PR #144 bd03/fix-migration

* Commits:
  fix: Manually backfill config_id UUIDs again
parents 20fb1ed4 42a9e342
Branches
No related tags found
No related merge requests found
"""
Backfill empty config_id records
We need to do this with raw SQL,
otherwise the model fails upon instantiation,
as the empty string is an invalid UUID.
"""
import uuid
from django.db import connection
from django.db import migrations
sql_forward = """\
UPDATE
lti_consumer_lticonfiguration
SET
config_id = %s
WHERE
id = %s
;\
"""
sql_select_empty = """\
SELECT
id
FROM
lti_consumer_lticonfiguration
WHERE
config_id = ""
;\
"""
def _get_ids_with_empty_uuid():
"""
Retrieve the list of primary keys for each entry with a blank config_id
"""
with connection.cursor() as cursor:
cursor.execute(sql_select_empty)
for row in cursor.fetchall():
yield row[0]
def _create_config_ids(apps, schema_editor):
"""
Generate a UUID for rows missing one
Note: The model stores these without hyphens.
"""
for _id in _get_ids_with_empty_uuid():
config_id = uuid.uuid4()
config_id = str(config_id)
config_id = config_id.replace('-', '')
schema_editor.execute(sql_forward, [
config_id,
_id,
])
class Migration(migrations.Migration):
"""
Backfill empty config_id records
"""
dependencies = [
('lti_consumer', '0008_fix_uuid_backfill'),
]
operations = [
migrations.RunPython(_create_config_ids, atomic=False),
]
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment