On 9/12/19 3:00 am, Stephen Finucane wrote:
--- /dev/null
+++ b/patchwork/migrations/0038_state_slug.py
@@ -0,0 +1,68 @@
+# -*- coding: utf-8 -*-
+
+from __future__ import unicode_literals
+
+from django.db import migrations, models, transaction
+from django.utils.text import slugify
+
+
+def validate_uniqueness(apps, schema_editor):
+    """Ensure all State.name entries are unique.
+
+    We need to do this before enforcing a uniqueness constraint.
+    """
+
+    State = apps.get_model('patchwork', 'State')
+
+    unique_count = len(State.objects.order_by().values_list(
+        'name', flat=True).distinct())
+    total_count = State.objects.count()
+
+    if unique_count != total_count:
+        raise Exception(
+            'You have non-unique States entries that need to be combined '
+            'before you can run this migration. This migration must be done '
+            'by hand. If you need assistance, please contact '
+            'patchw...@ozlabs.org')

I think the migration can still fail without printing a helpful exception message if two states have names that are different but still slugify to the same thing?

--
Andrew Donnellan              OzLabs, ADL Canberra
a...@linux.ibm.com             IBM Australia Limited

_______________________________________________
Patchwork mailing list
Patchwork@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/patchwork

Reply via email to