[ckan-dev] Hierarchical folder structure for a dataset

Damian Steer d.steer at bris.ac.uk
Tue Aug 15 14:34:55 UTC 2017

On 15/08/17 00:19, Prashant Gupta wrote:
> Hi Damian
> Thanks for sharing this info.
> I would be interested to know if the code for this customization, especially code for displaying the folder structure as tree, is publicly available.

You can see the relevant code here:


Sorry, it's grown organically :-/

Explanation: this adds two helper functions

DataBrisUI_get_datatree(pkg) - get_package_tree(pkg)
DataBrisUI_top_package(pkg.id) - get_top_level_package(id)

(I don't know why we pass the pkg in the first case and the id in the 
latter :-)

The latter will return the top level package holding the given package, 
which we use for linking back to the top. In that function you'll see we 
stash the result in a special database table, to avoid calculating it 
each time.

The former is what you're interested in.

Once again we stash the result (the actual, dodgy html) in a database 
table to speed things up.

The main thing of interest here is get_child_packages(id). We use 
package_search to find the children:

     p.toolkit.get_action('package_search')(data_dict={'fq': 'child_of:' 
+ id, 'rows': 1000})['results']

The reason for that is that we found the standard api call very slow (at 
the time). This solr search was much quick, and returned everything we 


Damian Steer
Senior Technical Researcher
Research IT
+44 (0) 117 39 41724

More information about the ckan-dev mailing list