def get(self, request, format=None): payment = Payment.objects.all().using('default').order_by( 'id') # TODO orderby something logical paginator = PageNumberPagination() paginator.max_page_size = 100 paginator.page_size_query_param = 'page_size' result_page = paginator.paginate_queryset(payment, request) serializer = PaymentSerializer(result_page, many=True, context={'request': request}) current_page = paginator.page.number total_pages = int(str(paginator.page).split(" ")[3].split(">")[0]) page_size = len(serializer.data) previous_page = str(paginator.get_previous_link()) next_page = str(paginator.get_next_link()) return JsonResponse(data={ 'page_size': page_size, 'results': serializer.data, 'next_page': next_page, 'previous_page': previous_page, 'current_page': current_page, 'total_pages': total_pages }, status=200, safe=False)
def get(self, request, format="JSON"): try: per_list = Permission.objects.filter() page = PageNumberPagination() # 生成分页器对象 page.page_size = 100 # 设置每页的条数 # page.page_query_param = 'page' # url中查询第几页的key默认为'page # page.page_size_query_param = 'limit' # url中这一页数据的条数的key, 默认为None page.max_page_size = 50 # 每页的最大数据条数 page_list = page.paginate_queryset(per_list, request, self) # 生成这一页的数据列表 # page_list. # 将这一页的数据列表序列化 # return Response(ret.data) # 返回查到的数据列表 ret = PowerSerializer(page_list, many=True) for data in ret.data: data['children'] = [] for data in ret.data: if data['parent']: for vdata in ret.data: if vdata['id'] == data['parent']: vdata['children'].append((data)) Per = [] for data in ret.data: if data['parent'] == None: Per.append(data) jsondata = {} jsondata['code'] = 20000 jsondata['total'] = page.page.paginator.count jsondata['items'] = Per return Response(jsondata) except: return Response({'code': 0, 'msg': '设备列表获取失败'})
def list_user_info_endpoint(request): """ 列出所有用户,当前操作对象为超级管理员时,可指定某个用户名,不批定则列出所有用户 普通用户则列出自身帐户信息,以及所有子帐户信息 :param request: :return: """ username = request.GET.get('username', None) req_user = request.user users = User.objects. \ select_related('profile'). \ select_related('capacity_quota'). \ select_related('bandwidth_quota'). \ select_related('keys') if req_user.is_superuser: if username: user_list = users.filter( Q(username__contains=username) | Q(profile__parent_uid=username)) else: user_list = users.all() else: username = req_user.username user_list = users.filter( Q(username=username) | Q(profile__parent_uid=username) | Q(profile__root_uid=username)) try: cur_page = int(request.GET.get('page', 1)) size = int(request.GET.get('size', settings.PAGE_SIZE)) except ValueError: cur_page = 1 size = settings.PAGE_SIZE page = PageNumberPagination() page.page_size = size page.number = cur_page page.max_page_size = 20 ret = page.paginate_queryset(user_list.order_by('-id'), request) ser = UserSerialize(ret, many=True) return Response({ 'code': 0, 'msg': 'success', 'data': ser.data, 'page_info': { 'record_count': len(users), 'page_size': size, 'current_page': page.page.number } })
def get(self, request): bucket_obj = self.model.objects.\ select_related('user').\ select_related('user__profile'). \ select_related('bucket_region') # 管理员查询所有用户的bucket,非管理员仅可查看自己的bucket if not request.user.is_superuser: # 查询已授到用户的所有桶列表 authorized_bucket_list = BucketAcl.objects.filter(user=request.user).values_list('bucket_id', flat=True) # authorized_bucket_list = [i[0] for i in authorized_bucket] self.queryset = bucket_obj.filter( Q(user=request.user) | Q(bucket_id__in=authorized_bucket_list) ) else: kw = request.GET.get('keyword', None) if kw: self.queryset = bucket_obj.filter( Q(user__first_name=kw) | Q(user__username=kw) | Q(name__contains=kw) | Q(bucket_region__name=kw) ) else: self.queryset = bucket_obj.all() # 获取分页参数并进行分页 try: cur_page = int(request.GET.get('page', 1)) page_size = int(request.GET.get('size', settings.PAGE_SIZE)) except ValueError: cur_page = 1 page_size = settings.PAGE_SIZE page = PageNumberPagination() page.page_size = page_size page.number = cur_page page.max_page_size = 20 ret = page.paginate_queryset(self.queryset.order_by('-bucket_id'), request) ser = BucketSerialize(ret, many=True) # 返回计求数据 return Response({ 'code': 0, 'msg': 'success', 'data': ser.data, 'page_info': { 'record_count': self.queryset.count(), 'page_size': page_size, 'current_page': page.number } })
def list_objects_endpoint(request): """ 列出桶内的所有文件对象和目录 """ path = request.GET.get('path', None) bucket_name = request.GET.get('bucket_name', None) try: b = Buckets.objects.get(name=bucket_name) except Buckets.DoesNotExist: raise NotFound(detail='not found bucket') verify_bucket_owner_and_permission(request, PermAction.R, b) res = Objects.objects.select_related('bucket').select_related( 'owner').filter(bucket=b) if path: res = res.filter(root=path.replace(',', '/')) else: res = res.filter(Q(root=None) | Q(root='')) try: cur_page = int(request.GET.get('page', 1)) size = int(request.GET.get('size', settings.PAGE_SIZE)) except ValueError: cur_page = 1 size = settings.PAGE_SIZE page = PageNumberPagination() page.page_size = size page.number = cur_page page.max_page_size = 20 ret = page.paginate_queryset(res.order_by('type', '-obj_id'), request) ser = ObjectsSerialize(ret, many=True) return Response({ 'code': 0, 'msg': 'success', 'data': ser.data, 'page_info': { 'record_count': len(res), 'pag_size': size, 'current_page': cur_page, } })
def get(self, request, format="JSON"): user = request.user try: query_params = list(request.query_params.keys()) kwargs = {} if 'name' in query_params: kwargs['name__contains'] = request.query_params['name'] dep_list = Department.objects.filter(**kwargs) page = PageNumberPagination() # 生成分页器对象 page.page_size = 200 # 设置每页的条数 page.max_page_size = 50 # 每页的最大数据条数 page_list = page.paginate_queryset(dep_list, request, self) # 生成这一页的数据列表 # page_list. # 将这一页的数据列表序列化 # return Response(ret.data) # 返回查到的数据列表 ret = OrgSerializer(page_list, many=True) for data in ret.data: data['children'] = [] for data in ret.data: if data['parent']: for vdata in ret.data: if vdata['id'] == data['parent']['id']: vdata['children'].append((data)) Per = [] for data in ret.data: for vdata in ret.data: if 'children' in vdata and len(vdata['children']) == 0: vdata.pop('children') if data['id'] == user.dept.id: Per.append(data) jsondata = {} jsondata['code'] = 20000 jsondata['total'] = page.page.paginator.count jsondata['items'] = Per return Response(jsondata) except: return Response({'code': 0, 'msg': '设备列表获取失败'})
def get(self, request): obj = Order.objects.select_related('user').select_related('plan') order_no = request.GET.get('order_no', None) if order_no: data = obj.filter(no=order_no) if data and request.user.is_superuser is not None: data = data.filter(user=request.user) else: data = obj.all() if request.user.is_superuser else obj.filter(user=request.user) self.queryset = data.order_by('-id') try: cur_page = int(request.GET.get('page', 1)) size = int(request.GET.get('size', settings.PAGE_SIZE)) except ValueError: cur_page = 1 size = settings.PAGE_SIZE page = PageNumberPagination() page.page_size = size page.number = cur_page page.max_page_size = 20 ret = page.paginate_queryset(self.queryset, request) ser = OrderSerialize(ret, many=True) return Response({ 'code': 0, 'msg': 'success', 'data': ser.data, 'page_info': { 'record_count': len(ser.data), 'page_size': size, 'current_page': page.page.number } })