mirror of
https://github.com/prowler-cloud/prowler.git
synced 2026-10-30 15:24:22 +00:00
feat/PRWLR-3996 implement /tenants endpoint and basic filters logic (#14)
* chore: PRWLR-3996 add drf-jsonapi library to project * feat: PRWLR-3996 implement /tenants endpoint and basic JSON:API spec * feat: PRWLR-3996 implement new middleware to ingest metadata on API responses * chore: PRWLR-3996 annotate views with drf-spectacular * feat: PRWLR-3996 add cache-control to tenants endpoints * feat: PRWLR-3996 update views filters * chore: PRWLR-3996 remove meta middleware in favour of meta fields in serializers * test(API): PRWLR-3996 add unit tests for /tenants * chore: PRWLR-3996 turn DEBUG on on devel environment * test: PRWLR-3996 rework tenants unit tests * chore: PRWLR-3996 refactor filter classes * fix(Backend,API): PRWLR-3996 use correct filter backend
This commit is contained in:
1 parent
43f79663d9
commit
7cb3a4e16e
15 files changed
+407
-91
No files matched your search
@@ -21,6 +21,7 @@ INSTALLED_APPS = [
|
||||
"corsheaders",
|
||||
"drf_spectacular",
|
||||
"django_guid",
|
||||
"rest_framework_json_api",
|
||||
]
|
||||
|
||||
MIDDLEWARE = [
|
||||
@@ -58,13 +59,32 @@ TEMPLATES = [
|
||||
|
||||
REST_FRAMEWORK = {
|
||||
"DEFAULT_SCHEMA_CLASS": "drf_spectacular.openapi.AutoSchema",
|
||||
"PAGE_SIZE": 10,
|
||||
"EXCEPTION_HANDLER": "rest_framework_json_api.exceptions.exception_handler",
|
||||
"DEFAULT_PAGINATION_CLASS": "rest_framework_json_api.pagination.JsonApiPageNumberPagination",
|
||||
"DEFAULT_PARSER_CLASSES": (
|
||||
"rest_framework_json_api.parsers.JSONParser",
|
||||
"rest_framework.parsers.FormParser",
|
||||
"rest_framework.parsers.MultiPartParser",
|
||||
),
|
||||
"DEFAULT_RENDERER_CLASSES": ("rest_framework_json_api.renderers.JSONRenderer",),
|
||||
"DEFAULT_METADATA_CLASS": "rest_framework_json_api.metadata.JSONAPIMetadata",
|
||||
"DEFAULT_FILTER_BACKENDS": (
|
||||
"rest_framework_json_api.filters.QueryParameterValidationFilter",
|
||||
"rest_framework_json_api.filters.OrderingFilter",
|
||||
"rest_framework_json_api.django_filters.backends.DjangoFilterBackend",
|
||||
"rest_framework.filters.SearchFilter",
|
||||
),
|
||||
"SEARCH_PARAM": "filter[search]",
|
||||
"TEST_REQUEST_RENDERER_CLASSES": (
|
||||
"rest_framework_json_api.renderers.JSONRenderer",
|
||||
),
|
||||
"TEST_REQUEST_DEFAULT_FORMAT": "vnd.api+json",
|
||||
"JSON_API_UNIFORM_EXCEPTIONS": True,
|
||||
}
|
||||
|
||||
SPECTACULAR_SETTINGS = {
|
||||
"TITLE": "Prowler RESTful API",
|
||||
"DESCRIPTION": "Prowler RESTful API specification.\n\nThis file is auto-generated.",
|
||||
"VERSION": "1.0.0",
|
||||
"SERVE_INCLUDE_SCHEMA": True,
|
||||
"SERVE_INCLUDE_SCHEMA": False,
|
||||
}
|
||||
|
||||
WSGI_APPLICATION = "config.wsgi.application"
|
||||
@@ -122,3 +142,7 @@ STATIC_URL = "static/"
|
||||
# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field
|
||||
|
||||
DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"
|
||||
|
||||
# Cache settings
|
||||
CACHE_MAX_AGE = env.int("DJANGO_CACHE_MAX_AGE", 3600)
|
||||
CACHE_STALE_WHILE_REVALIDATE = env.int("DJANGO_STALE_WHILE_REVALIDATE", 60)
|
||||
@@ -16,3 +16,15 @@ DATABASES = {
|
||||
"PORT": env("POSTGRES_PORT", default="5432"),
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
REST_FRAMEWORK["DEFAULT_RENDERER_CLASSES"] = tuple( # noqa: F405
|
||||
render_class
|
||||
for render_class in REST_FRAMEWORK["DEFAULT_RENDERER_CLASSES"] # noqa: F405
|
||||
) + ("rest_framework_json_api.renderers.BrowsableAPIRenderer",)
|
||||
|
||||
REST_FRAMEWORK["DEFAULT_FILTER_BACKENDS"] = tuple( # noqa: F405
|
||||
filter_backend
|
||||
for filter_backend in REST_FRAMEWORK["DEFAULT_FILTER_BACKENDS"] # noqa: F405
|
||||
if "DjangoFilterBackend" not in filter_backend
|
||||
) + ("api.filters.CustomDjangoFilterBackend",)
|
||||
Reference in new issue
Block a user