Skip to content

Commit

Permalink
fix order for path_to_root close #46
Browse files Browse the repository at this point in the history
  • Loading branch information
uralbash committed Aug 18, 2015
1 parent 77ea2d8 commit d3d22d3
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 9 deletions.
14 changes: 8 additions & 6 deletions sqlalchemy_mptt/mixins.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@
"""
SQLAlchemy nested sets mixin
"""
from sqlalchemy import Column, ForeignKey, Index, Integer
from sqlalchemy.ext.declarative import declared_attr
from sqlalchemy.orm import backref, object_session, relationship
from sqlalchemy import Index, Column, Integer, ForeignKey, desc, asc
from sqlalchemy.orm import backref, relationship, object_session
from sqlalchemy.orm.session import Session
from sqlalchemy.ext.declarative import declared_attr

from .events import _get_tree_table

Expand Down Expand Up @@ -177,8 +177,10 @@ def _base_query(cls, session=None):
return session.query(cls)

@classmethod
def _base_order(cls, query):
return query.order_by(cls.tree_id, cls.level, cls.left)
def _base_order(cls, query, order=asc):
return query.order_by(order(cls.tree_id))\
.order_by(order(cls.level))\
.order_by(order(cls.left))

@classmethod
def get_tree(cls, session=None, json=False, json_fields=None, query=None):
Expand Down Expand Up @@ -305,7 +307,7 @@ def path_to_root(self, session=None):
query = query.filter(table.tree_id == self.tree_id)\
.filter(table.left <= self.left)\
.filter(table.right >= self.right)
return table._base_order(query)
return self._base_order(query, order=desc)

@classmethod
def rebuild_tree(cls, session, tree_id):
Expand Down
6 changes: 3 additions & 3 deletions sqlalchemy_mptt/tests/cases/get_tree.py
Original file line number Diff line number Diff line change
Expand Up @@ -313,7 +313,7 @@ def go(id):
path_8_to_root = node8.path_to_root(self.session).all()
path_6_to_root = node6.path_to_root(self.session).all()
path_1_to_root = node1.path_to_root(self.session).all()
self.assertEqual(path_11_to_root, [go(1), go(7), go(10), go(11)])
self.assertEqual(path_8_to_root, [go(1), go(7), go(8)])
self.assertEqual(path_6_to_root, [go(1), go(4), go(6)])
self.assertEqual(path_11_to_root, [go(11), go(10), go(7), go(1)])
self.assertEqual(path_8_to_root, [go(8), go(7), go(1)])
self.assertEqual(path_6_to_root, [go(6), go(4), go(1)])
self.assertEqual(path_1_to_root, [go(1)])

0 comments on commit d3d22d3

Please sign in to comment.