mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-12-21 14:06:55 +01:00
Fix: only cache remote version for version checking (#11320)
This commit is contained in:
parent
e9f846ca24
commit
44f0191bfb
1 changed files with 18 additions and 16 deletions
|
|
@ -23,6 +23,7 @@ from django.conf import settings
|
||||||
from django.contrib.auth.models import Group
|
from django.contrib.auth.models import Group
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
|
from django.core.cache import cache
|
||||||
from django.db import connections
|
from django.db import connections
|
||||||
from django.db.migrations.loader import MigrationLoader
|
from django.db.migrations.loader import MigrationLoader
|
||||||
from django.db.migrations.recorder import MigrationRecorder
|
from django.db.migrations.recorder import MigrationRecorder
|
||||||
|
|
@ -51,7 +52,6 @@ from django.utils.timezone import make_aware
|
||||||
from django.utils.translation import get_language
|
from django.utils.translation import get_language
|
||||||
from django.views import View
|
from django.views import View
|
||||||
from django.views.decorators.cache import cache_control
|
from django.views.decorators.cache import cache_control
|
||||||
from django.views.decorators.cache import cache_page
|
|
||||||
from django.views.decorators.http import condition
|
from django.views.decorators.http import condition
|
||||||
from django.views.decorators.http import last_modified
|
from django.views.decorators.http import last_modified
|
||||||
from django.views.generic import TemplateView
|
from django.views.generic import TemplateView
|
||||||
|
|
@ -2426,7 +2426,6 @@ class UiSettingsView(GenericAPIView):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@method_decorator(cache_page(60 * 15), name="dispatch")
|
|
||||||
@extend_schema_view(
|
@extend_schema_view(
|
||||||
get=extend_schema(
|
get=extend_schema(
|
||||||
description="Get the current version of the Paperless-NGX server",
|
description="Get the current version of the Paperless-NGX server",
|
||||||
|
|
@ -2436,31 +2435,34 @@ class UiSettingsView(GenericAPIView):
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
class RemoteVersionView(GenericAPIView):
|
class RemoteVersionView(GenericAPIView):
|
||||||
|
cache_key = "remote_version_view_latest_release"
|
||||||
|
|
||||||
def get(self, request, format=None):
|
def get(self, request, format=None):
|
||||||
remote_version = "0.0.0"
|
|
||||||
is_greater_than_current = False
|
|
||||||
current_version = packaging_version.parse(version.__full_version_str__)
|
current_version = packaging_version.parse(version.__full_version_str__)
|
||||||
try:
|
remote_version = cache.get(self.cache_key)
|
||||||
resp = httpx.get(
|
if remote_version is None:
|
||||||
"https://api.github.com/repos/paperless-ngx/paperless-ngx/releases/latest",
|
|
||||||
headers={"Accept": "application/json"},
|
|
||||||
)
|
|
||||||
resp.raise_for_status()
|
|
||||||
try:
|
try:
|
||||||
|
resp = httpx.get(
|
||||||
|
"https://api.github.com/repos/paperless-ngx/paperless-ngx/releases/latest",
|
||||||
|
headers={"Accept": "application/json"},
|
||||||
|
)
|
||||||
|
resp.raise_for_status()
|
||||||
data = resp.json()
|
data = resp.json()
|
||||||
remote_version = data["tag_name"]
|
remote_version = data["tag_name"]
|
||||||
# Some early tags used ngx-x.y.z
|
# Some early tags used ngx-x.y.z
|
||||||
remote_version = remote_version.removeprefix("ngx-")
|
remote_version = remote_version.removeprefix("ngx-")
|
||||||
except ValueError as e:
|
except ValueError as e:
|
||||||
logger.debug(f"An error occurred parsing remote version json: {e}")
|
logger.debug(f"An error occurred parsing remote version json: {e}")
|
||||||
except httpx.HTTPError as e:
|
except httpx.HTTPError as e:
|
||||||
logger.debug(f"An error occurred checking for available updates: {e}")
|
logger.debug(f"An error occurred checking for available updates: {e}")
|
||||||
|
|
||||||
|
if remote_version:
|
||||||
|
cache.set(self.cache_key, remote_version, 60 * 15)
|
||||||
|
else:
|
||||||
|
remote_version = "0.0.0"
|
||||||
|
|
||||||
is_greater_than_current = (
|
is_greater_than_current = (
|
||||||
packaging_version.parse(
|
packaging_version.parse(remote_version) > current_version
|
||||||
remote_version,
|
|
||||||
)
|
|
||||||
> current_version
|
|
||||||
)
|
)
|
||||||
|
|
||||||
return Response(
|
return Response(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue