From 7ce6b9736b68ae7963de16e66f0a9c4f11f348ed Mon Sep 17 00:00:00 2001
From: Dan Braghis <dan.braghis@torchbox.com>
Date: Tue, 2 Jan 2018 15:56:47 +0000
Subject: [PATCH] Fix user permissions not found

Related: https://code.djangoproject.com/ticket/23422
---
 opentech/users/groups.py                      |  4 +--
 .../users/migrations/0002_initial_data.py     | 25 ++++++++++++++++---
 opentech/users/models.py                      |  1 +
 3 files changed, 25 insertions(+), 5 deletions(-)

diff --git a/opentech/users/groups.py b/opentech/users/groups.py
index 14d50b457..1b7951062 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 0d939f0fc..7b90c713e 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 4c9c171ec..3d305253b 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
-- 
GitLab