actions Module

Created:23.07.2012
Author:pirogov

Этот модуль содержит главный класс библиотеки и набор actions для него

class objectpack.actions.BaseAction
Базовые классы: m3.actions.Action

Базовый класс для всех actions.

Имеет автоматически-генерируемый url и возможность подключений точек расширения в Observer.

context_declaration()

Делегирует декларацию контекста в пак

Результат:Правила для DeclarativeActionContext
Тип результата:dict
get_perm_code(subpermission=None)

Возвращает код права

Параметры:subpermission (str) – Код подправа доступа
Результат:code - Код доступа
Тип результата:str
static handle(verb, arg)

Заглушка для точек расширения. При регистрации в обсервер перекрывается

Параметры:
  • verb (str) – Имя точки расширения
  • arg (any) – Объект для передачи в точку расширения
Return arg:

Тот же объект или любой другой

need_check_permission

Небходимость проверки прав

Если определен perm_code, то необходимость проверки прав будет зависеть от присутствия perm_code среди sub_permissions пака и соответствующего флага пака

Тип результата:bool
perm_code = None

Код подправа, используемый при формировании кода права экшна стандартным способом. Если код не указан - экшн формирует свой код права независимо от пака

url

автоматически генерируемый url

class objectpack.actions.BasePack
Базовые классы: m3.actions.ActionPack

Потомок ActionPack, реализующий автогенерацию short_name, url

classmethod absolute_url()

Получение url для построения внутренних кэшей m3

declare_context(action)

Декларация контекста для экшна

def declare_context(self, action):
    if action is self.do_right_things_action:
        return {
            'things': {'type': 'list'},
            'done': {'type': 'boolean'}
        }
url

Относительный url пака

class objectpack.actions.BaseWindowAction
Базовые классы: objectpack.actions.BaseAction

Базовый Action показа окна

configure_window()

Точка расширения, предоставляющая доступ к настроенному экземпляру окна для тонкой настройки.

Примечание

Оставлена для особо тяжёлых случаев, когда не удаётся обойтись set_params

def configure_window(self):
    self.win.grid.top_bar.items[8].text = _(u'Ух ты, 9 кнопок')
create_window()

Метод инстанцирует окно и помещает экземпляр в атрибут self.win

def create_window(self):
    self.win = EditWindow()
run(request, context)

Тело Action, вызывается при обработке запроса к серверу.

Параметры:
  • request (django.http.HttpRequest) – Request
  • context (m3.actions.context.DeclarativeActionContext) – Context

Примечание

Обычно не требует перекрытия

set_window_params()

Метод заполняет словарь self.win_params, который будет передан в окно. Этот словарь выступает как шина передачи данных от Actions/Packs к окну

def set_window_params(self):
    self.win_params['title'] = _(u'Привет из ада')
set_windows_params()
Deprecated:
TODO:Выпилить, ато опечатка портит всю семантику!
class objectpack.actions.ObjectAddWindowAction
Базовые классы: objectpack.actions.ObjectEditWindowAction

Базовый Action показа окна добавления объекта.

Примечание

Отдельный action для уникальности short_name

perm_code = 'add'
class objectpack.actions.ObjectDeleteAction
Базовые классы: objectpack.actions.BaseAction

Действие по удалению объекта

audit(obj)

Обработка успешно удалённых объектов

delete_obj(id_)

Удаление объекта по идентификатору @id_

Параметры:id – Идентификатор объекта
delete_objs()

Удаляет обекты по ключам из контекста

perm_code = 'delete'
run(request, context)
try_delete_objs()

Удаляет обекты и пытается перехватить исключения

Except:m3.RelatedError, django.db.utils.IntegrityError:
Raise:m3.ApplicationLogicException
class objectpack.actions.ObjectEditWindowAction
Базовые классы: objectpack.actions.BaseWindowAction

Базовый Action показа окна редактирования объекта.

create_window()
perm_code = 'edit'
set_window_params()
class objectpack.actions.ObjectListWindowAction
Базовые классы: objectpack.actions.BaseWindowAction

Базовый Action показа окна списка объектов

create_window()
is_select_mode = False

Режим показа окна (True - выбор, False - список)

perm_code = 'view'

Код доступа

set_window_params()
class objectpack.actions.ObjectMultiSelectWindowAction
Базовые классы: objectpack.actions.ObjectSelectWindowAction

Базовый Action показа окна списка выбора нескольких объектов из списка

create_window()
class objectpack.actions.ObjectPack
Базовые классы: objectpack.actions.BasePack, m3.actions.interfaces.IMultiSelectablePack

Пак с экшенам, реализующими специфичную для работы с моделью действиями по добавлению, редактированию, удалению (CRUD actions)

Примечание

Можно из пака включить добавление элементов в главное меню или на десктоп extjs. По умолчанию эта опция выключена

add_to_desktop = True
add_to_menu = True

Если методы extend_menu/extend_desktop не реализованы, меню будет расширяться на основе title и get_default_action

Методы extend_X приоритетны

def extend_menu(self, menu):
    """
    Расширение главного меню.
    """
    return (
        # добавление пунктов в меню "справочники"
        menu.dicts(
            menu.Item(u'Dict 1', self),
            menu.SubMenu(u'Dict SubMenu',
                menu.Item(u'Dict 2', self.some_action),
            ),
        ),
        # добавление пунктов в меню "реестры"
        menu.registries(
            menu.Item(u'Reg 1'),
            menu.SubMenu(u'Regs SubMenu',
                menu.Item(u'Reg 2'),
            ),
        ),
        # добавление пунктов в меню "администрирование"
        menu.administry(
            menu.Item(u'Admin item 1')
        ),

        # добавление пунктов в "корень" меню
        menu.Item(name=u'item 1', self.some_action),

        # добавление подменю в "корень" меню
        menu.SubMenu(u'SubMenu',
            menu.Item(u'Item 2', self.some_action),
            menu.SubMenu(u'SubSubMenu',
                menu.Item(u'Item 3', self.some_action),
            ),
        ),
    )

Пустые подменю автоматически “схлопываются” (не видны в Главном Меню)

def extend_desktop(self, desk):
    """
    Расширение Рабочего Стола
    """

    return (
       desk.Item(u'Ярлык 1', pack=self.list_action),
       ...
    )

Любой из элементов можно отключить вернув вместо него None. Например:

desk.Item(u'Name', pack=self) if some_condition else None
MSG_DOESNOTEXISTS = u'\u0417\u0430\u043f\u0438\u0441\u044c \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430 \u0432 \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445.<br/>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043e\u043d\u0430 \u0431\u044b\u043b\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u0430. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u0443!'
add_window = None

Окно для добавления элемента справочника

allow_paging = True

Включить пагинацию

apply_default_sort_order(query)
Параметры:query (django.db.models.query.QuerySet) –
Результат:Выборка, отсортированная по-умолчанию
Тип результата:django.db.models.query.QuerySet

Примечание

Обычно не требует перекрытия

apply_filter(query, request, context)

Применяет фильтрацию к выборке query

Параметры:
  • query (django.db.models.query.QuerySet) –
  • request (django.http.HttpRequest) –
  • context (m3.actions.context.DeclarativeActionContext) –
Результат:

Отфильтрованная выборка query

Тип результата:

django.db.models.query.QuerySet

Примечание

Обычно не требует перекрытия

Возвращает переданную выборку отфильторованной по параметрам запроса

Параметры:query (django.db.models.query.QuerySet) –
Результат:
Тип результата:django.db.models.query.QuerySet

Примечание

Обычно не требует перекрытия

apply_sort_order(query, request, context)

Возвращает переданную выборку отсортированной по параметрам запроса

Параметры:query
Результат:
Тип результата:

Примечание

Обычно не требует перекрытия

can_delete = None

Флаг разрешающий/запрещающий удаление. Если None, то удаление возможно, при наличии add_window/edit_window

column_constructor_fabric(config, ignore_attrs=None)

Фабрика колонок по данным атрибута ‘columns’

Примечание

callable-объект, возвращающий объект с методом ‘configure_grid(grid)’

column_name_on_select = '__unicode__'

Поле/метод, предоставляющее значение для отображения в DictSelectField

Внимание

ПОКА НЕ РАБОТАЕТ извлечение вложенных полей - конфликт с ExtJS

columns = [{'header': u'\u041d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435', 'data_index': '__unicode__'}]

Список колонок для добавления в грид, data_index - поле или метод модели

Важно

Для корректной работы полей выбора, необходима колонка с data_index = ‘__unicode__’

columns = [
    {
        'data_index: '__unicode__',
        'hidden': True,
    },
    {
       'data_index':'',
       'width':,
       'header':u'',
       'serchable':True,
       'sortable':True,
       'sort_fields': ('foo','bar'),
    },
    {
       'header':u'Группирующая Колонка 1',
       'columns': [
           {
               'data_index':'school.name',
               'width':200,
               'header':u'Колонка 1',
               'searchable':True,
               'search_fields': ('school.fullname',),
           },
       ]
    },
    {
       'data_index':'school.parent.name',
       'width':200,
       'header':u'Родитель',
       'renderer':'parent_render'
    },
]
configure_grid(grid)

Конфигурирует grid для работы с этим паком, создает колонки и задает экшены

Подсказка

Удобно использовать в окнах в комбинированных справочниках с несколькими гридами

class RightThingsWindow(objectpack.BaseWindow):

    def _init_components(self):
        super(RightThingsWindow, self)._init_components()
        ...
        self.right_things_todo_grid = ext.ExtObjectGrid()
        self.right_things_done_grid = ext.ExtObjectGrid()

    def _do_layout(self):
        ...

    def set_params(self, params):
        super(RightThingsWindow, self).set_params(params)
        ...
        get_pack_instance('RightThingsTodoPack').configure_grid(
            self.right_things_todo_grid)
        get_pack_instance('RightThingsDonePack').configure_grid(
        self.right_things_done_grid)
Параметры:grid (m3_ext.ui.panels.grids.ExtObjectGrid) – Грид
create_edit_window(create_new, request, context)

Получить окно редактирования / создания объекта

Параметры:
  • create_new (bool) – Признак добавления или редактирования
  • request (django.http.HttpRequest) – Запрос
  • context (m3.actions.context.DeclarativeActionContext) – Контекст
Результат:

Окно добавления/редактирования

Тип результата:

objectpack.ui.BaseEditWindow

Подсказка

Удобно использовать для добавления/конфигурирования кастомных контролов в окно

def create_edit_window(self, create_new, request, context):
    win = super(RightThingsPack, self).create_edit_window(
        create_new, request, context)
    win.top_bar.btn_do_right_thing
create_list_window(is_select_mode, request, context)

Получить окно списка / выбора объектов

Параметры:
  • is_select_mode (bool) – Режим показа окна (True - выбор, False - список)
  • request (django.http.HttpRequest) – Запрос
  • context (m3.actions.context.DeclarativeActionContext) – Контекст
Результат:

Окно списка/выбора объектов

Тип результата:

objectpack.ui.BaseListWindow

declare_context(action)

Декларирует контекст для экшна

Параметры:action (objectpack.BaseAction) – Экземпляр экшена
Результат:Правила для декларации контекста DeclarativeActionContext
Тип результата:dict
delete_action = None

Экшен удаления объектовы

delete_row(obj_id, request, context)

Удаляет объект по :obj_id Возвращает удалённый объект - т.е. объект модели, который уже не представлен в БД

Параметры:obj_id (int) – pk объекта
Результат:Удалённый объект
Тип результата:django.db.models.Model
edit_window = None

Окно для редактирования элемента справочника

edit_window_action = None

Экшен показа окна редактирования объекта

filter_engine_clz

Класс конструктора фильтра для грида

Примечание

Подробнее смотри в objectpack.demo

псевдоним класса MenuFilterEngine

format_window_title(action)

Возвращает отформатированный заголовка окна. Заголовок примет вид “Модель: Действие”

Подсказка

Например “Сотрудник: Добавление”

Параметры:action (unicode) – Действие характеризующее экшен
Результат:Заголовок окна
Тип результата:unicode
get_autocomplete_url()

Возвращает адрес для запроса элементов, подходящих введенному в поле тексту

Результат:url экшена
Тип результата:str
get_default_action()

Возвращает действие по умолчанию (действие для значка на раб.столе/пункта меню)

Примечание

Используется пи упрощенном встраивании в UI (add_to_XXX=True)

Результат:Экземпляр экшена
Тип результата:objectpack.BaseAction
get_display_dict(key, value_field='id', display_field='name')
get_display_text(key, attr_name=None)

Возвращает отображаемое значение записи (или атрибута attr_name) по ключу key

Параметры:
  • key (basestring or int) – ID объекта
  • attr_name (str) – Имя атрибута модели
Результат:

Отображаемое текстовое представление объекта

Тип результата:

basestring

get_edit_url()

Возвращает адрес формы редактирования элемента справочника

Результат:url экшена показа окна редактирования объекта
Тип результата:str
get_edit_window_params(params, request, context)

Возвращает словарь параметров, которые будут переданы окну редактирования

def get_edit_window_params(self, params, request, context):
    params = super(RightThingsPack, self).get_edit_window_params(
        params, request, context)
    params.update({
        'user': request.user,
        'height': 800,
        'width': 600,
    })
    return params
Параметры:
  • params (dict) – Словарь параметров
  • request (django.http.HttpRequest) – Запрос
  • context (m3.actions.context.DeclarativeActionContext) – Контекст
Результат:

Словарь параметров

Тип результата:

dict

get_filter_plugin()

Возвращает плагин фильтрации

Результат:js-код с плагином фильтрации
Тип результата:basestring
get_list_url()

Возвращает адрес формы списка элементов справочника.

Примечание

Используется для присвоения адресов в прикладном приложении

Результат:url экшена показа окна со списком объектов
Тип результата:str
get_list_window_params(params, request, context)

Возвращает словарь параметров, которые будут переданы окну списка

def get_list_window_params(self, params, request, context):
    params = super(RightThingsPack, self).get_list_window_params(
        params, request, context)
    params.update({
        'title': u'Right things done by user: %s'
        % request.user.username,
        'height': 800,
        'width': 600,
    })
    return params
Параметры:
  • params (dict) – Словарь параметров
  • request (django.http.HttpRequest) – Запрос
  • context (m3.actions.context.DeclarativeActionContext) – Контекст
Результат:

Словарь параметров

Тип результата:

dict

get_multi_select_url()

Возвращает адрес формы выбора из списка элементов справочника.

Примечание

Используется для присвоения адресов в прикладном приложении

Результат:url экшена показа окна выбора из списка объектов
Тип результата:str
get_not_found_exception()

Возвращает класс исключения ‘объект не найден’

Результат:Класс исключения модели django
Тип результата:django.core.exceptions.ObjectDoesntExist
get_obj(request, context)

Получает id объекта из контекста и возвращает кортеж (объект модели, create_new), где create_new признак создания или редактирования

Результат:(Объект модели self.model, create_new)
Тип результата:tuple
get_row(row_id)

Функция возвращает объект по :row_id Если id нет, значит нужно создать новый объект

Примечание

Используется в ExtDictSelectField’ax

Параметры:row_id (int) – id объекта
Результат:Объект модели self.model
Тип результата:django.db.models.Model
get_rows_query(request, context)

Возвращает выборку из БД для получения списка данных

Параметры:
  • request (django.http.HttpRequest) – Запрос
  • context (m3.actions.context.DeclarativeActionContext) – Контекст
Результат:

Кварисет

Тип результата:

django.db.models.query.QuerySet

def get_rows_query(self, request, context):
    query = super(RightThingsDonePack, self).get_rows_query(
        request, context)
    return query.filter(done=True)
get_rows_url()

Возвращает адрес, по которому запрашиваются элементы грида

Результат:url экшена с данными для грида
Тип результата:str
get_search_fields(request=None, context=None)
Параметры:
  • request (django.http.HttpRequest) –
  • context (m3.actions.context.DeclarativeActionContext) –
Результат:

Список значений ‘data_index’ из колонок self.columns, по которым будет производиться поиск

Тип результата:

list

Примечание

Обычно не требует перекрытия

get_select_url()

Возвращает адрес формы выбора из списка элементов справочника.

Примечание

Используется для присвоения адресов в прикладном приложении

Результат:url экшена показа окна выбора из списка объектов
Тип результата:str
get_sort_order(data_index, reverse=False)

:param data_index :type data_index: str :param reverse: Обратный порядок :type reverse: bool :return: Ключи сортировки для указанного data_index :rtype: list or tuple

Примечание

Обычно не требует перекрытия

handle_row_editing(request, context, data)

Метод принимает данные из редактируемого грида и возвращает результат редактирования кортежем вида (удачно/неудачно, “сообщение”/None) :param request: :type request: django.http.HttpRequest :param context: :type context: m3.actions.context.DeclarativeActionContext :param data: :type data:

height = 400
id_field = 'id'

data_index колонки, идентифицирующей объект. Этот параметр будет браться из модели и передаваться как ID в ExtDataStore, т.е в post запросе редактирования будет лежать {id_param_name: obj.id_field}

id_param_name
Результат:Название поля, идентифицирующего объект и название параметра, который будет передаваться в запросе на модификацию/удаление
Тип результата:str
list_sort_order = None

Порядок сортировки элементов списка. Работает следующим образом:

  • Если в list_columns модели списка есть поле code, то устанавливается сортировка по возрастанию этого поля
  • Если в list_columns модели списка нет поля code, но есть поле name, то устанавливается сортировка по возрастанию поля name
list_sort_order = ['code', '-name']
list_window

Класс отвечающий за отображение окна со списком объектов

псевдоним класса BaseListWindow

list_window_action = None

Экшен показа окна со списком объектов

model = None

Класс django-модели, для которой будет формироваться справочник

multi_select_window

Класс отвечающий за отображение окна множественного выбора из списка объектов

псевдоним класса BaseMultiSelectWindow

multi_select_window_action = None

Экшен с получения данных объектов / редактирование строк

new_window_action = None

Экшен показа окна добавления объекта

prepare_row(obj, request, context)

Установка дополнительных атрибутов объекта перед возвратом json’a строк грида или может вернуть proxy_object

Параметры:obj (django.db.models.Model) – Объект из выборки, полученной в get_rows_query
Результат:
Тип результата:
columns = [
    {
        'data_index': 'title',
        'header': 'Title',
    },
    {
        'data_index': 'date',
        'header': 'Date',
    },
    {
        'data_index': 'done_checkbox',
        'header': 'Done',
    }
]

def prepare_row(self, obj, request, context):
    """
    Добавляет в объект атрибут, для отображения булевого
    поля модели как чек-бокс
    """
    obj = super(RightThingsPack, self).prepare_row(
        obj, request, context)
    obj.done_checkbox = (
        '<div class="x-grid3-check-col-on%s"></div>'
         % '-on' if obj.done else ''
    )
read_only = False

Пак будет настраивать грид на возможность редактирования

replace_action(action_attr_name, new_action)

Заменяет экшен в паке

Параметры:
  • action_attr_name (str) – Имя атрибута пака для экшена
  • new_action (objectpack.BaseAction) – Экземпляр экшена
rows_action = None

Экшен с получения данных объектов / редактирование строк

save_action = None

Экшен сохранения объекта

save_row(obj, create_new, request, context)

Сохраняет объект. При необходимости возбуждается ValidationError, или OverlapError, которые затем отлавливаются в ObjectSaveAction.save_obj

Параметры:
  • obj (django.db.models.Model) – Объект модели self.model
  • create_new (bool) – Признак создания нового объекта
search_fields = None

Список дополнительных полей модели по которым будет идти поиск основной список береться из colums по признаку searchable

select_window

Класс отвечающий за отображение окна выбора из списка объектов

псевдоним класса BaseSelectWindow

select_window_action = None

Экшен показа окна со списком для выбора объектов

title

Заголовок окна справочника, если не перекрыт в потомках - берется из модели

width = 600
class objectpack.actions.ObjectRowsAction
Базовые классы: objectpack.actions.BaseAction

Базовый Action получения данных для отображения в окне списка объектов

apply_filter()

Метод применяет к выборке self.query фильтр, как правило поступающий от “колоночных фильтров”/фильтров в контекстных меню в окне списка

Примечание

Регистрирует точку расширения apply_filter в Observer

apply_limit()

Метод применяет к выборке self.query операцию оганичения по количеству элементов (для порционной загрузки в окно списка).

Метод применяет к выборке self.query фильтр по тексту из поля “Поиск” окна списка

Примечание

Регистрирует точку расширения apply_search в Observer

apply_sort_order()

Метод применяет к выборке self.query сортировку по выбранному в окне списка столбцу

get_column_data_indexes()
Результат:Список data_index колонок, для формирования json
Тип результата:list
get_rows()

Метод производит преобразование QuerySet в список. При этом объекты сериализуются в словари

Результат:Список сериализованных объектов
Тип результата:list
get_total_count()

Возвращает общее кол-во объектов

Результат:Количество объектов в выборке
Тип результата:int
handle_row_editing(request, context, data)

Обрабатывает inline-редактирование грида Метод должен вернуть кортеж (удачно/неудачно, “сообщение”/None)

Параметры:
  • request (django.http.HttpRequest) – Request
  • context (m3.actions.context.DeclarativeActionContext) – Context
  • data (dict) – Данные редактирования
Результат:

(True/False, message/None)

Тип результата:

tuple

prepare_object(obj)

Возвращает словарь, для составления результирующего списка

Параметры:obj (django.db.models.Model) – Объект, полученный из QuerySet’a
Результат:Словарь для сериализации в json
Тип результата:dict

Примечание

Регистрирует в Observer точку расширения prepare_obj

run(request, context)
set_query()

Метод получает первоначальную выборку данных в виде QuerySet и помещает в атрибут self.query

Примечание

Регистрирует точку расширения query в Observer

class objectpack.actions.ObjectSaveAction
Базовые классы: objectpack.actions.BaseAction

Базовый Action сохранения отредактированного объекта

exception AlreadySaved
Базовые классы: exceptions.Exception

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

ObjectSaveAction.bind_to_obj()

Заполнение объекта данными из полей окна

ObjectSaveAction.bind_win()

Заполнение полей окна по данным из request

ObjectSaveAction.create_obj()

Метод делегирует паку загрузку объекта из БД / создание нового объекта модели

ObjectSaveAction.create_window()

Создаёт окно для дальнейшего биндинга в форму из реквеста

ObjectSaveAction.run(request, context)

Тело Action, вызывается при обработке запроса к серверу

Параметры:
  • request (django.http.HttpRequest) – Request
  • context (m3.actions.context.DeclarativeActionContext) – Context

Примечание

Обычно не требует перекрытия

ObjectSaveAction.save_obj()

Сохранение объекта в БД

Raise:m3.ApplicationLogicException
class objectpack.actions.ObjectSelectWindowAction
Базовые классы: objectpack.actions.ObjectListWindowAction

Базовый Action показа окна списка выбора объекта из списка

Совет

Используется с m3_ext.ui.fields.complex.ExtDictSelectField

is_select_mode = True
set_window_params()
class objectpack.actions.SelectorWindowAction
Базовые классы: objectpack.actions.BaseAction

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

callback_url = None

url экшна обработки результата выбора

configure_action(request, context)

Настройка экшна. Здесь нужно назначать пак и callback

def configure_action(self, request, context):
    super(UserPack, self).configure_action(request, context)
    self.data_pack = get_pack_instance('GroupPack')
    self.callback_url = (
        self.parent.selector_save_action.get_absolute_url())
configure_context(request, context)

В данном методе происходит конфигурирование контекста для окна выбора. Возвращаемый результат должен быть экземпляром ActionContext.

Параметры:
  • request (django.http.HttpRequest) – Request
  • context (m3.actions.context.DeclarativeActionContext) – Context
Тип результата:

m3.actions.context.ActionContext

configure_window(win, request, context)

В данном методе происходит конфигурирование окна выбора

Параметры:
  • win (objectpack.ui.BaseSelectWindow) – Окно выбора из справочника
  • request (django.http.HttpRequest) – Request
  • context (m3.actions.context.DeclarativeActionContext) – Context
data_pack = None

Пак, объекты модели которого выбираются

multi_select = True

Признак показа окна множественного выбора

run(request, context)

Выполнение экшна

Параметры:
  • request (django.http.HttpRequest) – Request
  • context (m3.actions.context.DeclarativeActionContext) – Context
Результат:

Результат с окном ExtJS

Тип результата:

m3_ext.ui.results.ExtUIScriptResult

Raise:

AssertionError, m3.ApplicationLogicException

Примечание

Без крайней необходимости не перекрывать

url = '/selector_window'

Жестко определяет url для экшена

TODO: выпылить, использовать проперти из BaseAction

objectpack.actions.multiline_text_window_result(data, success=True, title=u'', width=600, height=500)

Формирование OpersionResult в виде многострочного окна, с размерами :width x :height и заголовком :title, отображающего текст :data

Параметры:
  • data (basestring or Iterable) – Текст или список со строками
  • success (bool) – Результат выполнения операции в контексте ExtJS
  • title (basestring) – Заголовок окна
  • width (int) – Ширина окна
  • height (int) – Высота окна
Результат:

Результат операции в контексте ExtJS

Тип результата:

m3.actions.results.OperationResult