Chris, you manage to package this a little better please let me know.
You could write an alterego entry about it or just post the code
somewhere.

Massimo

On Feb 13, 10:24 am, mdipierro <[email protected]> wrote:
> Hi Chris,
>
> no. But it is trivial with web2py.
>
> Here I implemented the example 
> inhttp://www.sitepoint.com/print/hierarchical-data-database/
>
> db=SQLDB('sqlite://tree.db')
> db.define_table('tree',db.Field('title'),db.Field
> ('left','integer'),db.Field('right','integer'))
> db.tree.insert(title='Food',left=1,right=2)
>
> def add_node(title,parent_title):
>
> """
>     add_node
> ('Fruit','Food')
>     add_node
> ('Meat','Food')
>     add_node
> ('Red','Fruit')
>     """
>     parent=db(db.tree.title==parent_title).select()[0]
>     db(db.tree.right>=parent.right).update(right=db.tree.right+2)
>     db(db.tree.left>=parent.right).update(left=db.tree.left+2)
>     db.tree.insert(title=title,left=parent.right,right=parent.right+1)
>
> def ancestors(title,*fields):
>     """ print ancestors('Red',db.tree.title)"""
>     node=db(db.tree.title==title).select()[0]
>     return db(db.tree.left<node.left)(db.tree.right>node.right).select
> (orderby=db.tree.left,*fields)
>
> def descendants(title,*fields):
>     """ print ancestors('Fruit',db.tree.title)"""
>     node=db(db.tree.title==title).select()[0]
>     return db(db.tree.left>node.left)(db.tree.right<node.right).select
> (orderby=db.tree.left,*fields)
>
> def test():
>     print db().select(db.tree.ALL)
>     add_node('Fruit','Food')
>     print db().select(db.tree.ALL)
>     add_node('Meat','Food')
>     print db().select(db.tree.ALL)
>     add_node('Red','Fruit')
>     print db().select(db.tree.ALL)
>     print ancestors('Red',db.tree.title)
>     print descendants('Fruit',db.tree.title)
>
> test()
>
> OUTPUT:
> tree.id,tree.title,tree.left,tree.right
> 1,Food,1,2
>
> tree.id,tree.title,tree.left,tree.right
> 1,Food,1,4
> 2,Fruit,2,3
>
> tree.id,tree.title,tree.left,tree.right
> 1,Food,1,6
> 2,Fruit,2,3
> 3,Meat,4,5
>
> tree.id,tree.title,tree.left,tree.right
> 1,Food,1,8
> 2,Fruit,2,5
> 3,Meat,6,7
> 4,Red,3,4
>
> tree.title
> Food
> Fruit
>
> tree.title
> Red
>
> On Feb 13, 2:31 am, sociotech <[email protected]> wrote:
>
> > Just wondering if anyone has implemented modified preorder tree
> > traversal (MPTT) functions for Web2Py yet. MPTT is an efficient
> > approach to organizing hierarchically-related records (e.g., nested
> > menus, parent/child relationships, etc.) in a database.
>
> > I was hoping someone here might've already implemented it (there is an
> > implementation for Django and more general information 
> > here:http://code.google.com/p/django-mptt/), but I haven't found anything
> > yet.
>
> > Thanks very much,
>
> > Chris
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web2py Web Framework" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to