From 1c2e325498d9faeebeb02674deb4e17cb1f4cc6b Mon Sep 17 00:00:00 2001 From: Andres Sanchez Date: Mon, 26 Feb 2024 23:58:46 +0100 Subject: [PATCH] Refactor obsolete method api methods --- open_needs_server/extensions/domain/api.py | 4 ++-- open_needs_server/extensions/need/api.py | 4 ++-- open_needs_server/extensions/ons_admin/__init__.py | 6 +++--- open_needs_server/extensions/organization/api.py | 4 ++-- open_needs_server/extensions/project/api.py | 9 +++++++-- 5 files changed, 16 insertions(+), 11 deletions(-) diff --git a/open_needs_server/extensions/domain/api.py b/open_needs_server/extensions/domain/api.py index 4b5bca1..e7dd5fc 100644 --- a/open_needs_server/extensions/domain/api.py +++ b/open_needs_server/extensions/domain/api.py @@ -25,9 +25,9 @@ async def get_domains(db: AsyncSession, skip: int = 0, limit: int = 100): async def create_domain(db: AsyncSession, domain: DomainSchema): - cursor = await db.execute(insert(DomainModel), domain) + cursor = await db.execute(insert(DomainModel).values(**domain).returning(DomainModel.id)) await db.commit() - domain_id = cursor.inserted_primary_key[0] + domain_id = cursor.fetchone()[0] return {**domain, "id": domain_id} diff --git a/open_needs_server/extensions/need/api.py b/open_needs_server/extensions/need/api.py index a1ac7f9..17c2ee4 100644 --- a/open_needs_server/extensions/need/api.py +++ b/open_needs_server/extensions/need/api.py @@ -35,9 +35,9 @@ async def create_need(ext: ONSExtension, db: AsyncSession, need: NeedReturnSchem data = ext.fire_event("need_create", {"need": need, "project": db_project}) need = data["need"] - cursor = await db.execute(insert(NeedModel), need) + cursor = await db.execute(insert(NeedModel).values(**need).returning(NeedModel.id)) await db.commit() - need_id = cursor.inserted_primary_key[0] + need_id = cursor.fetchone()[0] need = ext.fire_event("need_create_done", need) diff --git a/open_needs_server/extensions/ons_admin/__init__.py b/open_needs_server/extensions/ons_admin/__init__.py index 3779733..19fba41 100644 --- a/open_needs_server/extensions/ons_admin/__init__.py +++ b/open_needs_server/extensions/ons_admin/__init__.py @@ -1,6 +1,6 @@ import importlib import logging -from sqladmin import Admin, ModelAdmin +from sqladmin import Admin, ModelView from open_needs_server.extensions.base import ONSExtension from open_needs_server.database import engine @@ -24,7 +24,7 @@ def __init__(self, *args, **kwargs): self.admin = Admin(self.ons_app, engine) for admin_model in self._get_models(): - self.admin.register_model(admin_model) + self.admin.add_view(admin_model) def _get_models(self): models = [] @@ -49,7 +49,7 @@ def _get_models(self): new_class = types.new_class( name=f"{class_str}Admin", - bases=(ModelAdmin,), + bases=(ModelView,), kwds={"model": clazz}, exec_body=lambda ns: ns.update( { diff --git a/open_needs_server/extensions/organization/api.py b/open_needs_server/extensions/organization/api.py index 56888ea..1ece3ff 100644 --- a/open_needs_server/extensions/organization/api.py +++ b/open_needs_server/extensions/organization/api.py @@ -51,9 +51,9 @@ async def create_organization( ext: ONSExtension, db: AsyncSession, organization: OrganizationCreateSchema ): organization = ext.fire_event("org_create", organization) - cursor = await db.execute(insert(OrganizationModel), organization) + cursor = await db.execute(insert(OrganizationModel).values(**organization).returning(OrganizationModel.id)) await db.commit() - organization_id = cursor.inserted_primary_key[0] + organization_id = cursor.fetchone()[0] new_organization = {**organization, "id": organization_id} new_organization = ext.fire_event("org_create_done", new_organization) return new_organization diff --git a/open_needs_server/extensions/project/api.py b/open_needs_server/extensions/project/api.py index 1675071..40d9999 100644 --- a/open_needs_server/extensions/project/api.py +++ b/open_needs_server/extensions/project/api.py @@ -37,9 +37,14 @@ async def create_project(db: AsyncSession, project: ProjectSchema): raise HTTPException(404, detail=f"Unknown domain id: {domain_id}") domains_db.append(domain_db) - cursor = await db.execute(insert(ProjectModel), project) + + project = { + "title": project["title"], + "organization_id": project["organization_id"] + } + cursor = await db.execute(insert(ProjectModel).values(**project).returning(ProjectModel.id)) await db.commit() - project_id = cursor.inserted_primary_key[0] + project_id = cursor.fetchone()[0] project_db = await get_project(db, project_id) project_db.domains = domains_db await db.commit()