Handle web application parts as tiles.
Project description
A tile is a piece of web application, i.e. a form, a navigation, etc.
Splitting your application in such small and logic application parts makes it easy to re-use this application, simplifies application ajaxification and the use of same application parts in different manners.
Imports.:
>>> from bda.bfg.tile import Tile >>> from bda.bfg.tile import TileRenderer >>> from bda.bfg.tile import registerTile >>> from bda.bfg.tile import tile
We need some dummies as model and request.:
>>> class Model(object): pass >>> model = Model() >>> from repoze.bfg.request import DEFAULT_REQUEST_FACTORIES >>> request = DEFAULT_REQUEST_FACTORIES[None]['factory'](environ={})
The pure Tile itself. Normally you do not create this directly, this is done due registration, see below.:
>>> mytile = Tile('testdata/tile1.pt', None) >>> mytile(model, request) u'<span>Tile One</span>'
Register a tile using the prior template testtemplate. When no object is given, the default tile is instanciated as above.:
>>> registerTile('tileone', 'testdata/tile1.pt')
Render the already registered tile.:
>>> TileRenderer(model, request)('tileone') u'<span>Tile One</span>'
Now the decorator - level=1 is needed for the doctest only to reduce the module level.:
>>> @tile('tiletwo', 'testdata/tile2.pt', level=1) ... class Tile2(Tile): ... data = u'custom' >>> TileRenderer(model, request)('tiletwo') u'<span>Tile Two: <b><span>Tile One</span></b></span>'
You can define an attribute which is responsible to render the tile instead of defining a template. By default render is taken. With the keyword argument attribute you can point to a different attribute.:
>>> @tile('attrtile') ... class Tile2(Tile): ... def render(self): ... return u'<h1>Rendered via attribute call</h1>' >>> TileRenderer(model, request)('attrtile') u'<h1>Rendered via attribute call</h1>'>>> @tile('attrtile', attribute='foobar') ... class Tile2(Tile): ... def foobar(self): ... return u'<h1>Rendered via attribute foobar call</h1>' >>> TileRenderer(model, request)('attrtile') u'<h1>Rendered via attribute foobar call</h1>'
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.