Django - Разрешения для модели прокси - PullRequest
0 голосов
/ 15 октября 2018

Я создаю модель прокси из auth.Group модели, которую я хочу применить к ней permissions.

proxies.py

class InstitutionOwnerGroup(Group):

    # Gestores
    pk = 1

    is_superuser = False
    is_staff = False

    class Meta:
        proxy = True
        permissions = (
            ('can_manage_institutions', 'Gerencia Instituições'),
        )

миграция данных

# Generated by Django 2.1.1 on 2018-10-14 23:30

from django.db import migrations
from horsy.apps.accounts.proxies import InstitutionOwnerGroup


def create_owner_group(app, _schema):
    InstitutionOwnerGroup.objects.create(
        name="Gestores"
    )


class Migration(migrations.Migration):

    dependencies = [
        ('accounts', '0002_add_admin_user'),
    ]

    operations = [
        migrations.RunPython(create_owner_group)
    ]

Модель Gestores в административной панели:

Group in admin panel

данное разрешение can_manage_institutions не применяется к модели при переносе данных.

Как применить разрешение с помощью системы разрешений django к прокси-модели, унаследованной от auth.Group?

1 Ответ

0 голосов
/ 20 октября 2018

Это известная проблема .* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * [100] * Исправлено недавно обновленный запрос *1004*, чтобы исправить это, если повезет, он будет исправлен в следующей версии Django.

выше.Кажется, что проще всего создать вручную миграцию для неуправляемой модели, которая указывает на вашу модель прокси, которая затем вызовет создание соответствующих объектов разрешений:

migrations.CreateModel(
    name='InstitutionOwnerGroup',
    fields=[
    ],
    options={
        'verbose_name': 'Group',
        'managed': False,  # Make it unmanaged
        'proxy': True,
        'verbose_name_plural': 'Groups',
    },
    bases=('myapp.proxies.group',),
    managers=[
        ('objects', django.contrib.auth.models.GroupManager()),
    ],
),

Ваш пробег может варьироваться в зависимости от этого - я не уверен, что это совершенно безопасно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...