factory/apps/srm/views.py

63 lines
2.1 KiB
Python

from django.shortcuts import render
# Create your views here.
from django.shortcuts import render
from apps.utils.viewsets import CustomModelViewSet, CustomGenericViewSet
from .models import PatentInfo, Papersecret, PatentRecord
from .serializers import PatentInfoSerializer, PaperSeSerializer, PatentRecordSerializer
from rest_framework.exceptions import ParseError
from rest_framework.response import Response
from rest_framework.decorators import action
class PatentInfoViewSet(CustomModelViewSet):
"""list: 专利
专利
"""
queryset = PatentInfo.objects.all()
serializer_class = PatentInfoSerializer
filterset_fields = ["name", "author", "type"]
ordering = ["-create_time", "name", "author", "type"]
class PapersecretViewSet(CustomModelViewSet):
"""list: 论文申密审批
论文申密审批
"""
queryset = Papersecret.objects.all()
serializer_class = PaperSeSerializer
filterset_fields = ["paper_name", "author"]
ordering = ["-create_time", "paper_name"]
class PatentRecordViewSet(CustomModelViewSet):
"""list: 专利台账登记
专利台账登记
"""
queryset = PatentRecord.objects.all()
serializer_class = PatentRecordSerializer
select_related_fields = ["patent"]
filterset_fields = ["volume_number", "volume_number","inventors"]
ordering = ["-create_time", "volume_number"]
search_fields = ["volume_number", "volume_number", "inventors"]
def get_queryset(self):
qs = super().get_queryset()
patent_type = self.request.query_params.get('patent_type', None)
if patent_type:
qs = qs.filter(patent__type=patent_type)
return qs
@action(detail=False, methods=['get'])
def patent_name(self, request):
"""获取专利列表"""
search = request.query_params.get('search', '')
queryset = PatentInfo.objects.all()
if search:
queryset = queryset.filter(name__icontains=search)
patents = [{'id': patent.id, 'name': patent.name} for patent in queryset]
return Response(patents)