SciPost Code Repository

Skip to content
Snippets Groups Projects
Commit f7b25847 authored by Jean-Sébastien Caux's avatar Jean-Sébastien Caux
Browse files

Refactor submissions API

parent 6294cd0a
No related branches found
No related tags found
No related merge requests found
...@@ -15,8 +15,7 @@ from organizations.api.viewsets import ( ...@@ -15,8 +15,7 @@ from organizations.api.viewsets import (
OrganizationPublicAPIViewSet, OrganizationPublicAPIViewSet,
OrganizationNAPViewSet OrganizationNAPViewSet
) )
# The non-api viewsets below should be deprecated: from submissions.api.viewsets import SubmissionPublicAPIViewSet
from submissions.viewsets import SubmissionViewSet
# Next two: old style, to be deprecated: # Next two: old style, to be deprecated:
from conflicts.viewsets import ConflictOfInterestViewSet from conflicts.viewsets import ConflictOfInterestViewSet
...@@ -38,7 +37,7 @@ router.register('organizations', OrganizationPublicAPIViewSet) ...@@ -38,7 +37,7 @@ router.register('organizations', OrganizationPublicAPIViewSet)
router.register('nap', OrganizationNAPViewSet) router.register('nap', OrganizationNAPViewSet)
# submissions # submissions
router.register('submissions', SubmissionViewSet) router.register('submissions', SubmissionPublicAPIViewSet)
# Next two: old style, to be deprecated: # Next two: old style, to be deprecated:
router.register(r'news', NewsItemViewSet) router.register(r'news', NewsItemViewSet)
......
...@@ -2,4 +2,4 @@ __copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)" ...@@ -2,4 +2,4 @@ __copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)"
__license__ = "AGPL v3" __license__ = "AGPL v3"
from .submission import SubmissionSerializer from .submission import SubmissionPublicSerializer
...@@ -4,10 +4,10 @@ __license__ = "AGPL v3" ...@@ -4,10 +4,10 @@ __license__ = "AGPL v3"
from rest_framework import serializers from rest_framework import serializers
from ..models import Submission from submissions.models import Submission
class SubmissionSerializer(serializers.ModelSerializer): class SubmissionPublicSerializer(serializers.ModelSerializer):
identifier = serializers.CharField(source='preprint.identifier_w_vn_nr') identifier = serializers.CharField(source='preprint.identifier_w_vn_nr')
submission_date = serializers.CharField(source='submission_date_ymd') submission_date = serializers.CharField(source='submission_date_ymd')
url = serializers.URLField(source='get_absolute_url') url = serializers.URLField(source='get_absolute_url')
......
...@@ -2,4 +2,4 @@ __copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)" ...@@ -2,4 +2,4 @@ __copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)"
__license__ = "AGPL v3" __license__ = "AGPL v3"
from .submission import SubmissionViewSet from .submission import SubmissionPublicAPIViewSet
...@@ -2,43 +2,25 @@ __copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)" ...@@ -2,43 +2,25 @@ __copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)"
__license__ = "AGPL v3" __license__ = "AGPL v3"
from django_filters import rest_framework as df_filters
from rest_framework import viewsets from rest_framework import viewsets
from rest_framework.permissions import AllowAny from rest_framework.permissions import AllowAny
from api.viewsets.mixins import FilteringOptionsActionMixin from api.viewsets.mixins import FilteringOptionsActionMixin
from ..models import Submission from submissions.models import Submission
from ..serializers import SubmissionSerializer from submissions.api.filtersets import SubmissionPublicAPIFilterSet
from submissions.api.serializers import SubmissionPublicSerializer
class SubmissionFilterSet(df_filters.FilterSet):
class Meta:
model = Submission
fields = {
'title': ['icontains', 'contains', 'istartswith', 'iregex', 'regex'],
'author_list': ['icontains', 'contains', 'iregex', 'regex'],
'abstract': ['icontains', 'contains', 'iregex', 'regex'],
'submission_date': [
'date__year', 'date__month', 'date__exact',
'date__year__gte', 'date__year__lte', 'date__year__range',
'date__gte', 'date__lte', 'date__range'
],
'acad_field__name': ['icontains',],
'specialties__name': ['icontains',],
'topics__name': ['icontains',],
}
class SubmissionViewSet(FilteringOptionsActionMixin, class SubmissionPublicAPIViewSet(
viewsets.ReadOnlyModelViewSet): FilteringOptionsActionMixin,
viewsets.ReadOnlyModelViewSet):
queryset = Submission.objects.public_newest().unpublished() queryset = Submission.objects.public_newest().unpublished()
permission_classes = [AllowAny,] permission_classes = [AllowAny,]
serializer_class = SubmissionSerializer serializer_class = SubmissionPublicSerializer
search_fields = ['title', 'author_list', 'abstract'] search_fields = ['title', 'author_list', 'abstract']
ordering_fields = ['submission_date',] ordering_fields = ['submission_date',]
filterset_class = SubmissionFilterSet filterset_class = SubmissionPublicAPIFilterSet
default_filtering_fields = [ default_filtering_fields = [
'title__icontains', 'title__icontains',
'author_list__icontains', 'author_list__icontains',
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment