63 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			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) |