mirror of https://gitlab.crans.org/bde/nk20
API Support (useless, but...)
This commit is contained in:
parent
d641b4cc1c
commit
5ac10b58d5
|
@ -12,6 +12,7 @@ from activity.api.urls import register_activity_urls
|
||||||
from api.viewsets import ReadProtectedModelViewSet
|
from api.viewsets import ReadProtectedModelViewSet
|
||||||
from member.api.urls import register_members_urls
|
from member.api.urls import register_members_urls
|
||||||
from note.api.urls import register_note_urls
|
from note.api.urls import register_note_urls
|
||||||
|
from treasury.api.urls import register_treasury_urls
|
||||||
from logs.api.urls import register_logs_urls
|
from logs.api.urls import register_logs_urls
|
||||||
from permission.api.urls import register_permission_urls
|
from permission.api.urls import register_permission_urls
|
||||||
|
|
||||||
|
@ -74,6 +75,7 @@ router.register('user', UserViewSet)
|
||||||
register_members_urls(router, 'members')
|
register_members_urls(router, 'members')
|
||||||
register_activity_urls(router, 'activity')
|
register_activity_urls(router, 'activity')
|
||||||
register_note_urls(router, 'note')
|
register_note_urls(router, 'note')
|
||||||
|
register_treasury_urls(router, 'treasury')
|
||||||
register_permission_urls(router, 'permission')
|
register_permission_urls(router, 'permission')
|
||||||
register_logs_urls(router, 'logs')
|
register_logs_urls(router, 'logs')
|
||||||
|
|
||||||
|
|
|
@ -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())
|
|
@ -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)
|
|
@ -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', ]
|
Loading…
Reference in New Issue