Пример #1
0
    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)
Пример #2
0
 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
Пример #3
0
 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
Пример #4
0
 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
Пример #5
0
    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
Пример #6
0
 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