diff --git a/sqladmin/models.py b/sqladmin/models.py index 016a6613..f0e9fe33 100644 --- a/sqladmin/models.py +++ b/sqladmin/models.py @@ -1183,15 +1183,15 @@ async def generate(writer: Writer) -> AsyncGenerator[Any, None]: ) async def _export_json( - self, - data: List[Any], + self, + data: List[Any], ) -> StreamingResponse: async def generate() -> AsyncGenerator[str, None]: - yield '[' + yield "[" first_row = True for row in data: if not first_row: - yield ',' + yield "," else: first_row = False row_dict = { @@ -1199,7 +1199,8 @@ async def generate() -> AsyncGenerator[str, None]: for name in self._export_prop_names } yield json.dumps(row_dict) - yield ']' + yield "]" + filename = secure_filename(self.get_export_name(export_type="json")) return StreamingResponse( content=generate(), diff --git a/tests/test_views/test_view_sync.py b/tests/test_views/test_view_sync.py index 6ddc6099..a9904ab0 100644 --- a/tests/test_views/test_view_sync.py +++ b/tests/test_views/test_view_sync.py @@ -740,6 +740,7 @@ def test_export_json(client: TestClient) -> None: response = client.get("/admin/user/export/json") assert response.text == '[{"name": "Daniel", "status": "ACTIVE"}]' + def test_export_csv_row_count(client: TestClient) -> None: def row_count(resp) -> int: return resp.text.count("\r\n") - 1