1
0
forked from erp-dev/erp

feat: app verion && some field modify (printing & shipment)

This commit is contained in:
2026-07-08 20:36:51 +08:00
parent ddbf798665
commit 36e4bb6de6
32 changed files with 3465 additions and 26 deletions

View File

@@ -1,5 +1,6 @@
from django.conf import settings
from django.core.cache import cache
from django.utils import timezone
from rest_framework.permissions import AllowAny
from rest_framework.response import Response
from rest_framework.views import APIView
@@ -12,7 +13,19 @@ def _coerce_version_part(value) -> int:
return max(0, int(value or 0))
def build_app_version_payload(*, major, minor, build, download_url: str) -> dict:
def _coerce_publish_date(value) -> str:
return str(value or timezone.localdate().isoformat()).strip()
def build_app_version_payload(
*,
major,
minor,
build,
download_url: str,
force=False,
publish_date=None,
) -> dict:
return {
"latest_version": {
"major": _coerce_version_part(major),
@@ -20,6 +33,8 @@ def build_app_version_payload(*, major, minor, build, download_url: str) -> dict
"build": _coerce_version_part(build),
},
"download_url": str(download_url or "").strip(),
"force": bool(force),
"publish_date": _coerce_publish_date(publish_date),
}
@@ -33,6 +48,8 @@ def get_app_version_payload() -> dict:
minor=version["minor"],
build=version["build"],
download_url=cached_payload.get("download_url", ""),
force=cached_payload["force"],
publish_date=cached_payload["publish_date"],
)
except (KeyError, TypeError, ValueError):
pass
@@ -42,15 +59,27 @@ def get_app_version_payload() -> dict:
minor=getattr(settings, "APP_LATEST_VERSION_MINOR", 0),
build=getattr(settings, "APP_LATEST_VERSION_BUILD", 0),
download_url=getattr(settings, "APP_DOWNLOAD_URL", ""),
force=getattr(settings, "APP_FORCE_UPDATE", False),
publish_date=getattr(settings, "APP_PUBLISH_DATE", None),
)
def set_cached_app_version_payload(*, major, minor, build, download_url: str) -> dict:
def set_cached_app_version_payload(
*,
major,
minor,
build,
download_url: str,
force=False,
publish_date=None,
) -> dict:
payload = build_app_version_payload(
major=major,
minor=minor,
build=build,
download_url=download_url,
force=force,
publish_date=publish_date,
)
cache.set(APP_VERSION_CACHE_KEY, payload, timeout=None)
return payload