Tabularized Output¶
Users familiar with MySQL, PGSQL, etc find comfort in table-based output patterns. For one it adds structure, and two generally makes things much more readable. The folloiwing is an example of a simple app using the Tabulate extension:
from cement.core.foundation import CementApp
from cement.core.controller import expose, CementBaseController
class MyController(CementBaseController):
class Meta:
label = 'base'
@expose(hide=True)
def default(self):
headers=['NAME', 'AGE', 'ADDRESS']
data=[
["Krystin Bartoletti", 47, "PSC 7591, Box 425, APO AP 68379"],
["Cris Hegan", 54, "322 Reubin Islands, Leylabury, NC 34388"],
["George Champlin", 25, "Unit 6559, Box 124, DPO AA 25518"],
]
self.app.render(data, headers=headers)
class MyApp(CementApp):
class Meta:
label = 'myapp'
extensions = ['tabulate']
output_handler = 'tabulate'
handlers = [MyController]
with MyApp() as app:
app.run()
The output looks like:
$ python myapp.py
| NAME | AGE | ADDRESS |
|--------------------+-------+-----------------------------------------|
| Krystin Bartoletti | 47 | PSC 7591, Box 425, APO AP 68379 |
| Cris Hegan | 54 | 322 Reubin Islands, Leylabury, NC 34388 |
| George Champlin | 25 | Unit 6559, Box 124, DPO AA 25518 |