mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-10-30 03:56:23 -05:00 
			
		
		
		
	Merge pull request #591 from paperless-ngx/feature-version-checker
Feature: Update checker
This commit is contained in:
		| @@ -1,6 +1,8 @@ | ||||
| import json | ||||
| import logging | ||||
| import os | ||||
| import tempfile | ||||
| import urllib | ||||
| import uuid | ||||
| import zipfile | ||||
| from datetime import datetime | ||||
| @@ -24,6 +26,8 @@ from django.views.decorators.cache import cache_control | ||||
| 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 | ||||
| @@ -666,3 +670,40 @@ class BulkDownloadView(GenericAPIView): | ||||
|             ) | ||||
|  | ||||
|             return response | ||||
|  | ||||
|  | ||||
| class RemoteVersionView(GenericAPIView): | ||||
|     def get(self, request, format=None): | ||||
|         remote_version = "0.0.0" | ||||
|         is_greater_than_current = False | ||||
|         # TODO: this can likely be removed when frontend settings are saved to DB | ||||
|         feature_is_set = settings.ENABLE_UPDATE_CHECK != "default" | ||||
|         if feature_is_set and settings.ENABLE_UPDATE_CHECK: | ||||
|             try: | ||||
|                 with urllib.request.urlopen( | ||||
|                     "https://api.github.com/repos/" | ||||
|                     + "paperless-ngx/paperless-ngx/releases/latest", | ||||
|                 ) as response: | ||||
|                     remote = response.read().decode("utf-8") | ||||
|                 try: | ||||
|                     remote_json = json.loads(remote) | ||||
|                     remote_version = remote_json["tag_name"].replace("ngx-", "") | ||||
|                 except ValueError: | ||||
|                     logger.debug("An error occured parsing remote version json") | ||||
|             except urllib.error.URLError: | ||||
|                 logger.debug("An error occured checking for available updates") | ||||
|  | ||||
|             current_version = ".".join([str(_) for _ in version.__version__[:3]]) | ||||
|             is_greater_than_current = packaging_version.parse( | ||||
|                 remote_version, | ||||
|             ) > packaging_version.parse( | ||||
|                 current_version, | ||||
|             ) | ||||
|  | ||||
|         return Response( | ||||
|             { | ||||
|                 "version": remote_version, | ||||
|                 "update_available": is_greater_than_current, | ||||
|                 "feature_is_set": feature_is_set, | ||||
|             }, | ||||
|         ) | ||||
|   | ||||
| @@ -566,3 +566,7 @@ if os.getenv("PAPERLESS_IGNORE_DATES", ""): | ||||
|         d = dateparser.parse(s) | ||||
|         if d: | ||||
|             IGNORE_DATES.add(d.date()) | ||||
|  | ||||
| ENABLE_UPDATE_CHECK = os.getenv("PAPERLESS_ENABLE_UPDATE_CHECK", "default") | ||||
| if ENABLE_UPDATE_CHECK != "default": | ||||
|     ENABLE_UPDATE_CHECK = __get_boolean("PAPERLESS_ENABLE_UPDATE_CHECK") | ||||
|   | ||||
| @@ -14,6 +14,7 @@ from documents.views import DocumentTypeViewSet | ||||
| 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 | ||||
| @@ -72,6 +73,11 @@ urlpatterns = [ | ||||
|                     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, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Felix E
					Felix E