Skip to content

Commit 2f0ac30

Browse files
committed
Ability to disable pagination in model controllers
1 parent 1dc5585 commit 2f0ac30

File tree

3 files changed

+29
-2
lines changed

3 files changed

+29
-2
lines changed

ninja_extra/controllers/model/schemas.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,9 @@ class ModelPagination(PydanticModel):
4141
Model Controller Pagination Configuration
4242
"""
4343

44-
klass: t.Type[PaginationBase] = PageNumberPaginationExtra
44+
klass: t.Optional[t.Type[PaginationBase]] = PageNumberPaginationExtra
4545
paginator_kwargs: t.Optional[dict] = None
46-
pagination_schema: t.Type[PydanticModel] = PaginatedResponseSchema
46+
pagination_schema: t.Optional[t.Type[PydanticModel]] = PaginatedResponseSchema
4747
filter_schema: t.Optional[t.Type[FilterSchema]] = None
4848

4949
@field_validator("pagination_schema", mode="before")

tests/test_model_controller/samples.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,20 @@ class EventModelControllerDifferentPagination(ModelControllerBase):
6565
)
6666

6767

68+
@api_controller("/event-case-5")
69+
class EventModelControllerWithoutPagination(ModelControllerBase):
70+
model_config = ModelConfig(
71+
allowed_routes=[
72+
"list",
73+
],
74+
model=Event,
75+
retrieve_schema=EventSchema,
76+
pagination=ModelPagination(
77+
klass=None,
78+
),
79+
)
80+
81+
6882
@api_controller("/event-case-4")
6983
class EventModelControllerRetrieveAndList(ModelControllerBase):
7084
model_config = ModelConfig(

tests/test_model_controller/test_model_controller_schema.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,22 @@
55
EventModelControllerDifferentPagination,
66
EventModelControllerRetrieveAndList,
77
EventModelControllerWithDefinedSchema,
8+
EventModelControllerWithoutPagination,
89
)
910

1011

12+
def test_event_model_open_api_schema_case_5():
13+
api = NinjaExtraAPI()
14+
api.register_controllers(EventModelControllerWithoutPagination)
15+
schema = api.get_openapi_schema()
16+
17+
assert "get" in schema["paths"]["/api/event-case-5/"]
18+
assert schema["paths"]["/api/event-case-5/"]["get"]["parameters"] == []
19+
assert list(schema["components"]["schemas"].keys()) == [
20+
"EventSchema",
21+
]
22+
23+
1124
def test_event_model_open_api_schema_case_3():
1225
api = NinjaExtraAPI()
1326
api.register_controllers(EventModelControllerDifferentPagination)

0 commit comments

Comments
 (0)