async def patch(request: web.Request): user: User = await check_authorized(request) data = await request.json() creator = request.match_info["creator"] roomname = request.match_info["roomname"] if creator != user.name: return web.HTTPUnauthorized() new_name = data.get("name") new_logo = data.get("logo") if not any([new_name, new_logo]): return web.HTTPBadRequest() room = Room.get_or_none(name=roomname, creator=user) if room is None: return web.HTTPBadRequest() if new_name: if Room.filter(name=new_name, creator=user).count() > 0: return web.HTTPBadRequest() room.name = new_name if new_logo: room.logo_id = new_logo room.save() return web.HTTPOk()