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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
def action_url(shortname): ''' Темплейт таг, который возвращает URL экшена ''' return urls.get_url(str(shortname))