Skip to content

Commit 0af9f81

Browse files
authored
Merge pull request #2 from freemindcore/feat/serizalize_qs_m2m
fix: change id -> pk in filter
2 parents 969eba7 + 3cb7682 commit 0af9f81

File tree

6 files changed

+36
-34
lines changed

6 files changed

+36
-34
lines changed

easy/controller/meta.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,19 +27,19 @@ def __init__(self, service=None): # type: ignore
2727
super().__init__(model=self.model)
2828

2929
# Define Controller APIs for auto generation
30-
async def get_obj(self, request: HttpRequest, id: int) -> Any:
30+
async def get_obj(self, request: HttpRequest, pk: int) -> Any:
3131
"""
3232
GET /{id}
3333
Retrieve a single Object
3434
"""
35-
return await self.service.get_obj(id)
35+
return await self.service.get_obj(pk)
3636

37-
async def del_obj(self, request: HttpRequest, id: int) -> Any:
37+
async def del_obj(self, request: HttpRequest, pk: int) -> Any:
3838
"""
3939
DELETE /{id}
4040
Delete a single Object
4141
"""
42-
return await self.service.del_obj(id)
42+
return await self.service.del_obj(pk)
4343

4444
@paginate
4545
async def get_objs(
@@ -143,13 +143,13 @@ async def add_obj( # type: ignore
143143
return await self.service.add_obj(**data.dict())
144144

145145
async def patch_obj( # type: ignore
146-
self, request: HttpRequest, id: int, data: DataSchema
146+
self, request: HttpRequest, pk: int, data: DataSchema
147147
) -> Any:
148148
"""
149149
PATCH /?id={id}
150150
Update a single field for a Object
151151
"""
152-
return await self.service.patch_obj(id=id, payload=data.dict())
152+
return await self.service.patch_obj(pk=pk, payload=data.dict())
153153

154154
DataSchema.__name__ = (
155155
f"{opts_model.__name__}__AutoSchema({str(uuid.uuid4())[:4]})"

easy/domain/orm.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@ def _crud_add_obj(self, **payload: Dict) -> Any:
4343
return obj
4444

4545
def _crud_del_obj(self, id: int) -> "BaseApiResponse":
46-
obj = get_object_or_none(self.model, id=id)
46+
obj = get_object_or_none(self.model, pk=id)
4747
if obj:
48-
self.model.objects.filter(id=id).delete()
48+
self.model.objects.filter(pk=id).delete()
4949
return BaseApiResponse({"Detail": "Deleted."})
5050
else:
5151
return BaseApiResponse(
@@ -56,7 +56,7 @@ def _crud_update_obj(self, id: int, payload: Dict) -> "BaseApiResponse":
5656
local_fields, m2m_fields = self.__get_fields(payload)
5757
try:
5858
obj, created = self.model.objects.update_or_create(
59-
id=id, defaults=local_fields
59+
pk=id, defaults=local_fields
6060
)
6161
except Exception as e: # pragma: no cover
6262
logger.error(f"Crud_update Error - {e}", exc_info=True)
@@ -70,13 +70,13 @@ def _crud_update_obj(self, id: int, payload: Dict) -> "BaseApiResponse":
7070

7171
def _crud_get_obj(self, id: int) -> Any:
7272
if self.m2m_fields:
73-
qs = self.model.objects.filter(id=id).prefetch_related(
73+
qs = self.model.objects.filter(pk=id).prefetch_related(
7474
self.m2m_fields[0].name
7575
)
7676
for f in self.m2m_fields[1:]:
7777
qs = qs.prefetch_related(f.name)
7878
else:
79-
qs = self.model.objects.filter(id=id)
79+
qs = self.model.objects.filter(pk=id)
8080
if qs:
8181
return qs.first()
8282
return BaseApiResponse()

easy/services/crud.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,17 @@ def __init__(self, model: Type[models.Model]):
1414
super().__init__(model)
1515
self.model = model
1616

17-
async def get_obj(self, id: int) -> Any:
18-
return await sync_to_async(self._crud_get_obj)(id)
17+
async def get_obj(self, pk: int) -> Any:
18+
return await sync_to_async(self._crud_get_obj)(pk)
1919

2020
async def get_objs(self, maximum: int = None, **filters: Any) -> Any:
2121
return await sync_to_async(self._crud_get_objs_all)(maximum, **filters)
2222

23-
async def patch_obj(self, id: int, payload: Any) -> Any:
24-
return await sync_to_async(self._crud_update_obj)(id, payload)
23+
async def patch_obj(self, pk: int, payload: Any) -> Any:
24+
return await sync_to_async(self._crud_update_obj)(pk, payload)
2525

26-
async def del_obj(self, id: int) -> Any:
27-
return await sync_to_async(self._crud_del_obj)(id)
26+
async def del_obj(self, pk: int) -> Any:
27+
return await sync_to_async(self._crud_del_obj)(pk)
2828

2929
async def add_obj(self, **payload: Any) -> Any:
3030
return await sync_to_async(self._crud_add_obj)(**payload)

tests/demo_app/test_async_api_permissions.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -109,12 +109,12 @@ async def test_perm_auto_apis_delete(self, transactional_db, easy_api_client):
109109
object_data.update(title=f"{object_data['title']}_get")
110110
event = await sync_to_async(Event.objects.create)(**object_data)
111111
response = await client.get(
112-
f"/?id={event.id}",
112+
f"/?pk={event.id}",
113113
)
114114
assert response.status_code == 200
115115

116116
response = await client.delete(
117-
f"/?id={event.id}",
117+
f"/?pk={event.id}",
118118
)
119119
assert response.status_code == 200
120120
assert response.json().get("data") == {
@@ -124,11 +124,11 @@ async def test_perm_auto_apis_delete(self, transactional_db, easy_api_client):
124124
# Super users
125125
client = easy_api_client(AutoGenCrudAPIController, is_superuser=True)
126126
await client.delete(
127-
f"/?id={event.id}",
127+
f"/?pk={event.id}",
128128
)
129129

130130
response = await client.get(
131-
f"/?id={event.id}",
131+
f"/?pk={event.id}",
132132
)
133133
assert response.status_code == 200
134134
assert response.json().get("data") == {}
@@ -140,7 +140,7 @@ async def test_perm_auto_apis_patch(self, transactional_db, easy_api_client):
140140
event = await sync_to_async(Event.objects.create)(**object_data)
141141

142142
response = await client.get(
143-
f"/?id={event.id}",
143+
f"/?pk={event.id}",
144144
)
145145
assert response.status_code == 200
146146
assert response.json().get("data") == {
@@ -150,7 +150,7 @@ async def test_perm_auto_apis_patch(self, transactional_db, easy_api_client):
150150
# Staff users
151151
client = easy_api_client(AutoGenCrudAPIController, is_staff=True)
152152
response = await client.get(
153-
f"/?id={event.id}",
153+
f"/?pk={event.id}",
154154
)
155155
assert response.json().get("data")["title"] == f"{object_data['title']}"
156156

@@ -172,7 +172,7 @@ async def test_perm_auto_apis_patch(self, transactional_db, easy_api_client):
172172

173173
client = easy_api_client(AdminSitePermissionAPIController)
174174
response = await client.patch(
175-
f"/?id={event.id}", json=new_data, content_type="application/json"
175+
f"/?pk={event.id}", json=new_data, content_type="application/json"
176176
)
177177

178178
assert response.status_code == 200
@@ -183,13 +183,13 @@ async def test_perm_auto_apis_patch(self, transactional_db, easy_api_client):
183183
# Super users
184184
client = easy_api_client(AutoGenCrudAPIController, is_superuser=True)
185185
response = await client.patch(
186-
f"/?id={event.id}", json=new_data, content_type="application/json"
186+
f"/?pk={event.id}", json=new_data, content_type="application/json"
187187
)
188188
assert response.json().get("data")["id"] == event.id
189189
assert response.json().get("data")["created"] is False
190190

191191
response = await client.get(
192-
f"/?id={event.id}",
192+
f"/?pk={event.id}",
193193
)
194194
assert response.status_code == 200
195195
assert response.json().get("data")["title"] == "AsyncAPIEvent_patch"

tests/demo_app/test_async_auto_crud_apis.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ async def test_crud_default_get_delete(self, transactional_db, easy_api_client):
8484
event = await sync_to_async(Event.objects.create)(**object_data)
8585

8686
response = await client.get(
87-
f"/?id={event.id}",
87+
f"/?pk={event.id}",
8888
)
8989
assert response.status_code == 200
9090

@@ -95,11 +95,11 @@ async def test_crud_default_get_delete(self, transactional_db, easy_api_client):
9595
assert event_schema["end_date"] == data["end_date"]
9696

9797
await client.delete(
98-
f"/?id={event.id}",
98+
f"/?pk={event.id}",
9999
)
100100

101101
response = await client.get(
102-
f"/?id={event.id}",
102+
f"/?pk={event.id}",
103103
)
104104
assert response.status_code == 200
105105
assert response.json().get("data") == {}
@@ -118,6 +118,7 @@ async def test_crud_default_create(self, transactional_db, easy_api_client):
118118
object_data = dummy_data.copy()
119119
object_data.update(title=f"{object_data['title']}_create")
120120
object_data.update(owner=[client_c.id, client_d.id])
121+
object_data.update(lead_owner=[client_d.id])
121122

122123
response = await client.put(
123124
"/", json=object_data, content_type="application/json"
@@ -127,10 +128,11 @@ async def test_crud_default_create(self, transactional_db, easy_api_client):
127128
event_id = response.json().get("data")["id"]
128129

129130
response = await client.get(
130-
f"/?id={event_id}",
131+
f"/?pk={event_id}",
131132
)
132133
assert response.status_code == 200
133134
assert response.json().get("data")["title"] == "AsyncAdminAPIEvent_create"
135+
print(f"====================>>>>>>>>>{response.json().get('data')}")
134136

135137
async def test_crud_default_patch(self, transactional_db, easy_api_client):
136138
client = easy_api_client(AutoGenCrudAPIController)
@@ -139,7 +141,7 @@ async def test_crud_default_patch(self, transactional_db, easy_api_client):
139141
event = await sync_to_async(Event.objects.create)(**object_data)
140142

141143
response = await client.get(
142-
f"/?id={event.id}",
144+
f"/?pk={event.id}",
143145
)
144146
assert response.status_code == 200
145147
assert response.json().get("data")["title"] == f"{object_data['title']}"
@@ -161,15 +163,15 @@ async def test_crud_default_patch(self, transactional_db, easy_api_client):
161163
)
162164

163165
response = await client.patch(
164-
f"/?id={event.id}", json=new_data, content_type="application/json"
166+
f"/?pk={event.id}", json=new_data, content_type="application/json"
165167
)
166168

167169
assert response.status_code == 200
168170
assert response.json().get("data")["id"] == event.id
169171
assert response.json().get("data")["created"] is False
170172

171173
response = await client.get(
172-
f"/?id={event.id}",
174+
f"/?pk={event.id}",
173175
)
174176
assert response.status_code == 200
175177
assert response.json().get("data")["title"] == "AsyncAdminAPIEvent_patch"

tests/demo_app/test_async_other_apis.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ async def test_crud_apis(self, transactional_db, easy_api_client):
3333
event_id = response.json().get("data")["id"]
3434

3535
response = await client.get(
36-
f"/?id={event_id}",
36+
f"/?pk={event_id}",
3737
)
3838
assert response.status_code == 200
3939
assert response.json().get("data")["title"] == "AsyncAPIEvent_create"

0 commit comments

Comments
 (0)