@@ -186,6 +186,9 @@ async def _get_many(self, request: web.Request) -> web.Response:
186186 query = parse_obj_as (GetManyParams , request .query )
187187
188188 results = await self .get_many (query )
189+ if not results :
190+ raise web .HTTPNotFound ()
191+
189192 results = [await self .filter_by_permissions (request , "view" , r ) for r in results
190193 if await permits (request , f"admin.{ self .name } .view" , context = (request , r ))]
191194 for r in results :
@@ -255,6 +258,8 @@ async def _update_many(self, request: web.Request) -> web.Response:
255258
256259 # Check original records are allowed by permission filters.
257260 originals = await self .get_many ({"ids" : query ["ids" ]})
261+ if not originals :
262+ raise web .HTTPNotFound ()
258263 allowed = (permits (request , f"admin.{ self .name } .edit" , context = (request , r ))
259264 for r in originals )
260265 allowed_f = (permits (request , f"admin.{ self .name } .{ k } .edit" , context = (request , r ))
@@ -266,6 +271,7 @@ async def _update_many(self, request: web.Request) -> web.Response:
266271 raise web .HTTPForbidden ()
267272
268273 ids = await self .update_many (query )
274+ # get_many() is called above, so we can be sure there will be results here.
269275 return json_response ({"data" : ids })
270276
271277 async def _delete (self , request : web .Request ) -> web .Response :
@@ -293,6 +299,8 @@ async def _delete_many(self, request: web.Request) -> web.Response:
293299 raise web .HTTPForbidden ()
294300
295301 ids = await self .delete_many (query )
302+ if not ids :
303+ raise web .HTTPNotFound ()
296304 return json_response ({"data" : ids })
297305
298306 @cached_property
0 commit comments