예제 #1
0
    def render_params(self):
        super(ExtObjectGrid, self).render_params()

        # Получение адресов для грида.
        # Текстовые адреса более приоритетны чем экшены!
        if not self.url_new and self.action_new:
            self.url_new = get_url(self.action_new)
        if not self.url_edit and self.action_edit:
            self.url_edit = get_url(self.action_edit)
        if not self.url_delete and self.action_delete:
            self.url_delete = get_url(self.action_delete)
        if not self.url_data and self.action_data:
            self.url_data = get_url(self.action_data)

        context_json = (self.action_context.json
                        if self.action_context else None)

        self._put_params_value(
            'actions', {
                'newUrl': self.url_new,
                'editUrl': self.url_edit,
                'deleteUrl': self.url_delete,
                'dataUrl': self.url_data,
                'contextJson': context_json
            })

        self._put_params_value('rowIdName', self.row_id_name)
        self._put_params_value('columnParamName', self.column_param_name)
        self._put_params_value('allowPaging', self.allow_paging)
        self._put_params_value('readOnly', self.read_only)
        self._put_params_value('localEdit', self.local_edit)
예제 #2
0
    def render_params(self):
        super(ExtObjectGrid, self).render_params()

        # Получение адресов для грида.
        # Текстовые адреса более приоритетны чем экшены!
        if not self.url_new and self.action_new:
            self.url_new = get_url(self.action_new)
        if not self.url_edit and self.action_edit:
            self.url_edit = get_url(self.action_edit)
        if not self.url_delete and self.action_delete:
            self.url_delete = get_url(self.action_delete)
        if not self.url_data and self.action_data:
            self.url_data = get_url(self.action_data)

        context_json = (
            self.action_context.json if self.action_context else None)

        self._put_params_value(
            'actions',
            {
                'newUrl': self.url_new,
                'editUrl': self.url_edit,
                'deleteUrl': self.url_delete,
                'dataUrl': self.url_data,
                'contextJson': context_json})

        self._put_params_value('rowIdName', self.row_id_name)
        self._put_params_value('columnParamName', self.column_param_name)
        self._put_params_value('allowPaging', self.allow_paging)
        self._put_params_value('readOnly', self.read_only)
        self._put_params_value('localEdit', self.local_edit)
예제 #3
0
    def render_params(self):
        super(ExtMultiGroupinGrid, self).render_params()

        data_url = self.url_data or (get_url(self.action_data)
                                     if self.action_data else None)

        def remove(this):
            if this in self._top_bar.items:
                self._top_bar.items.remove(this)

        new_url = self.url_new or (get_url(self.action_new)
                                   if self.action_new else None)
        if not new_url:
            remove(self._top_bar.button_new)

        edit_url = self.url_edit or (get_url(self.action_edit)
                                     if self.action_edit else None)
        if not edit_url:
            remove(self._top_bar.button_edit)
        else:
            self.handler_dblclick = self.dblclick_handler

        delete_url = self.url_delete or (get_url(self.action_delete)
                                         if self.action_delete else None)
        if not delete_url:
            remove(self._top_bar.button_delete)

        export_url = get_url(
            self.action_export) if self.action_export else None
        if not self.action_export:
            remove(self._top_bar.button_export)
        context_json = (self.action_context.json
                        if self.action_context else None)

        for args in (
            ('actions', {
                'dataUrl': data_url,
                'newUrl': new_url,
                'editUrl': edit_url,
                'deleteUrl': delete_url,
                'exportUrl': export_url,
                'contextJson': context_json
            }),
            ('groupedColumns',
             lambda: '[%s]' % ','.join(["'%s'" % col
                                        for col in self.grouped])),
            ('dataIdField', self.data_id_field),
            ('dataDisplayField', self.data_display_field),
            ('toolbar', self._top_bar.t_render_items),
            ('rowIdName', self.row_id_name),
            ('localEdit', self.local_edit),
            ('groupable', self.groupable),
            ('showTooltips', self.show_tooltips),
            ('displayInfo', self.display_info),
            ('displayMsg', self.display_message),
            ('bufferSize', self.buffer_size),
            ('nearLimit', self.near_limit),
        ):
            self._put_params_value(*args)
예제 #4
0
    def render_params(self):
        super(ExtObjectTree, self).render_params()

        get_url_or_none = lambda x: get_url(x) if x else None
        new_url = get_url_or_none(self.action_new)
        edit_url = get_url_or_none(self.action_edit)
        delete_url = get_url_or_none(self.action_delete)
        data_url = get_url_or_none(self.action_data)
        context_json = (
            self.action_context.json if self.action_context else None
        )

        self._put_params_value(
            'actions', {
                'newUrl': new_url,
                'editUrl': edit_url,
                'deleteUrl': delete_url,
                'dataUrl': data_url,
                'contextJson': context_json
            }
        )

        self._put_params_value('rowIdName', self.row_id_name)
        self._put_params_value('parentIdName', self.parent_id_name)
        self._put_params_value('folderSort', self.folder_sort)
        self._put_params_value('enableTreeSort', self.enable_tree_sort)
        self._put_params_value('incrementalUpdate', self.incremental_update)
예제 #5
0
    def render_params(self):
        super(ExtObjectTree, self).render_params()

        get_url_or_none = lambda x: get_url(x) if x else None
        new_url = get_url_or_none(self.action_new)
        edit_url = get_url_or_none(self.action_edit)
        delete_url = get_url_or_none(self.action_delete)
        data_url = get_url_or_none(self.action_data)
        context_json = (self.action_context.json
                        if self.action_context else None)

        self._put_params_value(
            'actions', {
                'newUrl': new_url,
                'editUrl': edit_url,
                'deleteUrl': delete_url,
                'dataUrl': data_url,
                'contextJson': context_json
            })

        self._put_params_value('rowIdName', self.row_id_name)
        self._put_params_value('parentIdName', self.parent_id_name)
        self._put_params_value('folderSort', self.folder_sort)
        self._put_params_value('enableTreeSort', self.enable_tree_sort)
        self._put_params_value('incrementalUpdate', self.incremental_update)
예제 #6
0
    def render(self):
        self.store.url = self.store.url or self.url_data

        assert self.store.url or self.action_data, 'Action data is not defined'
        # тонкая настройка self.store
        if not self.store.url and self.action_data:
            self.store.url = get_url(self.action_data)

        self.render_base_config()
        self.render_params()
        return render_component(self)
예제 #7
0
    def render(self):
        self.store.url = self.store.url or self.url_data

        assert self.store.url or self.action_data, 'Action data is not defined'
        # тонкая настройка self.store
        if not self.store.url and self.action_data:
            self.store.url = get_url(self.action_data)

        self.render_base_config()
        self.render_params()
        return render_component(self)
예제 #8
0
    def render(self):
        """
        Переопределяем рендер дерева для того,
        чтобы модифицировать содержимое его
        панелей и контекстных меню
        """
        if self.action_new:
            self.context_menu_row.items.append(
                self.context_menu_row.menuitem_new)
            self.context_menu_row.items.append(
                self.context_menu_row.menuitem_new_child)
            self.context_menu_tree.items.append(
                self.context_menu_tree.menuitem_new)

        if self.action_edit:
            self.context_menu_row.items.append(
                self.context_menu_row.menuitem_edit)
            self.handler_dblclick = self.dblclick_handler

        if self.action_delete:
            self.context_menu_row.items.append(
                self.context_menu_row.menuitem_delete)

        # контекстное меню прицепляется к гриду только в том случае, если
        # в нем есть хотя бы один пункт
        if self.context_menu_tree.items:
            self.handler_contextmenu = self.context_menu_tree
        if self.context_menu_row.items:
            self.handler_rowcontextmenu = self.context_menu_row

        #======================================================================
        # Настройка top bar
        #======================================================================
        for action, btn in (
            (self.action_new, self.top_bar.add_menu),
            (self.action_edit, self.top_bar.button_edit),
            (self.action_delete, self.top_bar.button_delete),
            (self.action_data, self.top_bar.button_refresh),
        ):
            if not action and btn in self.top_bar.items:
                self.top_bar.items.remove(btn)

        # тонкая настройка self.store
        if not self.url and self.action_data:
            self.url = get_url(self.action_data)

        self.render_base_config()
        self.render_params()
        return render_component(self)
예제 #9
0
    def render(self):
        """
        Переопределяем рендер дерева для того,
        чтобы модифицировать содержимое его
        панелей и контекстных меню
        """
        if self.action_new:
            self.context_menu_row.items.append(
                self.context_menu_row.menuitem_new)
            self.context_menu_row.items.append(
                self.context_menu_row.menuitem_new_child)
            self.context_menu_tree.items.append(
                self.context_menu_tree.menuitem_new)

        if self.action_edit:
            self.context_menu_row.items.append(
                self.context_menu_row.menuitem_edit)
            self.handler_dblclick = self.dblclick_handler

        if self.action_delete:
            self.context_menu_row.items.append(
                self.context_menu_row.menuitem_delete)

        # контекстное меню прицепляется к гриду только в том случае, если
        # в нем есть хотя бы один пункт
        if self.context_menu_tree.items:
            self.handler_contextmenu = self.context_menu_tree
        if self.context_menu_row.items:
            self.handler_rowcontextmenu = self.context_menu_row

        #======================================================================
        # Настройка top bar
        #======================================================================
        for action, btn in (
            (self.action_new, self.top_bar.add_menu),
            (self.action_edit, self.top_bar.button_edit),
            (self.action_delete, self.top_bar.button_delete),
            (self.action_data, self.top_bar.button_refresh),
        ):
            if not action and btn in self.top_bar.items:
                self.top_bar.items.remove(btn)

        # тонкая настройка self.store
        if not self.url and self.action_data:
            self.url = get_url(self.action_data)

        self.render_base_config()
        self.render_params()
        return render_component(self)
예제 #10
0
def redirect_to_action(request, action, params=None):
    u"""
    Перенаправление запроса в другой экшен
    :param request: WSGIRequest
    :param action: Экземпляр класса экшена
    :param params: Словарь с набором параметров,
        которые будут переданы с запросом в указанный экшен
    :rtype: Response
    """
    controller = action.controller
    request.path = urls.get_url(action)
    new_post = copy(request.POST)

    if params:
        new_post.update(params)

    request.POST = new_post

    # Совместимость с django 1.4-
    if hasattr(request, '_request'):
        del request._request

    return controller.process_request(request)
예제 #11
0
    def render(self):
        """
        Переопределяем рендер грида для того,
        чтобы модифицировать содержимое его
        панелей и контекстных меню
        """
        if self.action_new or self.url_new:
            self.context_menu_row.items.append(
                self.context_menu_row.menuitem_new)
            self.context_menu_grid.items.append(
                self.context_menu_grid.menuitem_new)

        if self.action_edit or self.url_edit:
            self.context_menu_row.items.append(
                self.context_menu_row.menuitem_edit)
            self.handler_dblclick = self.dblclick_handler

        if self.action_delete or self.url_delete:
            self.context_menu_row.items.append(
                self.context_menu_row.menuitem_delete)

        # контекстное меню прицепляется к гриду только в том случае, если
        # в нем есть хотя бы один пункт
        if self.context_menu_grid.items:
            self.handler_contextmenu = self.context_menu_grid
        if self.context_menu_row.items:
            self.handler_rowcontextmenu = self.context_menu_row

        #======================================================================
        # Настройка top bar
        #======================================================================
        def remove(this):
            if this in self.top_bar.items:
                self.top_bar.items.remove(this)

        # @TODO: Отрефакторить данный метод, чтобы он был не в рендеринге
        if (not self.action_data and not self.url_data
                and self.top_bar.button_refresh in self.top_bar.items):
            remove(self.top_bar.button_refresh)

        if (not self.action_delete and not self.url_delete
                and self.top_bar.button_delete in self.top_bar.items):
            remove(self.top_bar.button_delete)

        if (not self.action_edit and not self.url_edit
                and self.top_bar.button_edit in self.top_bar.items):
            remove(self.top_bar.button_edit)

        if (not self.action_new and not self.url_new
                and self.top_bar.button_new in self.top_bar.items):
            remove(self.top_bar.button_new)

        # тонкая настройка self.store
        if not self.store.url and self.action_data:
            self.store.url = get_url(self.action_data)

        if self.url_data:
            self.store.url = self.url_data

        # Стор может быть пустой
        # assert self.store.url, 'Url for store or action_data is not define'

        if self.allow_paging:
            # Значение self.store.start и так будет равно 0

            # Если store не экземпляр ExtJsonStore,
            # то у него нет атрибута limit
            if hasattr(self.store, 'limit'):
                self.store.limit = (self.store.limit
                                    if self.store.limit > 0 else 25)
            self.bottom_bar = self.paging_bar

        self.render_base_config()
        self.render_params()
        return render_component(self)
예제 #12
0
    def render_params(self):
        super(ExtMultiGroupinGrid, self).render_params()

        data_url = self.url_data or (get_url(
            self.action_data) if self.action_data else None)

        def remove(this):
            if this in self._top_bar.items:
                self._top_bar.items.remove(this)

        new_url = self.url_new or (get_url(
            self.action_new) if self.action_new else None)
        if not new_url:
            remove(self._top_bar.button_new)

        edit_url = self.url_edit or (get_url(
            self.action_edit) if self.action_edit else None)
        if not edit_url:
            remove(self._top_bar.button_edit)
        else:
            self.handler_dblclick = self.dblclick_handler

        delete_url = self.url_delete or (get_url(
            self.action_delete) if self.action_delete else None)
        if not delete_url:
            remove(self._top_bar.button_delete)

        export_url = get_url(
            self.action_export) if self.action_export else None
        if not self.action_export:
            remove(self._top_bar.button_export)
        context_json = (
            self.action_context.json if self.action_context else None)

        for args in (
            (
                'actions',
                {
                    'dataUrl': data_url,
                    'newUrl': new_url,
                    'editUrl': edit_url,
                    'deleteUrl': delete_url,
                    'exportUrl': export_url,
                    'contextJson': context_json
                }
            ),
            (
                'groupedColumns',
                lambda: '[%s]' % ','.join(
                    ["'%s'" % col for col in self.grouped]
                )
            ),
            ('dataIdField', self.data_id_field),
            ('dataDisplayField', self.data_display_field),
            ('toolbar', self._top_bar.t_render_items),
            ('rowIdName', self.row_id_name),
            ('localEdit', self.local_edit),
            ('groupable', self.groupable),
            ('showTooltips', self.show_tooltips),
            ('displayInfo', self.display_info),
            ('displayMsg', self.display_message),
            ('bufferSize', self.buffer_size),
            ('nearLimit', self.near_limit),
        ):
            self._put_params_value(*args)
예제 #13
0
    def render(self):
        """
        Переопределяем рендер грида для того,
        чтобы модифицировать содержимое его
        панелей и контекстных меню
        """
        if self.action_new or self.url_new:
            self.context_menu_row.items.append(
                self.context_menu_row.menuitem_new)
            self.context_menu_grid.items.append(
                self.context_menu_grid.menuitem_new)

        if self.action_edit or self.url_edit:
            self.context_menu_row.items.append(
                self.context_menu_row.menuitem_edit)
            self.handler_dblclick = self.dblclick_handler

        if self.action_delete or self.url_delete:
            self.context_menu_row.items.append(
                self.context_menu_row.menuitem_delete)

        # контекстное меню прицепляется к гриду только в том случае, если
        # в нем есть хотя бы один пункт
        if self.context_menu_grid.items:
            self.handler_contextmenu = self.context_menu_grid
        if self.context_menu_row.items:
            self.handler_rowcontextmenu = self.context_menu_row

        #======================================================================
        # Настройка top bar
        #======================================================================
        def remove(this):
            if this in self.top_bar.items:
                self.top_bar.items.remove(this)

        # @TODO: Отрефакторить данный метод, чтобы он был не в рендеринге
        if (not self.action_data and not self.url_data and
                self.top_bar.button_refresh in self.top_bar.items):
            remove(self.top_bar.button_refresh)

        if (not self.action_delete and not self.url_delete and
                self.top_bar.button_delete in self.top_bar.items):
            remove(self.top_bar.button_delete)

        if (not self.action_edit and not self.url_edit and
                self.top_bar.button_edit in self.top_bar.items):
            remove(self.top_bar.button_edit)

        if (not self.action_new and not self.url_new and
                self.top_bar.button_new in self.top_bar.items):
            remove(self.top_bar.button_new)

        # тонкая настройка self.store
        if not self.store.url and self.action_data:
            self.store.url = get_url(self.action_data)

        if self.url_data:
            self.store.url = self.url_data

        # Стор может быть пустой
        # assert self.store.url, 'Url for store or action_data is not define'

        if self.allow_paging:
            # Значение self.store.start и так будет равно 0

            # Если store не экземпляр ExtJsonStore,
            # то у него нет атрибута limit
            if hasattr(self.store, 'limit'):
                self.store.limit = (
                    self.store.limit if self.store.limit > 0 else 25)
            self.bottom_bar = self.paging_bar

        self.render_base_config()
        self.render_params()
        return render_component(self)
예제 #14
0
def action_url(shortname):
    '''
    Темплейт таг, который возвращает URL экшена
    '''
    return urls.get_url(str(shortname))
예제 #15
0
def action_url(shortname):
    '''
    Темплейт таг, который возвращает URL экшена
    '''
    return urls.get_url(str(shortname))