diff --git a/api/urls.py b/api/urls.py index 9bf2d58c36ce92e4354742cae1ec09beb3e9e308..dc61d316c58808accb61e669b7390c3e774f01c1 100644 --- a/api/urls.py +++ b/api/urls.py @@ -29,6 +29,7 @@ urlpatterns += [ views.OmniAuthUserInfoView.as_view(), name='omniauth_userinfo' ), + path('finances/', include('finances.api.urls')), path('journals/', include('journals.api.urls')), path('organizations/', include('organizations.api.urls')), diff --git a/finances/api/serializers.py b/finances/api/serializers.py new file mode 100644 index 0000000000000000000000000000000000000000..f22b49441dfcb28746c39080c301a2358afcc6c0 --- /dev/null +++ b/finances/api/serializers.py @@ -0,0 +1,18 @@ +__copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)" +__license__ = "AGPL v3" + + +from rest_framework import serializers + +from organizations.api.serializers import OrganizationSerializer + +from ..models import Subsidy + + +class SubsidySerializer(serializers.ModelSerializer): + organization = serializers.CharField()#OrganizationSerializer() + subsidy_type = serializers.CharField(source='get_subsidy_type_display', read_only=True) + + class Meta: + model = Subsidy + fields = '__all__' diff --git a/finances/api/urls.py b/finances/api/urls.py new file mode 100644 index 0000000000000000000000000000000000000000..da5f5c962d3c4c794773476172fc0da8cb824073 --- /dev/null +++ b/finances/api/urls.py @@ -0,0 +1,18 @@ +__copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)" +__license__ = "AGPL v3" + + +from django.urls import path + +from finances.api import views as api_views + + +urlpatterns = [ + + path ( # /api/finances/subsidies + 'subsidies', + api_views.SubsidyListAPIView.as_view(), + name='subsidies' + ), + +] diff --git a/finances/api/views.py b/finances/api/views.py new file mode 100644 index 0000000000000000000000000000000000000000..0c10b891284c9ad03a6d88c654dddace15cfb5f8 --- /dev/null +++ b/finances/api/views.py @@ -0,0 +1,24 @@ +__copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)" +__license__ = "AGPL v3" + + +from rest_framework.generics import ListAPIView, RetrieveAPIView +from rest_framework.permissions import BasePermission +from rest_framework.settings import api_settings +from rest_framework_csv import renderers as r + +from ..models import Subsidy +from .serializers import SubsidySerializer + + +class CanManageSubsidies(BasePermission): + def has_permission(self, request, view): + return request.user.has_perm('scipost:can_manage_subsidies') + + +class SubsidyListAPIView(ListAPIView): + pagination_class = None + permission_classes = [CanManageSubsidies] + queryset = Subsidy.objects.all() + renderer_classes = tuple(api_settings.DEFAULT_RENDERER_CLASSES) + (r.CSVRenderer, ) + serializer_class = SubsidySerializer diff --git a/requirements.txt b/requirements.txt index 4ba2e302f88ae52c8f85a4050b59816122f4fe51..65021f9c083f51b221500b3ef14da66967060e2a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -25,6 +25,7 @@ django-oauth-toolkit==1.3.2 # 2020-09-03 django-silk==2.0.0 django-webpack-loader==0.5 django-maintenancemode-2==1.1.11 +djangorestframework-csv # 2020-10-13 plotly==4.6.0 # 2020-05-05