From bbbb92782fc041c1245c2ea6bdfa5d2085350082 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Sun, 1 Sep 2019 15:07:09 +0300 Subject: [PATCH] Fix updating instance with sqlalchemy core --- maubot/management/api/client.py | 15 ++++++++------- maubot/management/api/instance.py | 16 ++++++++-------- setup.py | 2 +- 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/maubot/management/api/client.py b/maubot/management/api/client.py index 7bfccf5..e812bd9 100644 --- a/maubot/management/api/client.py +++ b/maubot/management/api/client.py @@ -85,13 +85,14 @@ async def _update_client(client: Client, data: dict) -> web.Response: return resp.bad_client_connection_details except ValueError as e: return resp.mxid_mismatch(str(e)[len("MXID mismatch: "):]) - await client.update_avatar_url(data.get("avatar_url", None)) - await client.update_displayname(data.get("displayname", None)) - await client.update_started(data.get("started", None)) - client.enabled = data.get("enabled", client.enabled) - client.autojoin = data.get("autojoin", client.autojoin) - client.sync = data.get("sync", client.sync) - return resp.updated(client.to_dict()) + with client.db_instance.edit_mode(): + await client.update_avatar_url(data.get("avatar_url", None)) + await client.update_displayname(data.get("displayname", None)) + await client.update_started(data.get("started", None)) + client.enabled = data.get("enabled", client.enabled) + client.autojoin = data.get("autojoin", client.autojoin) + client.sync = data.get("sync", client.sync) + return resp.updated(client.to_dict()) @routes.post("/client/new") diff --git a/maubot/management/api/instance.py b/maubot/management/api/instance.py index 2114907..91861af 100644 --- a/maubot/management/api/instance.py +++ b/maubot/management/api/instance.py @@ -64,13 +64,13 @@ async def _create_instance(instance_id: str, data: dict) -> web.Response: async def _update_instance(instance: PluginInstance, data: dict) -> web.Response: if not await instance.update_primary_user(data.get("primary_user", None)): return resp.primary_user_not_found - instance.update_id(data.get("id", None)) - instance.update_enabled(data.get("enabled", None)) - instance.update_config(data.get("config", None)) - await instance.update_started(data.get("started", None)) - await instance.update_type(data.get("type", None)) - instance.db.commit() - return resp.updated(instance.to_dict()) + with instance.db_instance.edit_mode(): + instance.update_id(data.get("id", None)) + instance.update_enabled(data.get("enabled", None)) + instance.update_config(data.get("config", None)) + await instance.update_started(data.get("started", None)) + await instance.update_type(data.get("type", None)) + return resp.updated(instance.to_dict()) @routes.put("/instance/{id}") @@ -90,7 +90,7 @@ async def update_instance(request: web.Request) -> web.Response: @routes.delete("/instance/{id}") async def delete_instance(request: web.Request) -> web.Response: instance_id = request.match_info.get("id", "").lower() - instance = PluginInstance.get(instance_id, None) + instance = PluginInstance.get(instance_id) if not instance: return resp.instance_not_found if instance.started: diff --git a/setup.py b/setup.py index 0884fb4..b9bf4dd 100644 --- a/setup.py +++ b/setup.py @@ -21,7 +21,7 @@ setuptools.setup( packages=setuptools.find_packages(), install_requires=[ - "mautrix>=0.4.dev67,<0.5", + "mautrix>=0.4.dev68,<0.5", "aiohttp>=3.0.1,<4", "SQLAlchemy>=1.2.3,<2", "alembic>=1.0.0,<2",