From e6d3ebc9c35ab0c0c53aeb3142b48a0dcd1ce787 Mon Sep 17 00:00:00 2001 From: TheMihMih Date: Mon, 12 Jan 2026 12:27:03 +0300 Subject: [PATCH 1/4] refactor: rework dependencies initialization --- .../versions/05ddc0bd562a_add_roles.py | 12 +++++------- .../c4888c68e221_fix_admin_attr_and_policy.py | 19 +++++-------------- interface | 2 +- 3 files changed, 11 insertions(+), 22 deletions(-) diff --git a/app/alembic/versions/05ddc0bd562a_add_roles.py b/app/alembic/versions/05ddc0bd562a_add_roles.py index 5a4f83a50..d693dee28 100644 --- a/app/alembic/versions/05ddc0bd562a_add_roles.py +++ b/app/alembic/versions/05ddc0bd562a_add_roles.py @@ -7,13 +7,11 @@ import sqlalchemy as sa from alembic import op -from dishka import AsyncContainer +from dishka import AsyncContainer, Scope from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession from entities import Directory, Group -from ldap_protocol.roles.ace_dao import AccessControlEntryDAO -from ldap_protocol.roles.role_dao import RoleDAO from ldap_protocol.roles.role_use_case import RoleUseCase from ldap_protocol.utils.queries import get_base_directories from repo.pg.tables import queryable_attr as qa @@ -25,7 +23,7 @@ depends_on: None = None -def upgrade(container: AsyncContainer) -> None: # noqa: ARG001 +def upgrade(container: AsyncContainer) -> None: """Upgrade.""" op.create_table( "Roles", @@ -161,9 +159,9 @@ async def _create_system_roles(connection: AsyncConnection) -> None: if not base_dn_list: return - role_dao = RoleDAO(session) - ace_dao = AccessControlEntryDAO(session) - role_use_case = RoleUseCase(role_dao, ace_dao) + async with container(scope=Scope.REQUEST) as cnt: + role_use_case = await cnt.get(RoleUseCase) + await role_use_case.create_domain_admins_role() await role_use_case.create_read_only_role() diff --git a/app/alembic/versions/c4888c68e221_fix_admin_attr_and_policy.py b/app/alembic/versions/c4888c68e221_fix_admin_attr_and_policy.py index d8b0d0256..32ffeadaa 100644 --- a/app/alembic/versions/c4888c68e221_fix_admin_attr_and_policy.py +++ b/app/alembic/versions/c4888c68e221_fix_admin_attr_and_policy.py @@ -8,16 +8,12 @@ import sqlalchemy as sa from alembic import op -from dishka import AsyncContainer +from dishka import AsyncContainer, Scope from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession from sqlalchemy.orm import joinedload from entities import Attribute, Directory, NetworkPolicy -from ldap_protocol.ldap_schema.attribute_value_validator import ( - AttributeValueValidator, -) from ldap_protocol.ldap_schema.entity_type_dao import EntityTypeDAO -from ldap_protocol.ldap_schema.object_class_dao import ObjectClassDAO from ldap_protocol.utils.helpers import create_integer_hash from ldap_protocol.utils.queries import get_base_directories from repo.pg.tables import queryable_attr as qa @@ -29,7 +25,7 @@ depends_on: None | list[str] = None -def upgrade(container: AsyncContainer) -> None: # noqa: ARG001 +def upgrade(container: AsyncContainer) -> None: """Upgrade.""" async def _attach_entity_type_to_directories( @@ -41,14 +37,9 @@ async def _attach_entity_type_to_directories( if not await get_base_directories(session): return - object_class_dao = ObjectClassDAO( - session, - ) - entity_type_dao = EntityTypeDAO( - session, - object_class_dao=object_class_dao, - attribute_value_validator=AttributeValueValidator(), - ) + async with container(scope=Scope.REQUEST) as cnt: + entity_type_dao = await cnt.get(EntityTypeDAO) + await entity_type_dao.attach_entity_type_to_directories() await session.commit() diff --git a/interface b/interface index 017b7f344..242c01f0f 160000 --- a/interface +++ b/interface @@ -1 +1 @@ -Subproject commit 017b7f344e290814e3af5ca0f210a592afaf08ed +Subproject commit 242c01f0f26a5080beef14523f9dd9dfab3c89ec From 8fb79d280189bd85d9337d159b220e069b8e5ece Mon Sep 17 00:00:00 2001 From: TheMihMih Date: Mon, 12 Jan 2026 12:49:31 +0300 Subject: [PATCH 2/4] refactor: rework attribute_value_validator initialization --- app/alembic/versions/fafc3d0b11ec_.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/app/alembic/versions/fafc3d0b11ec_.py b/app/alembic/versions/fafc3d0b11ec_.py index b08247a75..ffdb83cf4 100644 --- a/app/alembic/versions/fafc3d0b11ec_.py +++ b/app/alembic/versions/fafc3d0b11ec_.py @@ -7,7 +7,7 @@ """ from alembic import op -from dishka import AsyncContainer +from dishka import AsyncContainer, Scope from sqlalchemy import delete, exists, select from sqlalchemy.exc import DBAPIError, IntegrityError from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession @@ -32,7 +32,7 @@ @temporary_stub_entity_type_name -def upgrade(container: AsyncContainer) -> None: # noqa: ARG001 +def upgrade(container: AsyncContainer) -> None: """Upgrade.""" async def _create_readonly_grp_and_plcy( @@ -52,11 +52,16 @@ async def _create_readonly_grp_and_plcy( ) group_dir = (await session.scalars(group_dir_query)).one() + async with container(scope=Scope.REQUEST) as cnt: + attribute_value_validator = await cnt.get( + AttributeValueValidator, + ) + if not group_dir: dir_, _ = await create_group( name="readonly domain controllers", sid=521, - attribute_value_validator=AttributeValueValidator(), + attribute_value_validator=attribute_value_validator, session=session, ) From 72d5db4b2e70a8d9cf84ecc241870ebda8e0df44 Mon Sep 17 00:00:00 2001 From: TheMihMih Date: Mon, 12 Jan 2026 13:26:44 +0300 Subject: [PATCH 3/4] refactor: session from dishka --- .../275222846605_initial_ldap_schema.py | 20 +++++++------- ...6ec_update_krbadmin_useraccountcontrol_.py | 16 ++++++------ .../versions/8164b4a9e1f1_add_ou_computers.py | 14 +++++----- .../ba78cef9700a_initial_entity_type.py | 26 ++++++++----------- .../c4888c68e221_fix_admin_attr_and_policy.py | 22 +++++++--------- ...4c52a613e5_migrate_password_prop_from_E.py | 6 ++--- .../e4d6d99d32bd_add_audit_policies.py | 10 +++---- ...f1abf7ef2443_add_container_object_class.py | 18 ++++++------- app/alembic/versions/fafc3d0b11ec_.py | 14 +++++----- 9 files changed, 66 insertions(+), 80 deletions(-) diff --git a/app/alembic/versions/275222846605_initial_ldap_schema.py b/app/alembic/versions/275222846605_initial_ldap_schema.py index bbf8fe117..2c8ed7d3d 100644 --- a/app/alembic/versions/275222846605_initial_ldap_schema.py +++ b/app/alembic/versions/275222846605_initial_ldap_schema.py @@ -268,9 +268,9 @@ def upgrade(container: AsyncContainer) -> None: session.commit() # NOTE: Load objectClasses into the database - async def _create_object_classes(connection: AsyncConnection) -> None: - session = AsyncSession(bind=connection) - await session.begin() + async def _create_object_classes(connection: AsyncConnection) -> None: # noqa: ARG001 + async with container(scope=Scope.REQUEST) as cnt: + session = await cnt.get(AsyncSession) oc_already_created_oids = set() oc_first_priority_raw_definitions = ( @@ -343,11 +343,11 @@ async def _create_object_classes(connection: AsyncConnection) -> None: op.run_async(_create_object_classes) - async def _create_attribute_types(connection: AsyncConnection) -> None: - session = AsyncSession(bind=connection) - await session.begin() + async def _create_attribute_types(connection: AsyncConnection) -> None: # noqa: ARG001 + async with container(scope=Scope.REQUEST) as cnt: + session = await cnt.get(AsyncSession) + attribute_type_dao = await cnt.get(AttributeTypeDAO) - attribute_type_dao = AttributeTypeDAO(session) for oid, name in ( ("2.16.840.1.113730.3.1.610", "nsAccountLock"), ("1.3.6.1.4.1.99999.1.1", "posixEmail"), @@ -368,11 +368,9 @@ async def _create_attribute_types(connection: AsyncConnection) -> None: op.run_async(_create_attribute_types) - async def _modify_object_classes(connection: AsyncConnection) -> None: - session = AsyncSession(bind=connection) - await session.begin() - + async def _modify_object_classes(connection: AsyncConnection) -> None: # noqa: ARG001 async with container(scope=Scope.REQUEST) as cnt: + session = await cnt.get(AsyncSession) at_dao = await cnt.get(AttributeTypeDAO) oc_dao = await cnt.get(ObjectClassDAO) diff --git a/app/alembic/versions/6303f5c706ec_update_krbadmin_useraccountcontrol_.py b/app/alembic/versions/6303f5c706ec_update_krbadmin_useraccountcontrol_.py index d71ea9c05..e61ed50b8 100644 --- a/app/alembic/versions/6303f5c706ec_update_krbadmin_useraccountcontrol_.py +++ b/app/alembic/versions/6303f5c706ec_update_krbadmin_useraccountcontrol_.py @@ -7,7 +7,7 @@ """ from alembic import op -from dishka import AsyncContainer +from dishka import AsyncContainer, Scope from sqlalchemy import select, update from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession from sqlalchemy.orm import joinedload @@ -24,12 +24,12 @@ depends_on: None | list[str] = None -def upgrade(container: AsyncContainer) -> None: # noqa: ARG001 +def upgrade(container: AsyncContainer) -> None: """Upgrade.""" - async def _update_krbadmin_uac(connection: AsyncConnection) -> None: - session = AsyncSession(connection) - await session.begin() + async def _update_krbadmin_uac(connection: AsyncConnection) -> None: # noqa: ARG001 + async with container(scope=Scope.REQUEST) as cnt: + session = await cnt.get(AsyncSession) krbadmin_user_dir = await session.scalar( select(Directory) @@ -52,9 +52,9 @@ async def _update_krbadmin_uac(connection: AsyncConnection) -> None: ), ) - async def _change_uid_admin(connection: AsyncConnection) -> None: - session = AsyncSession(bind=connection) - await session.begin() + async def _change_uid_admin(connection: AsyncConnection) -> None: # noqa: ARG001 + async with container(scope=Scope.REQUEST) as cnt: + session = await cnt.get(AsyncSession) directory = await session.scalar( select(Directory) diff --git a/app/alembic/versions/8164b4a9e1f1_add_ou_computers.py b/app/alembic/versions/8164b4a9e1f1_add_ou_computers.py index f53db528a..344e9797a 100644 --- a/app/alembic/versions/8164b4a9e1f1_add_ou_computers.py +++ b/app/alembic/versions/8164b4a9e1f1_add_ou_computers.py @@ -35,11 +35,9 @@ def upgrade(container: AsyncContainer) -> None: """Upgrade.""" from ldap_protocol.auth.setup_gateway import SetupGateway - async def _create_ou_computers(connection: AsyncConnection) -> None: - session = AsyncSession(bind=connection) - await session.begin() - + async def _create_ou_computers(connection: AsyncConnection) -> None: # noqa: ARG001 async with container(scope=Scope.REQUEST) as cnt: + session = await cnt.get(AsyncSession) setup_gateway = await cnt.get(SetupGateway) role_use_case = await cnt.get(RoleUseCase) @@ -80,12 +78,12 @@ async def _create_ou_computers(connection: AsyncConnection) -> None: op.run_async(_create_ou_computers) -def downgrade(container: AsyncContainer) -> None: # noqa: ARG001 +def downgrade(container: AsyncContainer) -> None: """Downgrade.""" - async def _delete_ou_computers(connection: AsyncConnection) -> None: - session = AsyncSession(bind=connection) - await session.begin() + async def _delete_ou_computers(connection: AsyncConnection) -> None: # noqa: ARG001 + async with container(scope=Scope.REQUEST) as cnt: + session = await cnt.get(AsyncSession) base_dn_list = await get_base_directories(session) if not base_dn_list: diff --git a/app/alembic/versions/ba78cef9700a_initial_entity_type.py b/app/alembic/versions/ba78cef9700a_initial_entity_type.py index c4beb59d2..3e9852b9c 100644 --- a/app/alembic/versions/ba78cef9700a_initial_entity_type.py +++ b/app/alembic/versions/ba78cef9700a_initial_entity_type.py @@ -96,16 +96,14 @@ def upgrade(container: AsyncContainer) -> None: ["oid"], ) - async def _create_entity_types(connection: AsyncConnection) -> None: - session = AsyncSession(bind=connection) - await session.begin() + async def _create_entity_types(connection: AsyncConnection) -> None: # noqa: ARG001 + async with container(scope=Scope.REQUEST) as cnt: + session = await cnt.get(AsyncSession) + entity_type_use_case = await cnt.get(EntityTypeUseCase) if not await get_base_directories(session): return - async with container(scope=Scope.REQUEST) as cnt: - entity_type_use_case = await cnt.get(EntityTypeUseCase) - for entity_type_data in ENTITY_TYPE_DATAS: await entity_type_use_case.create( EntityTypeDTO( @@ -118,10 +116,10 @@ async def _create_entity_types(connection: AsyncConnection) -> None: await session.commit() async def _append_object_class_to_user_dirs( - connection: AsyncConnection, + connection: AsyncConnection, # noqa: ARG001 ) -> None: - session = AsyncSession(bind=connection) - await session.begin() + async with container(scope=Scope.REQUEST) as cnt: + session = await cnt.get(AsyncSession) if not await get_base_directories(session): return @@ -156,17 +154,15 @@ async def _append_object_class_to_user_dirs( await session.commit() async def _attach_entity_type_to_directories( - connection: AsyncConnection, + connection: AsyncConnection, # noqa: ARG001 ) -> None: - session = AsyncSession(bind=connection) - await session.begin() + async with container(scope=Scope.REQUEST) as cnt: + session = await cnt.get(AsyncSession) + entity_type_dao = await cnt.get(EntityTypeDAO) if not await get_base_directories(session): return - async with container(scope=Scope.REQUEST) as cnt: - entity_type_dao = await cnt.get(EntityTypeDAO) - await entity_type_dao.attach_entity_type_to_directories() await session.commit() diff --git a/app/alembic/versions/c4888c68e221_fix_admin_attr_and_policy.py b/app/alembic/versions/c4888c68e221_fix_admin_attr_and_policy.py index 32ffeadaa..3bc7020b8 100644 --- a/app/alembic/versions/c4888c68e221_fix_admin_attr_and_policy.py +++ b/app/alembic/versions/c4888c68e221_fix_admin_attr_and_policy.py @@ -29,23 +29,21 @@ def upgrade(container: AsyncContainer) -> None: """Upgrade.""" async def _attach_entity_type_to_directories( - connection: AsyncConnection, + connection: AsyncConnection, # noqa: ARG001 ) -> None: - session = AsyncSession(bind=connection) - await session.begin() + async with container(scope=Scope.REQUEST) as cnt: + session = await cnt.get(AsyncSession) + entity_type_dao = await cnt.get(EntityTypeDAO) if not await get_base_directories(session): return - async with container(scope=Scope.REQUEST) as cnt: - entity_type_dao = await cnt.get(EntityTypeDAO) - await entity_type_dao.attach_entity_type_to_directories() await session.commit() - async def _change_uid_admin(connection: AsyncConnection) -> None: - session = AsyncSession(bind=connection) - await session.begin() + async def _change_uid_admin(connection: AsyncConnection) -> None: # noqa: ARG001 + async with container(scope=Scope.REQUEST) as cnt: + session = await cnt.get(AsyncSession) directory = await session.scalar( sa.select(Directory) @@ -77,9 +75,9 @@ async def _change_uid_admin(connection: AsyncConnection) -> None: ) await session.commit() - async def _change_ldap_session_ttl(connection: AsyncConnection) -> None: - session = AsyncSession(bind=connection) - await session.begin() + async def _change_ldap_session_ttl(connection: AsyncConnection) -> None: # noqa: ARG001 + async with container(scope=Scope.REQUEST) as cnt: + session = await cnt.get(AsyncSession) await session.execute( sa.update(NetworkPolicy) diff --git a/app/alembic/versions/df4c52a613e5_migrate_password_prop_from_E.py b/app/alembic/versions/df4c52a613e5_migrate_password_prop_from_E.py index 6fef5b0bc..2a2c7d436 100644 --- a/app/alembic/versions/df4c52a613e5_migrate_password_prop_from_E.py +++ b/app/alembic/versions/df4c52a613e5_migrate_password_prop_from_E.py @@ -46,11 +46,9 @@ def upgrade(container: AsyncContainer) -> None: ), ) - async def _create_common_passwords(connection: AsyncConnection) -> None: - session = AsyncSession(bind=connection) - await session.begin() - + async def _create_common_passwords(connection: AsyncConnection) -> None: # noqa: ARG001 async with container(scope=Scope.REQUEST) as cnt: + session = await cnt.get(AsyncSession) password_ban_word_repo = await cnt.get(PasswordBanWordRepository) await password_ban_word_repo.replace(_BAN_WORDS) diff --git a/app/alembic/versions/e4d6d99d32bd_add_audit_policies.py b/app/alembic/versions/e4d6d99d32bd_add_audit_policies.py index 9fdd83900..d2530bf09 100644 --- a/app/alembic/versions/e4d6d99d32bd_add_audit_policies.py +++ b/app/alembic/versions/e4d6d99d32bd_add_audit_policies.py @@ -30,15 +30,15 @@ def upgrade(container: AsyncContainer) -> None: """Upgrade.""" - async def _create_audit_policies(connection: AsyncConnection) -> None: - session = AsyncSession(bind=connection) + async def _create_audit_policies(connection: AsyncConnection) -> None: # noqa: ARG001 + async with container(scope=Scope.REQUEST) as cnt: + session = await cnt.get(AsyncSession) + audit_dao = await cnt.get(AuditPoliciesDAO) + dest_dao = await cnt.get(AuditDestinationDAO) if not await get_base_directories(session): return - async with container(scope=Scope.REQUEST) as cnt: - audit_dao = await cnt.get(AuditPoliciesDAO) - dest_dao = await cnt.get(AuditDestinationDAO) manager = Mock(spec=RawAuditManager) use_case = AuditUseCase(audit_dao, dest_dao, manager) await use_case.create_policies() diff --git a/app/alembic/versions/f1abf7ef2443_add_container_object_class.py b/app/alembic/versions/f1abf7ef2443_add_container_object_class.py index 318cb3417..99b2a4774 100644 --- a/app/alembic/versions/f1abf7ef2443_add_container_object_class.py +++ b/app/alembic/versions/f1abf7ef2443_add_container_object_class.py @@ -7,7 +7,7 @@ """ from alembic import op -from dishka import AsyncContainer +from dishka import AsyncContainer, Scope from sqlalchemy import delete, func, insert, select, update from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession @@ -22,15 +22,15 @@ depends_on: None | str = None -def upgrade(container: AsyncContainer) -> None: # noqa: ARG001 +def upgrade(container: AsyncContainer) -> None: """Upgrade.""" async def _migrate_ou_to_cn_containers( - connection: AsyncConnection, + connection: AsyncConnection, # noqa: ARG001 ) -> None: """Migrate existing ou= containers to cn= containers.""" - session = AsyncSession(bind=connection) - await session.begin() + async with container(scope=Scope.REQUEST) as cnt: + session = await cnt.get(AsyncSession) containers_to_migrate = ["groups", "computers", "users"] directories = await session.scalars( @@ -107,15 +107,15 @@ async def _migrate_ou_to_cn_containers( op.run_async(_migrate_ou_to_cn_containers) -def downgrade(container: AsyncContainer) -> None: # noqa: ARG001 +def downgrade(container: AsyncContainer) -> None: """Downgrade.""" async def _migrate_cn_to_ou_containers( - connection: AsyncConnection, + connection: AsyncConnection, # noqa: ARG001 ) -> None: """Migrate existing cn= containers back to ou= containers.""" - session = AsyncSession(bind=connection) - await session.begin() + async with container(scope=Scope.REQUEST) as cnt: + session = await cnt.get(AsyncSession) containers_to_migrate = ["groups", "computers", "users"] directories = await session.scalars( diff --git a/app/alembic/versions/fafc3d0b11ec_.py b/app/alembic/versions/fafc3d0b11ec_.py index ffdb83cf4..97825010e 100644 --- a/app/alembic/versions/fafc3d0b11ec_.py +++ b/app/alembic/versions/fafc3d0b11ec_.py @@ -36,10 +36,13 @@ def upgrade(container: AsyncContainer) -> None: """Upgrade.""" async def _create_readonly_grp_and_plcy( - connection: AsyncConnection, + connection: AsyncConnection, # noqa: ARG001 ) -> None: - session = AsyncSession(bind=connection) - await session.begin() + async with container(scope=Scope.REQUEST) as cnt: + session = await cnt.get(AsyncSession) + attribute_value_validator = await cnt.get( + AttributeValueValidator, + ) base_dn_list = await get_base_directories(session) if not base_dn_list: return @@ -52,11 +55,6 @@ async def _create_readonly_grp_and_plcy( ) group_dir = (await session.scalars(group_dir_query)).one() - async with container(scope=Scope.REQUEST) as cnt: - attribute_value_validator = await cnt.get( - AttributeValueValidator, - ) - if not group_dir: dir_, _ = await create_group( name="readonly domain controllers", From 0e38bcce0ec54e4043b034d6868188285509cc01 Mon Sep 17 00:00:00 2001 From: TheMihMih Date: Mon, 12 Jan 2026 16:23:33 +0300 Subject: [PATCH 4/4] refactor: fixed missed sessions --- .../versions/01f3f05a5b11_add_primary_group_id.py | 13 ++++++++----- app/alembic/versions/05ddc0bd562a_add_roles.py | 10 ++++------ .../versions/4e8772277cfe_add_web_permissions.py | 10 +++++----- ...3f5c706ec_update_krbadmin_useraccountcontrol_.py | 8 ++++---- 4 files changed, 21 insertions(+), 20 deletions(-) diff --git a/app/alembic/versions/01f3f05a5b11_add_primary_group_id.py b/app/alembic/versions/01f3f05a5b11_add_primary_group_id.py index 83a07695d..bfa82dbfc 100644 --- a/app/alembic/versions/01f3f05a5b11_add_primary_group_id.py +++ b/app/alembic/versions/01f3f05a5b11_add_primary_group_id.py @@ -114,8 +114,9 @@ async def _add_domain_computers_group(connection: AsyncConnection) -> None: # n op.run_async(_add_domain_computers_group) - async def _add_primary_group_id(connection: AsyncConnection) -> None: - session = AsyncSession(connection) + async def _add_primary_group_id(connection: AsyncConnection) -> None: # noqa: ARG001 + async with container(scope=Scope.REQUEST) as cnt: + session = await cnt.get(AsyncSession) base_dn_list = await get_base_directories(session) if not base_dn_list: @@ -164,15 +165,17 @@ async def _add_primary_group_id(connection: AsyncConnection) -> None: op.run_async(_add_primary_group_id) -def downgrade(container: AsyncContainer) -> None: # noqa: ARG001 +def downgrade(container: AsyncContainer) -> None: """Downgrade.""" bind = op.get_bind() session = Session(bind=bind) async def _delete_domain_computers_group( - connection: AsyncConnection, + connection: AsyncConnection, # noqa: ARG001 ) -> None: - session = AsyncSession(connection) + async with container(scope=Scope.REQUEST) as cnt: + session = await cnt.get(AsyncSession) + base_dn_list = await get_base_directories(session) if not base_dn_list: return diff --git a/app/alembic/versions/05ddc0bd562a_add_roles.py b/app/alembic/versions/05ddc0bd562a_add_roles.py index d693dee28..203e6b387 100644 --- a/app/alembic/versions/05ddc0bd562a_add_roles.py +++ b/app/alembic/versions/05ddc0bd562a_add_roles.py @@ -151,17 +151,15 @@ def upgrade(container: AsyncContainer) -> None: op.drop_table("AccessPolicyMemberships") op.drop_table("AccessPolicies") - async def _create_system_roles(connection: AsyncConnection) -> None: - session = AsyncSession(connection) - await session.begin() + async def _create_system_roles(connection: AsyncConnection) -> None: # noqa: ARG001 + async with container(scope=Scope.REQUEST) as cnt: + session = await cnt.get(AsyncSession) + role_use_case = await cnt.get(RoleUseCase) base_dn_list = await get_base_directories(session) if not base_dn_list: return - async with container(scope=Scope.REQUEST) as cnt: - role_use_case = await cnt.get(RoleUseCase) - await role_use_case.create_domain_admins_role() await role_use_case.create_read_only_role() diff --git a/app/alembic/versions/4e8772277cfe_add_web_permissions.py b/app/alembic/versions/4e8772277cfe_add_web_permissions.py index 5381ad7e7..e6fd1590a 100644 --- a/app/alembic/versions/4e8772277cfe_add_web_permissions.py +++ b/app/alembic/versions/4e8772277cfe_add_web_permissions.py @@ -7,7 +7,7 @@ """ from alembic import op -from dishka import AsyncContainer +from dishka import AsyncContainer, Scope from sqlalchemy import Column, select, text from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession @@ -22,12 +22,12 @@ depends_on: None | list[str] = None -def upgrade(container: AsyncContainer) -> None: # noqa: ARG001 +def upgrade(container: AsyncContainer) -> None: """Upgrade.""" - async def _add_api_permissions(connection: AsyncConnection) -> None: - session = AsyncSession(connection) - await session.begin() + async def _add_api_permissions(connection: AsyncConnection) -> None: # noqa: ARG001 + async with container(scope=Scope.REQUEST) as cnt: + session = await cnt.get(AsyncSession) query = ( select(Role) .filter_by(name=RoleConstants.DOMAIN_ADMINS_ROLE_NAME) diff --git a/app/alembic/versions/6303f5c706ec_update_krbadmin_useraccountcontrol_.py b/app/alembic/versions/6303f5c706ec_update_krbadmin_useraccountcontrol_.py index e61ed50b8..ec927c733 100644 --- a/app/alembic/versions/6303f5c706ec_update_krbadmin_useraccountcontrol_.py +++ b/app/alembic/versions/6303f5c706ec_update_krbadmin_useraccountcontrol_.py @@ -90,12 +90,12 @@ async def _change_uid_admin(connection: AsyncConnection) -> None: # noqa: ARG00 op.run_async(_change_uid_admin) -def downgrade(container: AsyncContainer) -> None: # noqa: ARG001 +def downgrade(container: AsyncContainer) -> None: """Downgrade.""" - async def _downgrade_krbadmin_uac(connection: AsyncConnection) -> None: - session = AsyncSession(connection) - await session.begin() + async def _downgrade_krbadmin_uac(connection: AsyncConnection) -> None: # noqa: ARG001 + async with container(scope=Scope.REQUEST) as cnt: + session = await cnt.get(AsyncSession) krbadmin_user_dir = await session.scalar( select(Directory)