import platform import time from django.conf import settings from rest_framework.permissions import AllowAny from rest_framework.response import Response from rest_framework.views import APIView def _os_info(): system = platform.system() icon = {"Linux": "linux", "Darwin": "apple", "Windows": "windows"}.get( system, "unknown" ) return {"name": system, "release": platform.release(), "icon": icon} def _worker_counts(): """Active/queued background jobs. No task pipeline exists yet, so this reports honest zeros for now. """ return {"active": 0, "queued": 0} class StatusView(APIView): """Runtime status used by the SPA shell (storage line, status pill, footer).""" permission_classes = [AllowAny] def get(self, request): started = getattr(request, "start_time", time.perf_counter()) payload = { "app": "J621", "env": settings.APP_ENV, "git_hash": settings.GIT_COMMIT_HASH, "version": settings.APP_VERSION, "os": _os_info(), "watched_folder": settings.WATCHED_FOLDER, "e621_time_ms": None, # no e621 calls in the backend yet "workers": _worker_counts(), } payload["server_time_ms"] = round((time.perf_counter() - started) * 1000, 1) return Response(payload)