def get_rows(self, parent_id, offset, limit, filter): # если справочник состоит только из дерева и у него просят запись, # то надо брать из модели дерева # TODO: возможно это не надо было делать - раз не туда обратились, # значит сами виноваты if self.list_model: query = None if parent_id == BaseTreeDictionaryModelActions.ALL_ROWS: # отображаются все данные query = self.list_model.objects else: # отображаются данные с фильтрацией по значению parent_id query = self.list_model.objects.filter( **{self.list_parent_field: parent_id}) # Подтягиваем группу, т.к. при сериализации она требуется query = query.select_related(self.list_parent_field) query = utils.apply_sort_order( query, self.list_columns, self.list_sort_order) query = utils.apply_search_filter( query, filter, self.filter_fields) # Для работы пейджинга нужно передавать общее количество записей total = query.count() # Срез данных для страницы if limit > 0: query = query[offset: offset + limit] result = {'rows': list(query.all()), 'total': total} return result else: return self.get_nodes(parent_id, filter)
def get_rows(self, offset, limit, filter, user_sort=''): sort_order = user_sort.split(',') if user_sort else self.list_sort_order filter_fields = self._default_filter() query = utils.apply_sort_order( self.model.objects, self.list_columns, sort_order) query = utils.apply_search_filter(query, filter, filter_fields) total = query.count() if limit > 0: query = query[offset: offset + limit] result = {'rows': list(query.all()), 'total': total} return result
def get_rows(self, offset, limit, filter, user_sort=''): sort_order = user_sort.split( ',') if user_sort else self.list_sort_order filter_fields = self._default_filter() query = utils.apply_sort_order(self.model.objects, self.list_columns, sort_order) query = utils.apply_search_filter(query, filter, filter_fields) total = query.count() if limit > 0: query = query[offset:offset + limit] result = {'rows': list(query.all()), 'total': total} return result
def get_rows_modified( self, offset, limit, filter, user_sort='', request=None, context=None): ''' Возвращает данные для грида справочника ''' sort_order = user_sort.split(',') if user_sort else self.list_sort_order filter_fields = self._default_filter() query = self.model.objects.all() query = utils.apply_sort_order(query, self.list_columns, sort_order) query = utils.apply_search_filter(query, filter, filter_fields) if (hasattr(self, 'modify_rows_query') and callable(self.modify_rows_query)): query = self.modify_rows_query(query, request, context) total = query.count() if limit > 0: query = query[offset: offset + limit] result = {'rows': list(query), 'total': total} return result
def get_rows(self, request, context, offset, limit, filter, user_sort=''): if user_sort: sort_order = [user_sort] if not isinstance(user_sort, (list, tuple,)) else user_sort else: sort_order = self.list_sort_order filter_fields = self._default_filter() query = utils.apply_sort_order(self.model.objects, self.list_columns, sort_order) query = utils.apply_search_filter(query, filter, filter_fields) query = utils.detect_related_fields(query, self.list_columns) query = self.modify_get_rows(query, request, context) total = query.count() if limit > 0: query = query[offset: offset + limit] result = {'rows': list(query.all()), 'total': total} return result
def get_rows_modified(self, offset, limit, filter, user_sort='', request=None, context=None): ''' Возвращает данные для грида справочника ''' sort_order = user_sort.split( ',') if user_sort else self.list_sort_order filter_fields = self._default_filter() query = self.model.objects.all() query = utils.apply_sort_order(query, self.list_columns, sort_order) query = utils.apply_search_filter(query, filter, filter_fields) if (hasattr(self, 'modify_rows_query') and callable(self.modify_rows_query)): query = self.modify_rows_query(query, request, context) total = query.count() if limit > 0: query = query[offset:offset + limit] result = {'rows': list(query), 'total': total} return result