diff --git a/README.rst b/README.rst index 65525e3bbe9873c3c3cd1cac12ed8175b5c5e19d..0c06b7161fb0d0b0947cfba98c66837c77a19d1d 100644 --- a/README.rst +++ b/README.rst @@ -298,6 +298,12 @@ Please do not report security issues in public. Send security concerns via email Changelog ========= +2.5.4 - 2021-02-XX +------------------ + +* Fix bug with `config_id` migration where an entry was created _during_ + the migration and did _not_ receive a valid UUID value. + 2.5.3 - 2021-01-26 ------------------ diff --git a/lti_consumer/migrations/0008_fix_uuid_backfill.py b/lti_consumer/migrations/0008_fix_uuid_backfill.py new file mode 100644 index 0000000000000000000000000000000000000000..e072f8fd1904b18d8dfdd9b0c2ed72bc4e7d2e6d --- /dev/null +++ b/lti_consumer/migrations/0008_fix_uuid_backfill.py @@ -0,0 +1,31 @@ +from django.db import migrations, models +import uuid + + +def create_config_ids(apps, schema_editor): + LtiConfiguration = apps.get_model('lti_consumer', 'LtiConfiguration') + broken = LtiConfiguration.objects.filter(config_id__isnull=True) + for config in broken: + config.config_id = uuid.uuid4() + config.save() + + +class Migration(migrations.Migration): + + dependencies = [ + ('lti_consumer', '0007_ltidlcontentitem'), + ] + + operations = [ + migrations.AlterField( + model_name='lticonfiguration', + name='config_id', + field=models.UUIDField(default=uuid.uuid4, editable=True, unique=True), + ), + migrations.RunPython(create_config_ids), + migrations.AlterField( + model_name='lticonfiguration', + name='config_id', + field=models.UUIDField(default=uuid.uuid4, editable=False, unique=True), + ), + ]