Skip to content

Commit 06a639b

Browse files
SilviaAmAmJulian Roeland
authored and
Julian Roeland
committed
✨ [#728] Add endpoint to retrieve version info
1 parent f562818 commit 06a639b

File tree

3 files changed

+47
-1
lines changed

3 files changed

+47
-1
lines changed

backend/src/openarchiefbeheer/api/urls.py

+2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
from openarchiefbeheer.accounts.api.views import UsersView, WhoAmIView
1111
from openarchiefbeheer.config.api.views import (
12+
ApplicationInfoView,
1213
ArchiveConfigView,
1314
HealthCheckView,
1415
OIDCInfoView,
@@ -122,6 +123,7 @@
122123
name="users",
123124
),
124125
path("whoami/", WhoAmIView.as_view(), name="whoami"),
126+
path("app-info/", ApplicationInfoView.as_view(), name="app-info"),
125127
path(
126128
"destruction-list-statuses/",
127129
ListStatusesListView.as_view(),

backend/src/openarchiefbeheer/config/api/serializers.py

+24
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from django.conf import settings
12
from django.utils.translation import gettext_lazy as _
23

34
from drf_spectacular.utils import extend_schema_field
@@ -52,3 +53,26 @@ def get_login_url(self, config: OpenIDConnectConfig) -> str:
5253

5354
request = self.context.get("request")
5455
return reverse("oidc_authentication_init", request=request)
56+
57+
58+
class ApplicationInfoSerializer(serializers.Serializer):
59+
release = serializers.SerializerMethodField(
60+
label=_("Application version"),
61+
help_text=_(
62+
"This uses the git tag if one is present, otherwise it defaults to the git commit hash. "
63+
"If the commit hash cannot be resolved, it will be empty."
64+
),
65+
)
66+
git_sha = serializers.SerializerMethodField(
67+
label=_("Application git commit hash"),
68+
help_text=_(
69+
"This returns the git commit hash if it can be resolved. "
70+
"Otherwise, it will be empty."
71+
),
72+
)
73+
74+
def get_release(self, data) -> str:
75+
return settings.RELEASE
76+
77+
def get_git_sha(self, data) -> str:
78+
return settings.GIT_SHA

backend/src/openarchiefbeheer/config/api/views.py

+21-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,11 @@
1111

1212
from ..health_checks import is_configuration_complete
1313
from ..models import ArchiveConfig
14-
from .serializers import ArchiveConfigSerializer, OIDCInfoSerializer
14+
from .serializers import (
15+
ApplicationInfoSerializer,
16+
ArchiveConfigSerializer,
17+
OIDCInfoSerializer,
18+
)
1519

1620

1721
class ArchiveConfigView(APIView):
@@ -128,3 +132,19 @@ class HealthCheckView(APIView):
128132
def get(self, request: Request, *args, **kwargs):
129133
results = is_configuration_complete()
130134
return Response(results)
135+
136+
137+
@extend_schema(
138+
tags=["Configuration"],
139+
summary=_("App info"),
140+
description=_("Returns information about the application."),
141+
responses={
142+
200: ApplicationInfoSerializer(),
143+
},
144+
)
145+
class ApplicationInfoView(APIView):
146+
def get(self, request: Request, *args, **kwargs):
147+
serializer = ApplicationInfoSerializer(data={})
148+
serializer.is_valid()
149+
150+
return Response(serializer.data)

0 commit comments

Comments
 (0)