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 пака
-
classmethod
-
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
Примечание
Обычно не требует перекрытия
-
apply_search
(query, request, context)¶ Возвращает переданную выборку отфильторованной по параметрам запроса
Параметры: 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) – Контекст
Результат: Окно добавления/редактирования
Тип результата: Подсказка
Удобно использовать для добавления/конфигурирования кастомных контролов в окно
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) – Контекст
Результат: Окно списка/выбора объектов
Тип результата:
-
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 операцию оганичения по количеству элементов (для порционной загрузки в окно списка).
-
apply_search
()¶ Метод применяет к выборке 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
-
exception
-
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