first commit

This commit is contained in:
lihansani
2026-07-13 15:37:05 +08:00
commit 8b11aa2efc
299 changed files with 206339 additions and 0 deletions

66
code/utils/fu_ninja.py Normal file
View 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")