first commit
This commit is contained in:
66
code/utils/fu_ninja.py
Normal file
66
code/utils/fu_ninja.py
Normal file
@@ -0,0 +1,66 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# @Time : 2022/5/13 23:41
|
||||
# @Author : 臧成龙
|
||||
# @FileName: fu_ninja.py
|
||||
# @Software: PyCharm
|
||||
from typing import Any, List
|
||||
|
||||
from django.db.models import QuerySet
|
||||
from django.http import HttpRequest, HttpResponse
|
||||
from ninja import Field, ModelSchema, NinjaAPI, Query, Router, Schema
|
||||
from ninja.orm.metaclass import ModelSchemaMetaclass
|
||||
from ninja.pagination import PaginationBase
|
||||
from ninja.types import DictStrAny
|
||||
|
||||
from .fu_response import FuResponse
|
||||
from .usual import get_user_info_from_token
|
||||
|
||||
|
||||
class FuNinjaAPI(NinjaAPI):
|
||||
def create_response(
|
||||
self, request: HttpRequest, data: Any, *, status: int = 200, code: int = 2000, msg: str = "success",
|
||||
temporal_response: HttpResponse = None,
|
||||
) -> HttpResponse:
|
||||
std_data = {
|
||||
"code": code,
|
||||
"result": data,
|
||||
"message": msg,
|
||||
"success": True
|
||||
}
|
||||
content = self.renderer.render(request, std_data, response_status=status)
|
||||
content_type = "{}; charset={}".format(
|
||||
self.renderer.media_type, self.renderer.charset
|
||||
)
|
||||
|
||||
return HttpResponse(content, status=status, content_type=content_type)
|
||||
|
||||
|
||||
class MyPagination(PaginationBase):
|
||||
class Input(Schema):
|
||||
pageSize: int = Field(10, gt=0)
|
||||
page: int = Field(1, gt=-1)
|
||||
|
||||
class Output(Schema):
|
||||
items: List[Any]
|
||||
total: int
|
||||
|
||||
def paginate_queryset(
|
||||
self,
|
||||
queryset: QuerySet,
|
||||
pagination: Input,
|
||||
**params: DictStrAny,
|
||||
) -> Any:
|
||||
offset = pagination.pageSize * (pagination.page - 1)
|
||||
limit: int = pagination.pageSize
|
||||
return {
|
||||
"page": offset,
|
||||
"limit": limit,
|
||||
"items": queryset[offset: offset + limit],
|
||||
"total": self._items_count(queryset),
|
||||
} # noqa: E203
|
||||
|
||||
|
||||
class FuFilters(Schema):
|
||||
creator_id: int = Field(None, alias="creator_id")
|
||||
belong_dept: int = Field(None, alias="belong_dept")
|
||||
belong_dept__in: List[int] = Field(None, alias="belong_dept__in")
|
||||
Reference in New Issue
Block a user