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