sync from local backup
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
from rest_framework import viewsets, permissions
|
||||
from rest_framework.pagination import PageNumberPagination
|
||||
from rest_framework.response import Response
|
||||
from drf_yasg.utils import swagger_auto_schema
|
||||
from drf_yasg import openapi
|
||||
from chunyu_project.common_schemas import success_response
|
||||
|
||||
from .models import Changelog
|
||||
from .serializers import ChangelogSerializer
|
||||
|
||||
|
||||
class ChangelogPagination(PageNumberPagination):
|
||||
page_size = 10
|
||||
page_size_query_param = 'page_size'
|
||||
max_page_size = 100
|
||||
|
||||
def get_paginated_response(self, data):
|
||||
return Response({
|
||||
'code': 10000,
|
||||
'message': 'Success',
|
||||
'data': {
|
||||
'count': self.page.paginator.count,
|
||||
'next': self.get_next_link(),
|
||||
'previous': self.get_previous_link(),
|
||||
'results': data,
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
class ChangelogViewSet(viewsets.ModelViewSet):
|
||||
"""更新日志 ViewSet"""
|
||||
queryset = Changelog.objects.filter(is_published=True)
|
||||
serializer_class = ChangelogSerializer
|
||||
permission_classes = [permissions.AllowAny]
|
||||
pagination_class = ChangelogPagination
|
||||
http_method_names = ['get']
|
||||
|
||||
def get_queryset(self):
|
||||
queryset = Changelog.objects.filter(is_published=True)
|
||||
update_type = self.request.query_params.get('update_type')
|
||||
if update_type:
|
||||
queryset = queryset.filter(update_type=update_type)
|
||||
return queryset.order_by('-published_at')
|
||||
|
||||
@swagger_auto_schema(
|
||||
tags=['更新日志'],
|
||||
operation_summary='获取更新日志列表',
|
||||
operation_description='获取已发布的更新日志列表,支持分页和按类型筛选',
|
||||
manual_parameters=[
|
||||
openapi.Parameter('update_type', openapi.IN_QUERY, description='更新类型筛选: new_feature/improvement/bug_fix/other', type=openapi.TYPE_STRING),
|
||||
openapi.Parameter('page', openapi.IN_QUERY, description='页码', type=openapi.TYPE_INTEGER),
|
||||
openapi.Parameter('page_size', openapi.IN_QUERY, description='每页数量', type=openapi.TYPE_INTEGER),
|
||||
],
|
||||
responses={200: success_response}
|
||||
)
|
||||
def list(self, request, *args, **kwargs):
|
||||
return super().list(request, *args, **kwargs)
|
||||
|
||||
@swagger_auto_schema(
|
||||
tags=['更新日志'],
|
||||
operation_summary='获取更新日志详情',
|
||||
operation_description='获取指定更新日志的详细信息',
|
||||
manual_parameters=[
|
||||
openapi.Parameter('pk', openapi.IN_PATH, description='更新日志ID', type=openapi.TYPE_INTEGER, required=True),
|
||||
],
|
||||
responses={200: success_response}
|
||||
)
|
||||
def retrieve(self, request, *args, **kwargs):
|
||||
return super().retrieve(request, *args, **kwargs)
|
||||
Reference in New Issue
Block a user