From 80fa71a221cdbcfdc06a59ce97f8d30ae18305ef Mon Sep 17 00:00:00 2001 From: Andy Byers Date: Thu, 9 Jan 2025 12:00:58 +0000 Subject: [PATCH 1/2] feat(api): adds API endpoints for Janeway and Plugin versions. --- src/api/serializers.py | 28 ++++++++++++++++++++++++++++ src/api/urls.py | 2 ++ src/api/views.py | 29 +++++++++++++++++++++++++++++ 3 files changed, 59 insertions(+) diff --git a/src/api/serializers.py b/src/api/serializers.py index aa45a7a54e..a1b1a8b442 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 4b18026889..92337807fe 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 df7a49db31..accc0e3b27 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: From b09f45df2b563b6172d386270363b046a8aec4f2 Mon Sep 17 00:00:00 2001 From: Andy Byers Date: Thu, 9 Jan 2025 12:04:53 +0000 Subject: [PATCH 2/2] chore: switch single for double quotes. --- src/api/serializers.py | 18 +++++++++--------- src/api/views.py | 4 ++-- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/api/serializers.py b/src/api/serializers.py index a1b1a8b442..9f7e23a3d6 100755 --- a/src/api/serializers.py +++ b/src/api/serializers.py @@ -208,9 +208,9 @@ class VersionSerializer(serializers.ModelSerializer): class Meta: model = utils_models.Version fields = ( - 'number', - 'date', - 'rollback', + "number", + "date", + "rollback", ) @@ -218,10 +218,10 @@ class PluginSerializer(serializers.ModelSerializer): class Meta: model = utils_models.Plugin fields = ( - 'name', - 'version', - 'date_installed', - 'display_name', - 'press_wide', - 'homepage_element', + "name", + "version", + "date_installed", + "display_name", + "press_wide", + "homepage_element", ) diff --git a/src/api/views.py b/src/api/views.py index accc0e3b27..46966c0afb 100755 --- a/src/api/views.py +++ b/src/api/views.py @@ -168,7 +168,7 @@ class VersionViewSet(viewsets.ModelViewSet): def get_queryset(self): return utils_models.Version.objects.all().order_by( - '-date' + "-date", ) @@ -182,7 +182,7 @@ class PluginViewSet(viewsets.ModelViewSet): def get_queryset(self): return utils_models.Plugin.objects.all().order_by( - 'name', + "name", )