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)
|