Skip to content

Commit 90be383

Browse files
authored
Fix removing cycle relationship (#579)
1 parent bfeb309 commit 90be383

File tree

2 files changed

+23
-2
lines changed

2 files changed

+23
-2
lines changed

mwdb/model/object.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -359,8 +359,9 @@ def remove_parent(self, parent, commit=True):
359359

360360
try:
361361
# Remove inherited permissions from parent
362-
for share in parent.shares:
363-
self.uninherit_share(share)
362+
if parent.id != self.id:
363+
for share in parent.shares:
364+
self.uninherit_share(share)
364365
# Remove parent
365366
self.parents.remove(parent)
366367
db.session.flush()

tests/backend/test_relations.py

+20
Original file line numberDiff line numberDiff line change
@@ -466,3 +466,23 @@ def test_removing_relations(admin_session):
466466
should_access=[Alice],
467467
should_not_access=[Bob],
468468
).test()
469+
470+
471+
def test_remove_self_cycle_relation(admin_session):
472+
testCase = RelationTestCase(admin_session)
473+
474+
Alice = testCase.new_user("Alice", capabilities=["removing_parents"])
475+
476+
SampleA = testCase.new_sample("SampleA")
477+
478+
SampleA.create(Alice)
479+
480+
SampleA.create(parent=SampleA)
481+
482+
a_shares = Alice.session.get_shares(SampleA.dhash)["shares"]
483+
484+
Alice.session.remove_parent(SampleA.dhash, SampleA.dhash)
485+
486+
a_shares_after_remove = Alice.session.get_shares(SampleA.dhash)["shares"]
487+
488+
assert a_shares == a_shares_after_remove

0 commit comments

Comments
 (0)