File tree Expand file tree Collapse file tree 6 files changed +97
-54
lines changed Expand file tree Collapse file tree 6 files changed +97
-54
lines changed Original file line number Diff line number Diff line change 1+ 0.1.9 (2015-09-24)
2+ ==================
3+
4+ - add option ``remove `` to ``sqlalchemy.events.TreesManager.register_mapper ``
5+
160.1.8 (2015-09-14)
27==================
38
@@ -29,52 +34,3 @@ Bug Fixes
2934---------
3035
3136- fix ``_get_tree_table `` function for inheritance models
32-
33- 0.1.3 (2015-06-17)
34- ==================
35-
36- - Add test for swap trees
37- - rename ``get_pk `` method to ``get_pk_name ``
38- - rename ``get_db_pk `` method to ``get_pk_column ``
39- - rename ``get_class_pk `` method to ``get_pk_with_class_name ``
40-
41- Bug Fixes
42- ---------
43-
44- - Fix order of elements in tree
45-
46- 0.1.2 (2015-04-22)
47- ==================
48-
49- Bug Fixes
50- ---------
51-
52- - Fix MANIFEST.in file
53-
54- Deprecation
55- -----------
56-
57- - Delete ``BaseNestedSets.register_tree `` method
58- - Delete ``BaseNestedSets.get_tree_recursively `` method
59-
60- 0.1.1 (2015-04-21)
61- ==================
62-
63- Features
64- --------
65-
66- - Add test for rst docs and migrate on new itcase_sphinx_theme (#40)
67-
68- Bug Fixes
69- ---------
70-
71- - Remove recursion from BaseNestedSets.get_tree method (#39)
72-
73- 0.1.0 (2014-11-18)
74- ==================
75-
76- Bug Fixes
77- ---------
78-
79- - Fix concurrency issue with multiple session (#36)
80- - Flushing the session now expire the instance and it's children (#33)
Original file line number Diff line number Diff line change 1+ 0.1.3 (2015-06-17)
2+ ==================
3+
4+ - Add test for swap trees
5+ - rename ``get_pk `` method to ``get_pk_name ``
6+ - rename ``get_db_pk `` method to ``get_pk_column ``
7+ - rename ``get_class_pk `` method to ``get_pk_with_class_name ``
8+
9+ Bug Fixes
10+ ---------
11+
12+ - Fix order of elements in tree
13+
14+ 0.1.2 (2015-04-22)
15+ ==================
16+
17+ Bug Fixes
18+ ---------
19+
20+ - Fix MANIFEST.in file
21+
22+ Deprecation
23+ -----------
24+
25+ - Delete ``BaseNestedSets.register_tree `` method
26+ - Delete ``BaseNestedSets.get_tree_recursively `` method
27+
28+ 0.1.1 (2015-04-21)
29+ ==================
30+
31+ Features
32+ --------
33+
34+ - Add test for rst docs and migrate on new itcase_sphinx_theme (#40)
35+
36+ Bug Fixes
37+ ---------
38+
39+ - Remove recursion from BaseNestedSets.get_tree method (#39)
40+
41+ 0.1.0 (2014-11-18)
42+ ==================
43+
44+ Bug Fixes
45+ ---------
46+
47+ - Fix concurrency issue with multiple session (#36)
48+ - Flushing the session now expire the instance and it's children (#33)
49+
1500.0.9 (2014-10-09)
251==================
352
Original file line number Diff line number Diff line change 11Example
22-------
33
4- Create model with MPTT mixin and register events
4+ Initalize
5+ ~~~~~~~~~
6+
7+ Create model with MPTT mixin and register events.
58
69.. code-block :: python
710 :linenos:
@@ -23,6 +26,38 @@ Create model with MPTT mixin and register events
2326 def __repr__ (self ):
2427 return " <Node (%s )>" % self .id
2528
29+ Events
30+ ~~~~~~
31+
32+ Events registered automatically, but you can do it manually:
33+
34+ .. code-block :: python
35+
36+ from sqlalchemy.orm import mapper
37+
38+ from .events import TreesManager
39+ from .mixins import BaseNestedSets
40+
41+ tree_manager = TreesManager(BaseNestedSets)
42+ tree_manager.register_mapper(mapper) # register events before_insert,
43+ # before_update and before_delete
44+
45+ Or remove events if it required:
46+
47+ .. code-block :: python
48+
49+ from sqlalchemy.orm import mapper
50+
51+ from .events import TreesManager
52+ from .mixins import BaseNestedSets
53+
54+ tree_manager = TreesManager(BaseNestedSets)
55+ tree_manager.register_mapper(mapper, # remove events before_insert,
56+ remove = True ) # before_update and before_delete
57+
58+ Data structure
59+ ~~~~~~~~~~~~~~
60+
2661Fill table with records, for example, as shown in the picture
2762
2863.. image :: img/2_sqlalchemy_mptt_traversal.svg
Original file line number Diff line number Diff line change @@ -10,7 +10,7 @@ def read(name):
1010
1111setup (
1212 name = 'sqlalchemy_mptt' ,
13- version = '0.1.8 ' ,
13+ version = '0.1.9 ' ,
1414 url = 'http://github.com/ITCase/sqlalchemy_mptt/' ,
1515 author = 'Svintsov Dmitry' ,
1616 author_email = 'sacrud@uralbash.ru' ,
Original file line number Diff line number Diff line change @@ -354,13 +354,16 @@ def __init__(self, base_class):
354354 self .classes = set ()
355355 self .instances = _WeakDefaultDict ()
356356
357- def register_mapper (self , mapper ):
357+ def register_mapper (self , mapper , remove = False ):
358358 for e , h in (
359359 ('before_insert' , self .before_insert ),
360360 ('before_update' , self .before_update ),
361361 ('before_delete' , self .before_delete ),
362362 ):
363- event .listen (self .base_class , e , h , propagate = True )
363+ if remove :
364+ event .remove (self .base_class , e , h )
365+ else :
366+ event .listen (self .base_class , e , h , propagate = True )
364367 return self
365368
366369 def register_factory (self , sessionmaker ):
Original file line number Diff line number Diff line change @@ -84,7 +84,7 @@ def parent(self):
8484 foreign_keys = [self .parent_id ],
8585 remote_side = '{}.{}' .format (self .__name__ , self .get_pk_name ()),
8686 backref = backref ('children' , cascade = "all,delete" ,
87- order_by = lambda : self .left ),
87+ order_by = lambda : ( self .tree_id , self . left ) ),
8888 )
8989
9090 @declared_attr
You can’t perform that action at this time.
0 commit comments