convert django lazy string proxies to strings in the base schema validator, rather than in the serialization code of each source model

This commit is contained in:
Gwendolyn 2023-12-11 20:49:50 +01:00
parent 4c06abd400
commit 4b1ac9f194
21 changed files with 126 additions and 104 deletions

View file

@ -6,12 +6,12 @@ from django.shortcuts import redirect
from django.utils import timezone
from ninja import Query
from ninja import Router as APIRouter
from ninja import Schema
from pydantic import Field as APIField
from pydantic import PositiveInt
from c3nav.api.auth import auth_permission_responses, auth_responses, validate_responses
from c3nav.api.exceptions import API404, APIPermissionDenied, APIRequestValidationFailed
from c3nav.api.schema import BaseSchema
from c3nav.api.utils import NonEmptyStr
from c3nav.mapdata.api.base import api_etag, api_stats, can_access_geometry
from c3nav.mapdata.models import Source
@ -39,7 +39,7 @@ def bounds(request):
}
class LocationEndpointParameters(Schema):
class LocationEndpointParameters(BaseSchema):
searchable: bool = APIField(
False,
title='only list searchable locations',
@ -133,7 +133,7 @@ def _location_geometry(request, location):
)
class ShowRedirects(Schema):
class ShowRedirects(BaseSchema):
show_redirects: bool = APIField(
False,
name="show redirects",
@ -268,7 +268,7 @@ def get_position_by_id(request, position_id: AnyPositionID):
return location.serialize_position()
class UpdatePositionSchema(Schema):
class UpdatePositionSchema(BaseSchema):
coordinates_id: Union[
Annotated[CustomLocationID, APIField(title="set coordinates")],
Annotated[None, APIField(title="unset coordinates")],