Skip to content

Commit bf2d61f

Browse files
committed
fix move_before
1 parent bdcde2d commit bf2d61f

File tree

2 files changed

+31
-2
lines changed

2 files changed

+31
-2
lines changed

sqlalchemy_mptt/events.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,8 @@ def mptt_before_update(mapper, connection, instance):
223223

224224
# if instance just update w/o move
225225
if not left_sibling and str(node_parent_id) == str(instance.parent_id) and not mptt_move_inside:
226-
return
226+
if left_sibling_tree_id is None:
227+
return
227228

228229
# fix tree shorting
229230
if instance.parent_id and not node_parent_id and node_tree_id == instance.tree_id:

sqlalchemy_mptt/tests.py

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
"""
1212
import unittest
1313

14-
from sqlalchemy import Column, create_engine, Integer, Boolean
14+
from sqlalchemy import Boolean, Column, create_engine, Integer
1515
from sqlalchemy.ext.declarative import declarative_base
1616
from sqlalchemy.orm import sessionmaker
1717

@@ -1330,6 +1330,34 @@ def test_move_before(self):
13301330
(21, 17, 20, 3, 18, 2),
13311331
(22, 18, 19, 4, 21, 2)], self.result.all())
13321332

1333+
def test_move_one_tree_before_other_tree(self):
1334+
node = self.session.query(Tree).filter(Tree.id == 12).one()
1335+
node.move_before("1")
1336+
self.maxDiff = None
1337+
self.assertEqual([(1, 1, 22, 1, None, 2),
1338+
(2, 2, 5, 2, 1, 2),
1339+
(3, 3, 4, 3, 2, 2),
1340+
(4, 6, 11, 2, 1, 2),
1341+
(5, 7, 8, 3, 4, 2),
1342+
(6, 9, 10, 3, 4, 2),
1343+
(7, 12, 21, 2, 1, 2),
1344+
(8, 13, 16, 3, 7, 2),
1345+
(9, 14, 15, 4, 8, 2),
1346+
(10, 17, 20, 3, 7, 2),
1347+
(11, 18, 19, 4, 10, 2),
1348+
1349+
(12, 1, 22, 1, None, 1),
1350+
(13, 2, 5, 2, 12, 1),
1351+
(14, 3, 4, 3, 13, 1),
1352+
(15, 6, 11, 2, 12, 1),
1353+
(16, 7, 8, 3, 15, 1),
1354+
(17, 9, 10, 3, 15, 1),
1355+
(18, 12, 21, 2, 12, 1),
1356+
(19, 13, 16, 3, 18, 1),
1357+
(20, 14, 15, 4, 19, 1),
1358+
(21, 17, 20, 3, 18, 1),
1359+
(22, 18, 19, 4, 21, 1)], self.result.all())
1360+
13331361
def test_move_before_to_other_tree(self):
13341362
""" level Move 8 before 15
13351363
1 1(1)18

0 commit comments

Comments
 (0)