61 lines
1.2 KiB
Python
61 lines
1.2 KiB
Python
from dataclasses import dataclass
|
|
|
|
from rest_framework import serializers
|
|
|
|
|
|
@dataclass
|
|
class OpenApiExample:
|
|
name: str
|
|
value: object = None
|
|
request_only: bool = False
|
|
response_only: bool = False
|
|
summary: str | None = None
|
|
description: str | None = None
|
|
|
|
|
|
@dataclass
|
|
class OpenApiResponse:
|
|
response: object = None
|
|
description: str = ""
|
|
|
|
|
|
class OpenApiParameter:
|
|
QUERY = "query"
|
|
PATH = "path"
|
|
HEADER = "header"
|
|
|
|
def __init__(
|
|
self,
|
|
name,
|
|
type=None,
|
|
location=None,
|
|
required=False,
|
|
description="",
|
|
default=None,
|
|
):
|
|
self.name = name
|
|
self.type = type
|
|
self.location = location
|
|
self.required = required
|
|
self.description = description
|
|
self.default = default
|
|
|
|
|
|
def extend_schema(*args, **kwargs):
|
|
def decorator(target):
|
|
return target
|
|
|
|
return decorator
|
|
|
|
|
|
def extend_schema_view(**kwargs):
|
|
def decorator(target):
|
|
return target
|
|
|
|
return decorator
|
|
|
|
|
|
def inline_serializer(*, name, fields):
|
|
serializer_fields = {"__module__": __name__, **fields}
|
|
return type(name, (serializers.Serializer,), serializer_fields)
|