2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-04-27 11:06:44 +00:00

Remove unneeded AjaxView usage (#8461)

* remove unneeded AjaxView usage

* add schema

* bump schema version

* make schema more acurate

* exclude not found view

* make script also axept base api
This commit is contained in:
Matthias Mair 2024-11-10 23:11:20 +01:00 committed by GitHub
parent 5464bc5a8a
commit 9cd0394dc4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 49 additions and 6 deletions

View File

@ -44,7 +44,8 @@ def top_level_path(path: str) -> str:
path = path.strip()
key = path.split('/')[1]
parts = path.split('/')
key = parts[1] if len(parts) > 1 else parts[0]
if key in SPECIAL_PATHS:
return key

View File

@ -30,7 +30,6 @@ from .helpers_email import is_email_configured
from .mixins import ListAPI, RetrieveUpdateAPI
from .status import check_system_health, is_worker_running
from .version import inventreeApiText
from .views import AjaxView
logger = logging.getLogger('inventree')
@ -196,8 +195,35 @@ class VersionTextView(ListAPI):
return JsonResponse(inventreeApiText())
class InfoView(AjaxView):
"""Simple JSON endpoint for InvenTree information.
class InfoApiSerializer(serializers.Serializer):
"""InvenTree server information - some information might be blanked if called without elevated credentials."""
server = serializers.CharField(read_only=True)
version = serializers.CharField(read_only=True)
instance = serializers.CharField(read_only=True)
apiVersion = serializers.IntegerField(read_only=True) # noqa: N815
worker_running = serializers.BooleanField(read_only=True)
worker_count = serializers.IntegerField(read_only=True)
worker_pending_tasks = serializers.IntegerField(read_only=True)
plugins_enabled = serializers.BooleanField(read_only=True)
plugins_install_disabled = serializers.BooleanField(read_only=True)
active_plugins = serializers.JSONField(read_only=True)
email_configured = serializers.BooleanField(read_only=True)
debug_mode = serializers.BooleanField(read_only=True)
docker_mode = serializers.BooleanField(read_only=True)
default_locale = serializers.ChoiceField(
choices=settings.LOCALE_CODES, read_only=True
)
system_health = serializers.BooleanField(read_only=True)
database = serializers.CharField(read_only=True)
platform = serializers.CharField(read_only=True)
installer = serializers.CharField(read_only=True)
target = serializers.CharField(read_only=True)
django_admin = serializers.CharField(read_only=True)
class InfoView(APIView):
"""JSON endpoint for InvenTree server information.
Use to confirm that the server is running, etc.
"""
@ -208,6 +234,13 @@ class InfoView(AjaxView):
"""Return the current number of outstanding background tasks."""
return OrmQ.objects.count()
@extend_schema(
responses={
200: OpenApiResponse(
response=InfoApiSerializer, description='InvenTree server information'
)
}
)
def get(self, request, *args, **kwargs):
"""Serve current server information."""
is_staff = request.user.is_staff
@ -261,7 +294,7 @@ class InfoView(AjaxView):
return False
class NotFoundView(AjaxView):
class NotFoundView(APIView):
"""Simple JSON view when accessing an invalid API view."""
permission_classes = [permissions.AllowAny]
@ -280,22 +313,27 @@ class NotFoundView(AjaxView):
"""Return 404."""
return self.not_found(request)
@extend_schema(exclude=True)
def get(self, request, *args, **kwargs):
"""Return 404."""
return self.not_found(request)
@extend_schema(exclude=True)
def post(self, request, *args, **kwargs):
"""Return 404."""
return self.not_found(request)
@extend_schema(exclude=True)
def patch(self, request, *args, **kwargs):
"""Return 404."""
return self.not_found(request)
@extend_schema(exclude=True)
def put(self, request, *args, **kwargs):
"""Return 404."""
return self.not_found(request)
@extend_schema(exclude=True)
def delete(self, request, *args, **kwargs):
"""Return 404."""
return self.not_found(request)

View File

@ -1,13 +1,17 @@
"""InvenTree API version information."""
# InvenTree API version
INVENTREE_API_VERSION = 279
INVENTREE_API_VERSION = 280
"""Increment this API version number whenever there is a significant change to the API that any clients need to know about."""
INVENTREE_API_TEXT = """
v280 - 2024-11-10 : https://github.com/inventree/InvenTree/pull/8461
- Makes schema for API information endpoint more informing
- Removes general not found endpoint
v279 - 2024-11-09 : https://github.com/inventree/InvenTree/pull/8458
- Adds "order_outstanding" and "part" filters to the BuildLine API endpoint
- Adds "order_outstanding" filter to the SalesOrderLineItem API endpoint