Skip to content

Commit 5c936ee

Browse files
committed
++version (0.1.9)
1 parent 2b76ff3 commit 5c936ee

File tree

6 files changed

+97
-54
lines changed

6 files changed

+97
-54
lines changed

CHANGES.rst

Lines changed: 5 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
0.1.9 (2015-09-24)
2+
==================
3+
4+
- add option ``remove`` to ``sqlalchemy.events.TreesManager.register_mapper``
5+
16
0.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)

CHANGES_OLD.rst

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,52 @@
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+
150
0.0.9 (2014-10-09)
251
==================
352

docs/example.rst

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
Example
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+
2661
Fill table with records, for example, as shown in the picture
2762

2863
.. image:: img/2_sqlalchemy_mptt_traversal.svg

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ def read(name):
1010

1111
setup(
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='[email protected]',

sqlalchemy_mptt/events.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff 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):

sqlalchemy_mptt/mixins.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff 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

0 commit comments

Comments
 (0)