SciPost Code Repository

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

Add API endpoint for fellowships

parent 5fd7bd3e
No related branches found
No related tags found
No related merge requests found
......@@ -6,6 +6,10 @@ from django.urls import include, path
from rest_framework import routers
# colleges
from colleges.api.viewsets import FellowshipPublicAPIViewSet
# journals
from journals.api.viewsets import (
PublicationPublicAPIViewSet,
......@@ -51,6 +55,10 @@ router.register("search/submissions", SubmissionPublicSearchAPIViewSet)
# publicly-accessible routes
#############################
# colleges
router.register("colleges/fellowships", FellowshipPublicAPIViewSet)
# journals
router.register("publications", PublicationPublicAPIViewSet)
router.register("pubfractions", PubFractionPublicAPIViewSet)
......
__copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)"
__license__ = "AGPL v3"
from django_filters import rest_framework as df_filters
from colleges.models import Fellowship
class FellowshipPublicAPIFilterSet(df_filters.FilterSet):
class Meta:
model = Fellowship
fields = {
"contributor__profile__last_name": [
"icontains",
"contains",
"istartswith",
"startswith",
],
"contributor__profile__affiliations__organization__country": [
"icontains",
],
"college__name": [
"icontains",
],
"start_date": [
"year",
"month",
"exact",
"year__gte",
"year__lte",
"year__range",
"gte",
"lte",
"range",
],
"until_date": [
"year",
"month",
"exact",
"year__gte",
"year__lte",
"year__range",
"gte",
"lte",
"range",
],
}
__copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)"
__license__ = "AGPL v3"
from rest_framework import serializers
from api.serializers import DynamicFieldsModelSerializer
from colleges.models import Fellowship
from scipost.api.serializers import ContributorPublicAPISerializer
class FellowshipPublicAPISerializer(DynamicFieldsModelSerializer):
contributor = ContributorPublicAPISerializer()
college = serializers.StringRelatedField()
class Meta:
model = Fellowship
fields = [
"contributor",
"college",
"start_date",
"until_date",
"status",
"guest",
]
__copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)"
__license__ = "AGPL v3"
from api.viewsets.base import ExtraFilteredReadOnlyModelViewSet
from api.viewsets.mixins import FilteringOptionsActionMixin
from colleges.models import Fellowship
from colleges.api.filtersets import FellowshipPublicAPIFilterSet
from colleges.api.serializers import FellowshipPublicAPISerializer
class FellowshipPublicAPIViewSet(
FilteringOptionsActionMixin, ExtraFilteredReadOnlyModelViewSet
):
queryset = Fellowship.objects.all()
serializer_class = FellowshipPublicAPISerializer
search_fields = [
"first_name",
"last_name",
]
ordering_fields = [
"last_name",
"acad_field",
]
filterset_class = FellowshipPublicAPIFilterSet
default_filtering_fields = [
"last_name__icontains",
"profile__affiliations__country__name__icontains",
]
__copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)"
__license__ = "AGPL v3"
from rest_framework import serializers
from api.serializers import DynamicFieldsModelSerializer
from profiles.models import Profile, Affiliation
from organizations.api.serializers import OrganizationPublicSerializer
class AffiliationPublicAPISerializer(DynamicFieldsModelSerializer):
organization = OrganizationPublicSerializer() #serializers.StringRelatedField()
class Meta:
model = Affiliation
fields = [
"organization",
"category",
"date_from",
"date_until",
]
class ProfilePublicAPISerializer(DynamicFieldsModelSerializer):
title = serializers.CharField(source="get_title_display")
acad_field = serializers.StringRelatedField()
specialties = serializers.StringRelatedField(many=True)
topics = serializers.StringRelatedField(many=True)
affiliations = AffiliationPublicAPISerializer(many=True)
class Meta:
model = Profile
fields = [
"title",
"first_name",
"last_name",
"orcid_id",
"webpage",
"acad_field",
"specialties",
"topics",
"affiliations",
]
__copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)"
__license__ = "AGPL v3"
from rest_framework import serializers
from api.serializers import DynamicFieldsModelSerializer
from scipost.models import Contributor
from profiles.api.serializers import ProfilePublicAPISerializer
class ContributorPublicAPISerializer(DynamicFieldsModelSerializer):
profile = ProfilePublicAPISerializer()
class Meta:
model = Contributor
fields = [
"profile",
]
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