base
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
# Copyright (c) 2023-present Plane Software, Inc. and contributors
|
||||
# SPDX-License-Identifier: AGPL-3.0-only
|
||||
# See the LICENSE file for details.
|
||||
|
||||
"""
|
||||
Schema processing hooks for drf-spectacular OpenAPI generation.
|
||||
|
||||
This module provides preprocessing and postprocessing functions that modify
|
||||
the generated OpenAPI schema to apply custom filtering, tagging, and other
|
||||
transformations.
|
||||
"""
|
||||
|
||||
|
||||
def preprocess_filter_api_v1_paths(endpoints):
|
||||
"""
|
||||
Filter OpenAPI endpoints to only include /api/v1/ paths and exclude PUT methods.
|
||||
"""
|
||||
filtered = []
|
||||
for path, path_regex, method, callback in endpoints:
|
||||
# Only include paths that start with /api/v1/ and exclude PUT methods
|
||||
if path.startswith("/api/v1/") and method.upper() != "PUT" and "server" not in path.lower():
|
||||
filtered.append((path, path_regex, method, callback))
|
||||
return filtered
|
||||
|
||||
|
||||
def generate_operation_summary(method, path, tag):
|
||||
"""
|
||||
Generate a human-readable summary for an operation.
|
||||
"""
|
||||
# Extract the main resource from the path
|
||||
path_parts = [part for part in path.split("/") if part and not part.startswith("{")]
|
||||
|
||||
if len(path_parts) > 0:
|
||||
resource = path_parts[-1].replace("-", " ").title()
|
||||
else:
|
||||
resource = tag
|
||||
|
||||
# Generate summary based on method
|
||||
method_summaries = {
|
||||
"GET": f"Retrieve {resource}",
|
||||
"POST": f"Create {resource}",
|
||||
"PATCH": f"Update {resource}",
|
||||
"DELETE": f"Delete {resource}",
|
||||
}
|
||||
|
||||
# Handle specific cases
|
||||
if "archive" in path.lower():
|
||||
if method == "POST":
|
||||
return f"Archive {tag.rstrip('s')}"
|
||||
elif method == "DELETE":
|
||||
return f"Unarchive {tag.rstrip('s')}"
|
||||
|
||||
if "transfer" in path.lower():
|
||||
return f"Transfer {tag.rstrip('s')}"
|
||||
|
||||
return method_summaries.get(method, f"{method} {resource}")
|
||||
Reference in New Issue
Block a user