Skip to content

Commit 103911d

Browse files
authored
Merge pull request #619 from MultiDirectoryLab/fix_modify_entry
add: modify_dn: attach entity to dir
2 parents 428e470 + 63cc7fb commit 103911d

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

app/ldap_protocol/ldap_requests/modify_dn.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
INVALID_ACCESS_RESPONSE,
2020
ModifyDNResponse,
2121
)
22+
from ldap_protocol.ldap_schema.entity_type_dao import EntityTypeDAO
2223
from ldap_protocol.policies.access_policy import mutate_ap
2324
from ldap_protocol.utils.queries import (
2425
get_filter_from_path,
@@ -89,6 +90,7 @@ async def handle(
8990
self,
9091
ldap_session: LDAPSession,
9192
session: AsyncSession,
93+
entity_type_dao: EntityTypeDAO,
9294
) -> AsyncGenerator[ModifyDNResponse, None]:
9395
"""Handle message with current user."""
9496
if not ldap_session.user:
@@ -254,10 +256,20 @@ async def handle(
254256

255257
# NOTE: update relationship, don't delete row
256258
await session.refresh(directory)
257-
258259
await session.delete(directory)
259260
await session.flush()
260261

262+
await session.refresh(
263+
instance=new_directory,
264+
attribute_names=["attributes"],
265+
with_for_update=None,
266+
)
267+
await entity_type_dao.attach_entity_type_to_directory(
268+
directory=new_directory,
269+
is_system_entity_type=False,
270+
)
271+
await session.flush()
272+
261273
await session.commit()
262274

263275
yield ModifyDNResponse(result_code=LDAPCodes.SUCCESS)

tests/test_ldap/test_util/test_modify.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -450,7 +450,10 @@ async def test_ldap_modify_dn(
450450

451451
assert await session.scalar(
452452
select(Directory)
453-
.filter(Directory.path == ["dc=test", "dc=md", "ou=users", "cn=user2"])
453+
.filter(
454+
Directory.path == ["dc=test", "dc=md", "ou=users", "cn=user2"],
455+
Directory.entity_type_name.isnot(None),
456+
)
454457
) # fmt: skip
455458

456459

0 commit comments

Comments
 (0)