diff --git a/src/api/serializers.py b/src/api/serializers.py index aa45a7a54..9f7e23a3d 100755 --- a/src/api/serializers.py +++ b/src/api/serializers.py @@ -4,6 +4,7 @@ from journal import models as journal_models from submission import models as submission_models from repository import models as repository_models +from utils import models as utils_models class LicenceSerializer(serializers.HyperlinkedModelSerializer): @@ -129,6 +130,7 @@ class Meta: 'salutation', 'orcid', 'is_active', ) + class PreprintAccountSerializer(serializers.HyperlinkedModelSerializer): class Meta: @@ -138,6 +140,7 @@ class Meta: 'salutation', 'orcid', ) + class AccountRoleSerializer(serializers.ModelSerializer): class Meta: @@ -160,11 +163,13 @@ def validate(self, data): return data + class RepositoryFieldAnswerSerializer(serializers.ModelSerializer): class Meta: model = repository_models.RepositoryFieldAnswer fields = ['pk', 'answer'] + class PreprintSerializer(serializers.ModelSerializer): class Meta: @@ -197,3 +202,26 @@ class Meta: many=True, read_only=True, ) + + +class VersionSerializer(serializers.ModelSerializer): + class Meta: + model = utils_models.Version + fields = ( + "number", + "date", + "rollback", + ) + + +class PluginSerializer(serializers.ModelSerializer): + class Meta: + model = utils_models.Plugin + fields = ( + "name", + "version", + "date_installed", + "display_name", + "press_wide", + "homepage_element", + ) diff --git a/src/api/urls.py b/src/api/urls.py index 4b1802688..92337807f 100755 --- a/src/api/urls.py +++ b/src/api/urls.py @@ -15,6 +15,8 @@ router.register(r'licences', views.LicenceViewSet, 'licence') router.register(r'keywords', views.KeywordsViewSet, 'keywords') router.register(r'accounts', views.AccountViewSet, 'accounts') +router.register(r'versions', views.VersionViewSet, 'versions') +router.register(r'plugins', views.PluginViewSet, 'plugins') # Wire up our API using automatic URL routing. # Additionally, we include login URLs for the browsable API. diff --git a/src/api/views.py b/src/api/views.py index df7a49db3..46966c0af 100755 --- a/src/api/views.py +++ b/src/api/views.py @@ -18,6 +18,7 @@ from submission import models as submission_models from journal import models as journal_models from repository import models as repository_models +from utils import models as utils_models @api_view(['GET']) @@ -157,6 +158,34 @@ def get_queryset(self): stage=repository_models.STAGE_PREPRINT_PUBLISHED) +@permission_classes((api_permissions.IsEditor, )) +class VersionViewSet(viewsets.ModelViewSet): + """ + API Endpoint for Janeway version data. + """ + serializer_class = serializers.VersionSerializer + http_method_names = ["get"] + + def get_queryset(self): + return utils_models.Version.objects.all().order_by( + "-date", + ) + + +@permission_classes((api_permissions.IsEditor, )) +class PluginViewSet(viewsets.ModelViewSet): + """ + API Endpoint for Janeway plugin version data. + """ + serializer_class = serializers.PluginSerializer + http_method_names = ["get"] + + def get_queryset(self): + return utils_models.Plugin.objects.all().order_by( + "name", + ) + + def oai(request): articles = submission_models.Article.objects.filter(stage=submission_models.STAGE_PUBLISHED) if request.journal: