Проблема с наследованием "ContentType" у модели Permission

LonelyToxic

Новичок
Пользователь
Июл 30, 2024
1
0
1
ОС: Ubuntu 23.04
Версия Python: 3.12
Package Version
---------------- -------
Django 2.2.2
m3-builder 1.2.0
m3-core 2.2.24
m3-django-compat 1.9.2
m3-objectpack 2.2.47
m3-ui 2.2.106
pip 24.0
pytz 2024.1
setuptools 72.1.0
six 1.16.0
sqlparse 0.5.1
Python:
from objectpack.actions import ObjectPack
from objectpack.ui import ModelEditWindow, BaseEditWindow, make_combo_box
from django.contrib.contenttypes.models import ContentType
from django.contrib.auth.models import Permission, Group, User
from m3_ext.ui import all_components as ext

class ContentTypePack(ObjectPack):
    model = ContentType
    add_to_desktop = True
    add_window = edit_window = ModelEditWindow.fabricate(ContentType)

class PermissionEditWindow(BaseEditWindow):

    def _init_components(self):
        super(PermissionEditWindow, self)._init_components()

        self.field__name = ext.ExtStringField(
            label='Name',
            name='name',
            allow_blank=False,
            anchor='100%')

        self.field__content_type = make_combo_box(
            label='Content Type',
            name='ContentType',
            allow_blank=False,
            anchor='100%',
            data=[(ct.id, ct.model) for ct in ContentType.objects.all()])

        self.field__codename = ext.ExtStringField(
            label='Codename',
            name='codename',
            allow_blank=False,
            anchor='100%')

    def _do_layout(self):
        super(PermissionEditWindow, self)._do_layout()
        self.form.items.extend((
            self.field__name,
            self.field__content_type,
            self.field__codename,
        ))

    def set_params(self, params):
        super(PermissionEditWindow, self).set_params(params)
        self.height = 'auto'

class PermissionPack(ObjectPack):
    model = Permission
    add_to_desktop = True
    add_window = edit_window = PermissionEditWindow

class GroupPack(ObjectPack):
    model = Group
    add_to_desktop = True
    add_window = edit_window = ModelEditWindow.fabricate(Group)

class UserEditWindow(BaseEditWindow):

    def _init_components(self):
        super(UserEditWindow, self)._init_components()

        self.field__username = ext.ExtStringField(
            label='Username',
            name='username',
            allow_blank=False,
            anchor='100%')

        self.field__password = ext.ExtStringField(
            label='Password',
            name='password',
            allow_blank=False,
            anchor='100%',
            input_type='password')

        self.field__first_name = ext.ExtStringField(
            label='First Name',
            name='first_name',
            allow_blank=True,
            anchor='100%')

        self.field__last_name = ext.ExtStringField(
            label='Last Name',
            name='last_name',
            allow_blank=True,
            anchor='100%')

        self.field__email = ext.ExtStringField(
            label='Email',
            name='email',
            allow_blank=True,
            anchor='100%',
            vtype='email')

        self.field__is_staff = ext.ExtCheckBox(
            label='Staff status',
            name='is_staff')

        self.field__is_active = ext.ExtCheckBox(
            label='Active',
            name='is_active')

        self.field__is_superuser = ext.ExtCheckBox(
            label='Superuser status',
            name='is_superuser')

        self.field__date_joined = ext.ExtDateField(
            label='Date joined',
            name='date_joined',
            allow_blank=False,
            anchor='100%',
            format='d.m.Y') 

    def _do_layout(self):
        super(UserEditWindow, self)._do_layout()
        self.form.items.extend((
            self.field__username,
            self.field__password,
            self.field__first_name,
            self.field__last_name,
            self.field__email,
            self.field__is_staff,
            self.field__is_active,
            self.field__is_superuser,
            self.field__date_joined,
        ))

    def set_params(self, params):
        super(UserEditWindow, self).set_params(params)
        self.height = 'auto'

class UserPack(ObjectPack):
    model = User
    add_to_desktop = True
    add_window = edit_window = UserEditWindow


Работаю с m3 workspace desktop, задача стоит в том что бы в окне редактирования Permssion помимо вывода имеющихся в записи codename и name, выводился ContentType существующей записи. Перепробовал уже кучу метод, но пока что ничего не помогает.
 

Вложения

  • image.png
    image.png
    393 КБ · Просмотры: 3

Форум IT Специалистов