diff --git a/opentech/users/groups.py b/opentech/users/groups.py
index 14d50b457be657971a99a12978ed146e2cdc9a52..1b795106217a7d1d5f4eafc1ffee0a35fbd7d2a2 100644
--- a/opentech/users/groups.py
+++ b/opentech/users/groups.py
@@ -21,7 +21,7 @@ GROUPS = [
             'add_image', 'change_image', 'delete_image',
             'add_document', 'change_document', 'delete_document',
             'access_admin'
-            ],
+        ],
     },
     {
         'name': 'Administrator',
@@ -30,6 +30,6 @@ GROUPS = [
             'add_document', 'change_document', 'delete_document',
             'add_user', 'change_user', 'delete_user',
             'access_admin', 'change_site'
-            ],
+        ],
     }
 ]
diff --git a/opentech/users/migrations/0002_initial_data.py b/opentech/users/migrations/0002_initial_data.py
index 0d939f0fc39c205af2f4e547600d4259dfc97f22..7b90c713e1fffb77d9ee98daa1e877a0f1badfb7 100644
--- a/opentech/users/migrations/0002_initial_data.py
+++ b/opentech/users/migrations/0002_initial_data.py
@@ -2,20 +2,36 @@
 # Generated by Django 1.11.7 on 2017-12-15 13:15
 from __future__ import unicode_literals
 
+from django.core.exceptions import ObjectDoesNotExist
+from django.core.management.sql import emit_post_migrate_signal
 from django.db import migrations
 
 from opentech.users.groups import GROUPS
 
 
 def add_groups(apps, schema_editor):
+    # Workaround for https://code.djangoproject.com/ticket/23422
+    db_alias = schema_editor.connection.alias
+    try:
+        emit_post_migrate_signal(2, False, db_alias)
+    except TypeError:
+        # Django < 1.9
+        try:
+            # Django 1.8
+            emit_post_migrate_signal(2, False, 'default', db_alias)
+        except TypeError:  # Django < 1.8
+            emit_post_migrate_signal([], 2, False, 'default', db_alias)
+
     Group = apps.get_model('auth.Group')
     Permission = apps.get_model('auth.Permission')
 
     for group_data in GROUPS:
         group, created = Group.objects.get_or_create(name=group_data['name'])
         for permission in group_data['permissions']:
-            group.permissions.add(Permission.objects.get(codename=permission))
-    pass
+            try:
+                group.permissions.add(Permission.objects.get(codename=permission))
+            except ObjectDoesNotExist:
+                print ("Could not find the '%s' permission" % permission)
 
 
 def remove_groups(apps, schema_editor):
@@ -29,7 +45,10 @@ class Migration(migrations.Migration):
 
     dependencies = [
         ('users', '0001_initial'),
-        ('wagtailadmin', '0001_create_admin_access_permissions')
+        ('wagtailadmin', '0001_create_admin_access_permissions'),
+        ('wagtailimages', '0002_initial_data'),
+        ('wagtaildocs', '0002_initial_data'),
+        ('contenttypes', '__latest__'),
     ]
 
     operations = [
diff --git a/opentech/users/models.py b/opentech/users/models.py
index 4c9c171ecaba6e6783de504a79110a779fbc4f30..3d305253bf8157dcb4249315ffef41fa60655ab5 100644
--- a/opentech/users/models.py
+++ b/opentech/users/models.py
@@ -1,4 +1,5 @@
 from django.contrib.auth.models import AbstractUser
 
+
 class User(AbstractUser):
     pass