Skip to content

Commit

Permalink
++version (0.1.9)
Browse files Browse the repository at this point in the history
  • Loading branch information
uralbash committed Sep 24, 2015
1 parent 2b76ff3 commit 5c936ee
Show file tree
Hide file tree
Showing 6 changed files with 97 additions and 54 deletions.
54 changes: 5 additions & 49 deletions CHANGES.rst
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
0.1.9 (2015-09-24)
==================

- add option ``remove`` to ``sqlalchemy.events.TreesManager.register_mapper``

0.1.8 (2015-09-14)
==================

Expand Down Expand Up @@ -29,52 +34,3 @@ Bug Fixes
---------

- fix ``_get_tree_table`` function for inheritance models

0.1.3 (2015-06-17)
==================

- Add test for swap trees
- rename ``get_pk`` method to ``get_pk_name``
- rename ``get_db_pk`` method to ``get_pk_column``
- rename ``get_class_pk`` method to ``get_pk_with_class_name``

Bug Fixes
---------

- Fix order of elements in tree

0.1.2 (2015-04-22)
==================

Bug Fixes
---------

- Fix MANIFEST.in file

Deprecation
-----------

- Delete ``BaseNestedSets.register_tree`` method
- Delete ``BaseNestedSets.get_tree_recursively`` method

0.1.1 (2015-04-21)
==================

Features
--------

- Add test for rst docs and migrate on new itcase_sphinx_theme (#40)

Bug Fixes
---------

- Remove recursion from BaseNestedSets.get_tree method (#39)

0.1.0 (2014-11-18)
==================

Bug Fixes
---------

- Fix concurrency issue with multiple session (#36)
- Flushing the session now expire the instance and it's children (#33)
49 changes: 49 additions & 0 deletions CHANGES_OLD.rst
Original file line number Diff line number Diff line change
@@ -1,3 +1,52 @@
0.1.3 (2015-06-17)
==================

- Add test for swap trees
- rename ``get_pk`` method to ``get_pk_name``
- rename ``get_db_pk`` method to ``get_pk_column``
- rename ``get_class_pk`` method to ``get_pk_with_class_name``

Bug Fixes
---------

- Fix order of elements in tree

0.1.2 (2015-04-22)
==================

Bug Fixes
---------

- Fix MANIFEST.in file

Deprecation
-----------

- Delete ``BaseNestedSets.register_tree`` method
- Delete ``BaseNestedSets.get_tree_recursively`` method

0.1.1 (2015-04-21)
==================

Features
--------

- Add test for rst docs and migrate on new itcase_sphinx_theme (#40)

Bug Fixes
---------

- Remove recursion from BaseNestedSets.get_tree method (#39)

0.1.0 (2014-11-18)
==================

Bug Fixes
---------

- Fix concurrency issue with multiple session (#36)
- Flushing the session now expire the instance and it's children (#33)

0.0.9 (2014-10-09)
==================

Expand Down
37 changes: 36 additions & 1 deletion docs/example.rst
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
Example
-------

Create model with MPTT mixin and register events
Initalize
~~~~~~~~~

Create model with MPTT mixin and register events.

.. code-block:: python
:linenos:
Expand All @@ -23,6 +26,38 @@ Create model with MPTT mixin and register events
def __repr__(self):
return "<Node (%s)>" % self.id
Events
~~~~~~

Events registered automatically, but you can do it manually:

.. code-block:: python
from sqlalchemy.orm import mapper
from .events import TreesManager
from .mixins import BaseNestedSets
tree_manager = TreesManager(BaseNestedSets)
tree_manager.register_mapper(mapper) # register events before_insert,
# before_update and before_delete
Or remove events if it required:

.. code-block:: python
from sqlalchemy.orm import mapper
from .events import TreesManager
from .mixins import BaseNestedSets
tree_manager = TreesManager(BaseNestedSets)
tree_manager.register_mapper(mapper, # remove events before_insert,
remove=True) # before_update and before_delete
Data structure
~~~~~~~~~~~~~~

Fill table with records, for example, as shown in the picture

.. image:: img/2_sqlalchemy_mptt_traversal.svg
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ def read(name):

setup(
name='sqlalchemy_mptt',
version='0.1.8',
version='0.1.9',
url='http://github.com/ITCase/sqlalchemy_mptt/',
author='Svintsov Dmitry',
author_email='sacrud@uralbash.ru',
Expand Down
7 changes: 5 additions & 2 deletions sqlalchemy_mptt/events.py
Original file line number Diff line number Diff line change
Expand Up @@ -354,13 +354,16 @@ def __init__(self, base_class):
self.classes = set()
self.instances = _WeakDefaultDict()

def register_mapper(self, mapper):
def register_mapper(self, mapper, remove=False):
for e, h in (
('before_insert', self.before_insert),
('before_update', self.before_update),
('before_delete', self.before_delete),
):
event.listen(self.base_class, e, h, propagate=True)
if remove:
event.remove(self.base_class, e, h)
else:
event.listen(self.base_class, e, h, propagate=True)
return self

def register_factory(self, sessionmaker):
Expand Down
2 changes: 1 addition & 1 deletion sqlalchemy_mptt/mixins.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ def parent(self):
foreign_keys=[self.parent_id],
remote_side='{}.{}'.format(self.__name__, self.get_pk_name()),
backref=backref('children', cascade="all,delete",
order_by=lambda: self.left),
order_by=lambda: (self.tree_id, self.left)),
)

@declared_attr
Expand Down

0 comments on commit 5c936ee

Please sign in to comment.