mirror of
				https://gitlab.crans.org/bde/nk20
				synced 2025-11-03 17:08:47 +01:00 
			
		
		
		
	API Support (useless, but...)
This commit is contained in:
		
							
								
								
									
										34
									
								
								apps/treasury/api/serializers.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								apps/treasury/api/serializers.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,34 @@
 | 
			
		||||
# Copyright (C) 2018-2020 by BDE ENS Paris-Saclay
 | 
			
		||||
# SPDX-License-Identifier: GPL-3.0-or-later
 | 
			
		||||
 | 
			
		||||
from rest_framework import serializers
 | 
			
		||||
 | 
			
		||||
from ..models import Invoice, Product
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ProductSerializer(serializers.ModelSerializer):
 | 
			
		||||
    """
 | 
			
		||||
    REST API Serializer for Product types.
 | 
			
		||||
    The djangorestframework plugin will analyse the model `Product` and parse all fields in the API.
 | 
			
		||||
    """
 | 
			
		||||
 | 
			
		||||
    class Meta:
 | 
			
		||||
        model = Product
 | 
			
		||||
        fields = '__all__'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class InvoiceSerializer(serializers.ModelSerializer):
 | 
			
		||||
    """
 | 
			
		||||
    REST API Serializer for Invoice types.
 | 
			
		||||
    The djangorestframework plugin will analyse the model `Invoice` and parse all fields in the API.
 | 
			
		||||
    """
 | 
			
		||||
    class Meta:
 | 
			
		||||
        model = Invoice
 | 
			
		||||
        fields = '__all__'
 | 
			
		||||
        read_only_fields = ('bde',)
 | 
			
		||||
 | 
			
		||||
    products = serializers.SerializerMethodField()
 | 
			
		||||
 | 
			
		||||
    def get_products(self, obj):
 | 
			
		||||
        return serializers.ListSerializer(child=ProductSerializer())\
 | 
			
		||||
            .to_representation(Product.objects.filter(invoice=obj).all())
 | 
			
		||||
							
								
								
									
										12
									
								
								apps/treasury/api/urls.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								apps/treasury/api/urls.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
			
		||||
# Copyright (C) 2018-2020 by BDE ENS Paris-Saclay
 | 
			
		||||
# SPDX-License-Identifier: GPL-3.0-or-later
 | 
			
		||||
 | 
			
		||||
from .views import InvoiceViewSet, ProductViewSet
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def register_treasury_urls(router, path):
 | 
			
		||||
    """
 | 
			
		||||
    Configure router for treasury REST API.
 | 
			
		||||
    """
 | 
			
		||||
    router.register(path + '/invoice', InvoiceViewSet)
 | 
			
		||||
    router.register(path + '/product', ProductViewSet)
 | 
			
		||||
							
								
								
									
										33
									
								
								apps/treasury/api/views.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								apps/treasury/api/views.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,33 @@
 | 
			
		||||
# Copyright (C) 2018-2020 by BDE ENS Paris-Saclay
 | 
			
		||||
# SPDX-License-Identifier: GPL-3.0-or-later
 | 
			
		||||
 | 
			
		||||
from django_filters.rest_framework import DjangoFilterBackend
 | 
			
		||||
from rest_framework.filters import SearchFilter
 | 
			
		||||
from api.viewsets import ReadProtectedModelViewSet
 | 
			
		||||
 | 
			
		||||
from .serializers import InvoiceSerializer, ProductSerializer
 | 
			
		||||
from ..models import Invoice, Product
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class InvoiceViewSet(ReadProtectedModelViewSet):
 | 
			
		||||
    """
 | 
			
		||||
    REST API View set.
 | 
			
		||||
    The djangorestframework plugin will get all `Invoice` objects, serialize it to JSON with the given serializer,
 | 
			
		||||
    then render it on /api/treasury/invoice/
 | 
			
		||||
    """
 | 
			
		||||
    queryset = Invoice.objects.all()
 | 
			
		||||
    serializer_class = InvoiceSerializer
 | 
			
		||||
    filter_backends = [DjangoFilterBackend]
 | 
			
		||||
    filterset_fields = ['bde', ]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ProductViewSet(ReadProtectedModelViewSet):
 | 
			
		||||
    """
 | 
			
		||||
    REST API View set.
 | 
			
		||||
    The djangorestframework plugin will get all `Product` objects, serialize it to JSON with the given serializer,
 | 
			
		||||
    then render it on /api/treasury/product/
 | 
			
		||||
    """
 | 
			
		||||
    queryset = Product.objects.all()
 | 
			
		||||
    serializer_class = ProductSerializer
 | 
			
		||||
    filter_backends = [SearchFilter]
 | 
			
		||||
    search_fields = ['$designation', ]
 | 
			
		||||
		Reference in New Issue
	
	Block a user