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