Book Image

web2py Application Development Cookbook

By : Mariano Reingart, Bruno Cezar Rocha, Jonathan Lundell, Pablo Martin Mulone, Michele Comitini, Richard Gordon, Massimo Di Pierro
Book Image

web2py Application Development Cookbook

By: Mariano Reingart, Bruno Cezar Rocha, Jonathan Lundell, Pablo Martin Mulone, Michele Comitini, Richard Gordon, Massimo Di Pierro

Overview of this book

<p><undefined:p>web2py is a free open source full-stack framework for rapid development of fast, scalable, secure and portable database-driven web-based applications. It is written and programmable in Python, and straightforward to run. web2py implements Model-View-Controller design, server-side form validation, and postbacks that make the code more readable, scalable, and maintainable. Are you familiar with web2py, and interested in gaining more advanced knowledge?<undefined:br><undefined:br><undefined:i>web2py Application Development Cookbook</undefined:i> gives you the necessary knowledge to make you a web2py expert. Right from teaching you about the database abstraction layer to adding AJAX effects to recipes about recipe, the book will make you a master of web2py through advanced practical recipes without any drudgery or straining the brain.<undefined:br><undefined:br><undefined:i>web2py Application Development Cookbook</undefined:i> is the tool you will need to expand and enhance your web2py skills.<undefined:br><undefined:br>This book begins with teaching you running web2py in various different systems followed by building simple applications. It focuses on database abstraction layer next and then explains building advanced forms. Adding stunning AJAX effects, using third party libraries and recipes on web services follow. Advanced recipes on authentication and authorization are taught and then routing and reporting recipes claim your attention. There is a final wrap-up with useful, interesting tips and tricks which you will really enjoy.<undefined:br><undefined:br>In short, this book will make you an expert in web2py in a trouble-free, quick, and easy manner.</undefined:br></undefined:br></undefined:br></undefined:br></undefined:br></undefined:br></undefined:br></undefined:br></undefined:p></p>
Table of Contents (18 chapters)
web2py Application Development Cookbook
Credits
About the Authors and Reviewers
About the Reviewer
www.PacktPub.com
Preface
Index

Hierarchical category tree


Sooner or later, any application needs a way to categorize data, and categories must be stored in a tree, because each category has a parent and possibly subcategories. A category without a subcategory is a leaf of the tree. If there are categories without a parent, we create a fictitious root tree node, and append all of them as subcategories of the root.

The main issue is how to store categories with parent-child relations in a database table, and efficiently add nodes and queries for ancestors and descendants of a node.

This can be done using a modified pre-order tree traversal algorithm, described as follows.

How to do it...

The key trick consists of storing each node in its own record with two integer attributes, left and right, so that all its ancestors have a left attribute lower than or equal to the left attribute of the current node, and a right attribute larger than the one of the current node. Similarly, all descendants will have a left larger or equal than...