Skip to content

Commit 92bc557

Browse files
committed
Part.delete: forward kwargs to super.delete
1 parent e008999 commit 92bc557

File tree

2 files changed

+16
-7
lines changed

2 files changed

+16
-7
lines changed

datajoint/user_tables.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -219,16 +219,17 @@ def table_name(cls):
219219
else cls.master.table_name + "__" + from_camel_case(cls.__name__)
220220
)
221221

222-
def delete(self, force=False):
222+
def delete(self, force=False, **kwargs):
223223
"""
224-
unless force is True, prohibits direct deletes from parts.
224+
Unless force is True, prohibits direct deletes from parts.
225+
Accepts any kwargs supported by Table.delete and forwards them to super().delete.
225226
"""
226227
if force:
227-
super().delete(force_parts=True)
228-
else:
229-
raise DataJointError(
230-
"Cannot delete from a Part directly. Delete from master instead"
231-
)
228+
return super().delete(force_parts=True, **kwargs)
229+
230+
raise DataJointError(
231+
"Cannot delete from a Part directly. Delete from master instead"
232+
)
232233

233234
def drop(self, force=False):
234235
"""

tests/test_cascading_delete.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,14 @@ def test_stepwise_delete(schema_simp_pop):
3636
not B()
3737
), "failed to delete from the parent table following child table deletion"
3838

39+
def test_part_delete_forwards_kwargs(schema_simp_pop):
40+
assert not dj.config["safemode"], "safemode must be off for testing"
41+
assert L() and A() and B() and B.C(), "schema population failed"
42+
43+
# Should accept and forward kwargs supported by Table.delete
44+
B.C().delete(force=True, transaction=False)
45+
46+
assert not B.C(), "failed to delete child table with forwarded kwargs"
3947

4048
def test_delete_tree_restricted(schema_simp_pop):
4149
assert not dj.config["safemode"], "safemode must be off for testing"

0 commit comments

Comments
 (0)