Skip to content

Commit 348328c

Browse files
committed
move utf-8-sig to utf-8
1 parent 934ea6b commit 348328c

4 files changed

Lines changed: 82 additions & 2 deletions

File tree

sqladmin/helpers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ class _PseudoBuffer:
152152
interface.
153153
"""
154154

155-
encoding = "utf_8_sig"
155+
encoding = "utf-8"
156156

157157
def write(self, value: T) -> bytes:
158158
return str(value).encode(self.encoding)

sqladmin/models.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1187,7 +1187,7 @@ async def generate(writer: Writer) -> AsyncGenerator[Any, None]:
11871187

11881188
return StreamingResponse(
11891189
content=stream_to_csv(generate),
1190-
media_type="text/csv; charset=utf_8_sig",
1190+
media_type="text/csv; charset=utf-8",
11911191
headers={"Content-Disposition": f"attachment;filename={filename}"},
11921192
)
11931193

tests/test_views/test_view_async.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -778,6 +778,25 @@ def row_count(resp) -> int:
778778
assert row_count(response) == 3
779779

780780

781+
async def test_export_csv_utf8(client: AsyncClient) -> None:
782+
async with session_maker() as session:
783+
user_1 = User(name="Daniel", status="ACTIVE")
784+
user_2 = User(name="دانيال", status="ACTIVE")
785+
user_3 = User(name="積極的", status="ACTIVE")
786+
user_4 = User(name="Даниэль", status="ACTIVE")
787+
session.add(user_1)
788+
session.add(user_2)
789+
session.add(user_3)
790+
session.add(user_4)
791+
await session.commit()
792+
793+
response = await client.get("/admin/user/export/csv")
794+
assert response.text == (
795+
"name,status\r\nDaniel,ACTIVE\r\nدانيال,ACTIVE\r\n"
796+
"積極的,ACTIVE\r\nДаниэль,ACTIVE\r\n"
797+
)
798+
799+
781800
async def test_export_json(client: AsyncClient) -> None:
782801
async with session_maker() as session:
783802
user = User(name="Daniel", status="ACTIVE")
@@ -788,6 +807,27 @@ async def test_export_json(client: AsyncClient) -> None:
788807
assert response.text == '[{"name": "Daniel", "status": "ACTIVE"}]'
789808

790809

810+
async def test_export_json_utf8(client: AsyncClient) -> None:
811+
async with session_maker() as session:
812+
user_1 = User(name="Daniel", status="ACTIVE")
813+
user_2 = User(name="دانيال", status="ACTIVE")
814+
user_3 = User(name="積極的", status="ACTIVE")
815+
user_4 = User(name="Даниэль", status="ACTIVE")
816+
session.add(user_1)
817+
session.add(user_2)
818+
session.add(user_3)
819+
session.add(user_4)
820+
await session.commit()
821+
822+
response = await client.get("/admin/user/export/json")
823+
assert response.text == (
824+
'[{"name": "Daniel", "status": "ACTIVE"},'
825+
'{"name": "دانيال", "status": "ACTIVE"},'
826+
'{"name": "積極的", "status": "ACTIVE"},'
827+
'{"name": "Даниэль", "status": "ACTIVE"}]'
828+
)
829+
830+
791831
async def test_export_bad_type_is_404(client: AsyncClient) -> None:
792832
response = await client.get("/admin/user/export/bad_type")
793833
assert response.status_code == 404

tests/test_views/test_view_sync.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -732,6 +732,25 @@ def test_export_csv(client: TestClient) -> None:
732732
assert response.text == "name,status\r\nDaniel,ACTIVE\r\n"
733733

734734

735+
def test_export_csv_utf8(client: TestClient) -> None:
736+
with session_maker() as session:
737+
user_1 = User(name="Daniel", status="ACTIVE")
738+
user_2 = User(name="دانيال", status="ACTIVE")
739+
user_3 = User(name="積極的", status="ACTIVE")
740+
user_4 = User(name="Даниэль", status="ACTIVE")
741+
session.add(user_1)
742+
session.add(user_2)
743+
session.add(user_3)
744+
session.add(user_4)
745+
session.commit()
746+
747+
response = client.get("/admin/user/export/csv")
748+
assert response.text == (
749+
"name,status\r\nDaniel,ACTIVE\r\nدانيال,ACTIVE\r\n"
750+
"積極的,ACTIVE\r\nДаниэль,ACTIVE\r\n"
751+
)
752+
753+
735754
def test_export_json(client: TestClient) -> None:
736755
with session_maker() as session:
737756
user = User(name="Daniel", status="ACTIVE")
@@ -742,6 +761,27 @@ def test_export_json(client: TestClient) -> None:
742761
assert response.text == '[{"name": "Daniel", "status": "ACTIVE"}]'
743762

744763

764+
def test_export_json_utf8(client: TestClient) -> None:
765+
with session_maker() as session:
766+
user_1 = User(name="Daniel", status="ACTIVE")
767+
user_2 = User(name="دانيال", status="ACTIVE")
768+
user_3 = User(name="積極的", status="ACTIVE")
769+
user_4 = User(name="Даниэль", status="ACTIVE")
770+
session.add(user_1)
771+
session.add(user_2)
772+
session.add(user_3)
773+
session.add(user_4)
774+
session.commit()
775+
776+
response = client.get("/admin/user/export/json")
777+
assert response.text == (
778+
'[{"name": "Daniel", "status": "ACTIVE"},'
779+
'{"name": "دانيال", "status": "ACTIVE"},'
780+
'{"name": "積極的", "status": "ACTIVE"},'
781+
'{"name": "Даниэль", "status": "ACTIVE"}]'
782+
)
783+
784+
745785
def test_export_json_complex_model(client: TestClient) -> None:
746786
with session_maker() as session:
747787
user = User(name="Daniel", status="ACTIVE")

0 commit comments

Comments
 (0)