From 88d49aaa9df505feb9d6c916f1e9370e012d587b Mon Sep 17 00:00:00 2001
From: Neda Moeini <neda.moeini@geant.org>
Date: Fri, 28 Mar 2025 10:40:14 +0100
Subject: [PATCH] Add version endpoint

---
 sage_validation/file_validator/views.py | 11 +++++++++++
 sage_validation/urls.py                 |  3 ++-
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/sage_validation/file_validator/views.py b/sage_validation/file_validator/views.py
index 5eb98dd..aeaa50b 100644
--- a/sage_validation/file_validator/views.py
+++ b/sage_validation/file_validator/views.py
@@ -1,9 +1,12 @@
 """Views for the file_validator app."""
 import csv
 import io
+from importlib.metadata import PackageNotFoundError
+from importlib.metadata import version as get_version
 from typing import ClassVar
 
 from django.http import HttpRequest, HttpResponse
+from django.http.response import JsonResponse
 from django.shortcuts import render
 from django.urls import reverse_lazy
 from django.utils import timezone
@@ -23,6 +26,14 @@ def index_view(request: HttpRequest) -> HttpResponse:
     return render(request, "index.html")
 
 
+def version_view(_request: HttpRequest) -> JsonResponse:
+    """Return the module version as JSON."""
+    try:
+        module_version = get_version("sage-validation")
+    except PackageNotFoundError:
+        module_version = "unknown"
+
+    return JsonResponse({"module": module_version})
 def upload_page_view(request: HttpRequest) -> HttpResponse:
     """Render the file upload page."""
     return render(request, "upload.html")
diff --git a/sage_validation/urls.py b/sage_validation/urls.py
index 1146896..166c075 100644
--- a/sage_validation/urls.py
+++ b/sage_validation/urls.py
@@ -3,7 +3,7 @@ from django.contrib import admin
 from django.urls import path
 from django.urls.conf import include
 
-from sage_validation.file_validator.views import index_view
+from sage_validation.file_validator.views import index_view, version_view
 
 urlpatterns = [
     path("admin/", admin.site.urls),
@@ -11,4 +11,5 @@ urlpatterns = [
     path("", index_view, name="index"),
     path("", include("social_django.urls", namespace="social")),
     path("accounts/", include("sage_validation.accounts.urls")),
+    path("version/", version_view, name="version"),
 ]
-- 
GitLab