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)