diff --git a/sage_validation/file_validator/views.py b/sage_validation/file_validator/views.py index 5eb98dddf158d5597bdad04b41b256d7b491aaad..aeaa50be6a9e9ada7d0bd7ed612cfd6c33a0d0cf 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 1146896db11939a8c6ddc3db541093f717b62166..166c07517b9c45ef329e3373195296b58af0fc52 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"), ]