From d879e4a5605dbdf1285180c8f3726eed9692667a Mon Sep 17 00:00:00 2001 From: mdipierro Date: Sun, 20 Oct 2013 22:51:03 -0500 Subject: [PATCH] db().select().as_tree() --- VERSION | 2 +- gluon/dal.py | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 641044af..a3b6b5ae 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.7.4-stable+timestamp.2013.10.20.16.57.08 +Version 2.7.4-stable+timestamp.2013.10.20.22.50.07 diff --git a/gluon/dal.py b/gluon/dal.py index 22a2a80b..a5dcbabc 100644 --- a/gluon/dal.py +++ b/gluon/dal.py @@ -10651,6 +10651,20 @@ class Rows(object): else: return dict([(key(r),r) for r in rows]) + + def as_tree(self, parent_name='parent_id', children_name='children'): + roots = [] + drows = {} + for row in self: + drows[row.id] = row + row[children_name] = [] + parent = row[parent_name] + if parent is None: + roots.append(row) + else: + drows[parent][children_name].append(row) + return roots + def export_to_csv_file(self, ofile, null='', *args, **kwargs): """ export data to csv, the first line contains the column names