From 083af31db218aabcab1068620b81ba84e69c8b05 Mon Sep 17 00:00:00 2001 From: Hugo Levy-Falk Date: Wed, 30 Dec 2020 18:44:31 +0100 Subject: [PATCH] Fix #273 API import side-effect. --- api/acl.py | 25 ------------------------- api/migrations/0001_initial.py | 34 ++++++++++++++++++++++++++++++++++ api/migrations/__init__.py | 0 3 files changed, 34 insertions(+), 25 deletions(-) create mode 100644 api/migrations/0001_initial.py create mode 100644 api/migrations/__init__.py diff --git a/api/acl.py b/api/acl.py index c745158f..e672338e 100644 --- a/api/acl.py +++ b/api/acl.py @@ -31,31 +31,6 @@ from django.contrib.contenttypes.models import ContentType from django.utils.translation import ugettext as _ -def _create_api_permission(): - """Creates the 'use_api' permission if not created. - - The 'use_api' is a fake permission in the sense it is not associated with an - existing model and this ensure the permission is created every time this file - is imported. - """ - api_content_type, created = ContentType.objects.get_or_create( - app_label=settings.API_CONTENT_TYPE_APP_LABEL, - model=settings.API_CONTENT_TYPE_MODEL, - ) - if created: - api_content_type.save() - api_permission, created = Permission.objects.get_or_create( - name=settings.API_PERMISSION_NAME, - content_type=api_content_type, - codename=settings.API_PERMISSION_CODENAME, - ) - if created: - api_permission.save() - - -#_create_api_permission() - - def can_view(user, *args, **kwargs): """Check if an user can view the application. diff --git a/api/migrations/0001_initial.py b/api/migrations/0001_initial.py new file mode 100644 index 00000000..44316324 --- /dev/null +++ b/api/migrations/0001_initial.py @@ -0,0 +1,34 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations +from django.conf import settings + +def create_api_permission(apps, schema_editor): + """Creates the 'use_api' permission if not created. + + The 'use_api' is a fake permission in the sense it is not associated with an + existing model and this ensure the permission is created. + """ + ContentType = apps.get_model("contenttypes", "ContentType") + Permission = apps.get_model("auth", "Permission") + api_content_type, created = ContentType.objects.get_or_create( + app_label=settings.API_CONTENT_TYPE_APP_LABEL, + model=settings.API_CONTENT_TYPE_MODEL, + ) + if created: + api_content_type.save() + api_permission, created = Permission.objects.get_or_create( + name=settings.API_PERMISSION_NAME, + content_type=api_content_type, + codename=settings.API_PERMISSION_CODENAME, + ) + if created: + api_permission.save() + +class Migration(migrations.Migration): + initial = True + dependencies = [] + operations = [ + migrations.RunPython(create_api_permission) + ] diff --git a/api/migrations/__init__.py b/api/migrations/__init__.py new file mode 100644 index 00000000..e69de29b