SciPost Code Repository

Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
publication.py 1.16 KiB
__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 journals.models import Publication
from journals.regexes import PUBLICATION_DOI_LABEL_REGEX
from journals.api.filtersets import PublicationPublicAPIFilterSet
from journals.api.serializers import PublicationPublicSerializer


class PublicationPublicAPIViewSet(
        FilteringOptionsActionMixin,
        viewsets.ReadOnlyModelViewSet):
    queryset = Publication.objects.published()
    permission_classes = [AllowAny,]
    serializer_class = PublicationPublicSerializer
    lookup_field = 'doi_label'
    lookup_value_regex = PUBLICATION_DOI_LABEL_REGEX
    search_fields = ['title', 'author_list', 'abstract', 'doi_label']
    ordering_fields = ['publication_date',]
    filterset_class = PublicationPublicAPIFilterSet
    default_filtering_fields = [
        'title__icontains',
        'author_list__icontains',
        'abstract__icontains',
        'doi_label__icontains'
    ]