Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
__copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)"
__license__ = "AGPL v3"
from django_filters import rest_framework as df_filters
from rest_framework import viewsets
from rest_framework.permissions import AllowAny
from api.viewsets.mixins import FilteringOptionsActionMixin
from ..models import OrgPubFraction
from ..serializers import PubFractionSerializer
class PubFractionFilterSet(df_filters.FilterSet):
class Meta:
model = OrgPubFraction
fields = {
'organization__name': ['icontains', 'istartswith', 'exact'],
'organization__country': ['exact',],
'publication__publication_date': [
'year', 'month', 'exact',
'year__gte', 'year__lte', 'year__range',
'gte', 'lte', 'range'
],
'fraction': ['gte', 'lte', 'exact']
}
class PubFractionViewSet(FilteringOptionsActionMixin,
viewsets.ReadOnlyModelViewSet):
queryset = OrgPubFraction.objects.all()
permission_classes = [AllowAny,]
serializer_class = PubFractionSerializer
search_fields = [
'organization__name',
'publication__publication_date__year'
]
ordering_fields = ['-publication_date',]
filterset_class = PubFractionFilterSet
default_filtering_fields = [
'organization__name__icontains',
'publication__publication_date__year__exact',
]