3838
3939Add mixin to model
4040
41- .. code-block :: python
41+ .. testsetup :: *
42+
43+ engine = create_engine("sqlite:///:memory: ")
44+ session = Session(engine)
45+
46+ .. testcode :: default,delete-node,update-node,move-inside,move-after,move-top
4247
4348 from sqlalchemy import Column, Integer, Boolean
4449 from sqlalchemy.ext.declarative import declarative_base
@@ -57,12 +62,40 @@ Add mixin to model
5762 def __repr__(self):
5863 return "<Node (%s)>" % self.id
5964
65+ .. testcode :: default,delete-node,update-node,move-inside,move-after,move-top
66+ :hide:
67+
68+ Base.metadata.create_all(engine)
69+ tree_manager.register_events(remove=True)
70+ instances = [
71+ Tree(id=1, parent_id=None),
72+ Tree(id=2, parent_id=1),
73+ Tree(id=3, parent_id=2),
74+ Tree(id=4, parent_id=1),
75+ Tree(id=5, parent_id=4),
76+ Tree(id=6, parent_id=4),
77+ Tree(id=7, parent_id=1),
78+ Tree(id=8, parent_id=7),
79+ Tree(id=9, parent_id=8),
80+ Tree(id=10, parent_id=7),
81+ Tree(id=11, parent_id=10)
82+ ]
83+ for instance in instances:
84+ instance.left = 0
85+ instance.right = 0
86+ instance.visible = True
87+ instance.tree_id = 1
88+ session.add_all(instances)
89+ session.flush()
90+ tree_manager.register_events()
91+ Tree.rebuild_tree(session, tree_id=1)
92+
6093Now you can add, move and delete obj!
6194
6295Insert node
6396-----------
6497
65- .. code-block :: python
98+ .. testcode ::
6699
67100 node = Tree(parent_id=6)
68101 session.add(node)
@@ -93,7 +126,7 @@ Insert node
93126Delete node
94127-----------
95128
96- .. code :: python
129+ .. testcode :: delete-node
97130
98131 node = session.query(Tree).filter(Tree.id == 4).one()
99132 session.delete(node)
@@ -123,7 +156,7 @@ Delete node
123156Update node
124157-----------
125158
126- .. code :: python
159+ .. testcode :: update-node
127160
128161 node = session.query(Tree).filter(Tree.id == 8).one()
129162 node.parent_id = 5
@@ -162,9 +195,36 @@ Move node (support multitree)
162195
163196 Nested sets multitree
164197
198+ .. testcode :: move-inside,move-top
199+ :hide:
200+
201+ tree_manager.register_events(remove=True)
202+ instances = [
203+ Tree(id=12, parent_id=None),
204+ Tree(id=13, parent_id=12),
205+ Tree(id=14, parent_id=13),
206+ Tree(id=15, parent_id=12),
207+ Tree(id=16, parent_id=15),
208+ Tree(id=17, parent_id=15),
209+ Tree(id=18, parent_id=12),
210+ Tree(id=19, parent_id=18),
211+ Tree(id=20, parent_id=19),
212+ Tree(id=21, parent_id=18),
213+ Tree(id=22, parent_id=21)
214+ ]
215+ for instance in instances:
216+ instance.left = 0
217+ instance.right = 0
218+ instance.visible = True
219+ instance.tree_id = 2
220+ session.add_all(instances)
221+ session.flush()
222+ tree_manager.register_events()
223+ Tree.rebuild_tree(session, tree_id=2)
224+
165225Move inside
166226
167- .. code :: python
227+ .. testcode :: move-inside
168228
169229 node = session.query(Tree).filter(Tree.id == 4).one()
170230 node.move_inside("15")
@@ -194,7 +254,7 @@ Move inside
194254
195255Move after
196256
197- .. code :: python
257+ .. testcode :: move-after
198258
199259 node = session.query(Tree).filter(Tree.id == 8).one()
200260 node.move_after("5")
@@ -223,7 +283,7 @@ Move after
223283
224284Move to top level
225285
226- .. code :: python
286+ .. testcode :: move-top
227287
228288 node = session.query(Tree).filter(Tree.id == 15).one()
229289 node.move_after("1")
0 commit comments