i found on internet something like :
models/db.py
from gluon.dal import Table

class TreeProxy(object):
skeleton = Table(None, 'tree',
 Field('ileft', 'integer'),
 Field('iright', 'integer'))

def __init__(self, table):
self.table = table

def ancestors(self, node):
db = self.table._db
return db(self.table.ileft <= node.ileft)(self.table.iright > node.iright)

def descendants(self, node):
db = self.table._db
return db(self.table.ileft >= node.ileft)(self.table.iright < node.iright)

def add_leaf(self, parent_id = None, **fields):
if not parent_id:
nrecords = self.table._db(self.table).count()
fields.update(dict(ileft = nrecords, iright = nrecords))
else:
node = self.table(parent_id)
fields.update(dict(ileft = node.iright, iright = node.iright))
node.update_record(iright = node.iright + 1)
ancestors = self.ancestors(node).select()
for ancestor in ancestors:
ancestor.update_record(iright = ancestor.iright + 1)
ancestors = self.ancestors(node).select()
for ancestor in ancestors:
ancestor.update_record(iright = ancestor.iright + 1)
return self.table.insert(**fields)

def del_node(self, node):
delta = node.iright - node.ileft
deleted = self.descendants(node).delete()
db = self.table._db
db(self.table.iright > node.iright).update(iright = self.table.iright - 
delta)
del self.table[node.id]
return deleted + 1

treeproxy = TreeProxy(db.define_table('mytree', Field('name'), 
TreeProxy.skeleton))

if db(db.mytree).isempty():
id = treeproxy.add_leaf(name = "root")
treeproxy.add_leaf(parent_id = id, name = "child1")
treeproxy.add_leaf(parent_id = id, name = "child2")

for node in treeproxy.ancestors(db.mytree(id)).select():
print node.name
for node in treeproxy.descendants(db.mytree(id)).select():
print node.name

treeproxy.del_node(db.mytree(id))

but it return an error :

AttributeError: 'NoneType' object has no attribute 'iright'


how should i use it on?

ref:
http://www.packtpub.com/sites/default/files/5467OS-Chapter-3-Database-Abstraction-Layer.pdf

thanks and best regards,
stifan

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to