Skip to content

Commit 9e9b6d6

Browse files
committed
feat: improve response of create/update APIs
1 parent b5a18ae commit 9e9b6d6

File tree

4 files changed

+19
-17
lines changed

4 files changed

+19
-17
lines changed

easy/controller/meta.py

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import uuid
55
from abc import ABC, ABCMeta
66
from collections import ChainMap
7-
from typing import Any, Match, Optional, Tuple, Type
7+
from typing import Any, List, Match, Optional, Tuple, Type
88

99
from django.http import HttpRequest
1010
from ninja import ModelSchema
@@ -109,18 +109,18 @@ async def get_objs(self, request: HttpRequest, filters: str = None) -> Any: # t
109109
class DataSchema(ModelSchema):
110110
class Config:
111111
model = model_opts.model
112-
model_exclude = []
112+
model_exclude: List = []
113113
if model_opts.model_exclude:
114114
model_exclude.extend(model_opts.model_exclude)
115115
# Remove pk(id) from Create/Update Schema
116-
model_exclude.extend([model._meta.pk.name])
116+
model_exclude.extend([model._meta.pk.name]) # type: ignore
117117
else:
118118
if model_opts.model_fields == MODEL_FIELDS_ATTR_DEFAULT:
119119
# Remove pk(id) from Create/Update Schema
120-
model_exclude.extend([model._meta.pk.name])
120+
model_exclude.extend([model._meta.pk.name]) # type: ignore
121121
else:
122122
model_fields = (
123-
model_opts.model_fields # type: ignore
123+
model_opts.model_fields
124124
if model_opts.model_fields
125125
else MODEL_FIELDS_ATTR_DEFAULT
126126
)
@@ -134,9 +134,11 @@ async def add_obj( # type: ignore
134134
"""
135135
obj_id = await self.service.add_obj(**data.dict())
136136
if obj_id:
137-
return BaseApiResponse({"id": obj_id}, code=201)
137+
return BaseApiResponse({"id": obj_id}, code=201, message="Created.")
138138
else:
139-
return BaseApiResponse("Add failed", code=204) # pragma: no cover
139+
return BaseApiResponse(
140+
code=204, message="Add failed."
141+
) # pragma: no cover
140142

141143
async def patch_obj( # type: ignore
142144
self, request: HttpRequest, id: int, data: DataSchema
@@ -146,9 +148,9 @@ async def patch_obj( # type: ignore
146148
Update a single object
147149
"""
148150
if await self.service.patch_obj(id=id, payload=data.dict()):
149-
return BaseApiResponse("Updated.")
151+
return BaseApiResponse(message="Updated.")
150152
else:
151-
return BaseApiResponse("Update Failed", code=400)
153+
return BaseApiResponse(code=400, message="Updated Failed")
152154

153155
DataSchema.__name__ = (
154156
f"{model_opts.model.__name__}__AutoSchema({str(uuid.uuid4())[:4]})"

easy/response.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,8 @@
66

77
from easy.renderer.json import EasyJSONEncoder
88

9-
ERRNO_SUCCESS = 0
9+
CODE_SUCCESS = 0
1010
SUCCESS_MESSAGE = "success"
11-
UNKNOWN_ERROR_MSG = "system error"
1211

1312

1413
class BaseApiResponse(JsonResponse):
@@ -24,10 +23,10 @@ def __init__(
2423
**kwargs: Any
2524
):
2625
if code:
27-
message = message or UNKNOWN_ERROR_MSG
26+
message = message or str(code)
2827
else:
29-
message = SUCCESS_MESSAGE
30-
code = ERRNO_SUCCESS
28+
message = message or SUCCESS_MESSAGE
29+
code = CODE_SUCCESS
3130

3231
_data: Union[Dict, str] = {
3332
"code": code,

tests/test_async_api_permissions.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ async def test_perm_auto_apis_patch(self, transactional_db, easy_api_client):
192192
response = await client.patch(
193193
f"/{event.id}", json=new_data, content_type="application/json"
194194
)
195-
assert response.json().get("data")
195+
assert response.json().get("message") == "Updated."
196196

197197
response = await client.get(
198198
f"/{event.id}",

tests/test_async_auto_crud_apis.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -193,8 +193,9 @@ async def test_crud_default_create(self, transactional_db, easy_api_client):
193193
"/", json=object_data, content_type="application/json"
194194
)
195195
assert response.status_code == 200
196-
197196
assert response.json().get("code") == 201
197+
assert response.json().get("message") == "Created."
198+
198199
event_id = response.json().get("data")["id"]
199200

200201
response = await client.get(
@@ -276,7 +277,7 @@ async def test_crud_default_patch(self, transactional_db, easy_api_client):
276277
)
277278

278279
assert response.status_code == 200
279-
assert response.json().get("data")
280+
assert response.json().get("message") == "Updated."
280281

281282
response = await client.get(
282283
f"/{event.pk}",

0 commit comments

Comments
 (0)