Skip to main content

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

This version

1.0

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bda.bfg.tile-1.0.tar.gz (5.0 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page