import logging
import os
+import re
import tempfile
+import urllib
import uuid
import zipfile
from datetime import datetime
from django.views.generic import TemplateView
from django_filters.rest_framework import DjangoFilterBackend
from django_q.tasks import async_task
+from packaging import version as packaging_version
+from paperless import version
from paperless.db import GnuPG
from paperless.views import StandardPagination
from rest_framework import parsers
)
return response
+
+
+class RemoteVersionView(GenericAPIView):
+ def get(self, request, format=None):
+ try:
+ with urllib.request.urlopen(
+ "https://raw.githubusercontent.com/paperless-ngx/paperless-ngx"
+ + "/main/src/paperless/version.py",
+ ) as response:
+ remote = response.read().decode("utf-8")
+ match = re.search("(\\d+, \\d+, \\d+)", remote)
+ if match:
+ remote_version = ".".join(match[0].split(", "))
+ except urllib.error.URLError:
+ remote_version = "0.0.0"
+
+ current_version = ".".join([str(_) for _ in version.__version__[:3]])
+ is_greater = packaging_version.parse(remote_version) > packaging_version.parse(
+ current_version,
+ )
+
+ return Response(
+ {
+ "version": remote_version,
+ "greater_than_current": is_greater,
+ },
+ )
from documents.views import IndexView
from documents.views import LogViewSet
from documents.views import PostDocumentView
+from documents.views import RemoteVersionView
from documents.views import SavedViewViewSet
from documents.views import SearchAutoCompleteView
from documents.views import SelectionDataView
BulkDownloadView.as_view(),
name="bulk_download",
),
+ re_path(
+ r"^remote_version/",
+ RemoteVersionView.as_view(),
+ name="remoteversion",
+ ),
path("token/", views.obtain_auth_token),
]
+ api_router.urls,