42 lines
1.3 KiB
Python
42 lines
1.3 KiB
Python
from math import inf
|
|
from typing import Dict, Optional, Set
|
|
|
|
from django.conf import settings as django_settings
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class Settings(BaseModel):
|
|
# Pagination
|
|
PAGINATION_CLASS: str = Field(
|
|
"ninja.pagination.LimitOffsetPagination", alias="NINJA_PAGINATION_CLASS"
|
|
)
|
|
PAGINATION_PER_PAGE: int = Field(100, alias="NINJA_PAGINATION_PER_PAGE")
|
|
PAGINATION_MAX_PER_PAGE_SIZE: int = Field(100, alias="NINJA_MAX_PER_PAGE_SIZE")
|
|
PAGINATION_MAX_LIMIT: int = Field(inf, alias="NINJA_PAGINATION_MAX_LIMIT") # type: ignore
|
|
|
|
# Throttling
|
|
NUM_PROXIES: Optional[int] = Field(None, alias="NINJA_NUM_PROXIES")
|
|
DEFAULT_THROTTLE_RATES: Dict[str, Optional[str]] = Field(
|
|
{
|
|
"auth": "10000/day",
|
|
"user": "10000/day",
|
|
"anon": "1000/day",
|
|
},
|
|
alias="NINJA_DEFAULT_THROTTLE_RATES",
|
|
)
|
|
|
|
FIX_REQUEST_FILES_METHODS: Set[str] = Field(
|
|
{"PUT", "PATCH", "DELETE"}, alias="NINJA_FIX_REQUEST_FILES_METHODS"
|
|
)
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
settings = Settings.model_validate(django_settings)
|
|
|
|
if hasattr(django_settings, "NINJA_DOCS_VIEW"):
|
|
raise Exception(
|
|
"NINJA_DOCS_VIEW is removed. Use NinjaAPI(docs=...) instead"
|
|
) # pragma: no cover
|