skip to navigation
skip to content

hexagonit.decorators 0.2

Collection of useful decorators for Zope development

Downloads ↓

The package contains function decorators that help implementing repetitive tasks. It is mostly oriented towards Zope development.

Change History

0.2 (2007-09-05)

  • Fixed problem with methods not being passed parameters from the query string. When a view method was called directly using an URL the parameters from the query string were lost when a view method was decorated. The decorators now push back the query parameters into the method call.

0.1 (2007-08-31)

  • First public release.

Detailed Documentation

browser module

This module provides decorators that are useful with Zope 3 browser views (also usable in Zope 2).

JSON decorator

The JSON decorator uses simplejson to encode the return value of the decorated function as JSON.

>>> from hexagonit.decorators.browser import json
>>> @json
... def json_callback():
...     """JSON callback method."""
...     return {'bool' : (True, False) }
>>> json_callback()
'{"bool": [true, false]}'

Any keyword arguments passed to the decorator will be passed on to the simplejson.dumps function.

>>> @json(sort_keys=True, ensure_ascii=False)
... def json_callback():
...     """JSON callback method."""
...     return {'foo' : None, 'bool' : (True, False), 'ints' : [1,2,3]}
>>> json_callback()
u'{"bool": [true, false], "foo": null, "ints": [1, 2, 3]}'

HTTP cache disabling decorator

The nocache decorator is used for Zope 3 views and sets the appropriate HTTP headers to disable caching for the results of the decorated method.

>>> from hexagonit.decorators.browser import nocache

We'll demonstrate the use of the decorator with a dummy view object.

>>> class Dummy(object):pass
>>> class BrowserView(object):
...     """Dummy view class that fakes the ``request`` object."""
...     def __init__(self):
...         self.request = Dummy()
...         self.request.response = Dummy()
...         self.headers = []
...         self.request.response.setHeader = lambda header,value: self.headers.append('%s: %s' % (header, value))
...
...     @nocache
...     def ajax_callback(self):
...         print '\n'.join(self.headers)
>>> view = BrowserView()
>>> view.ajax_callback()
Pragma: no-cache
Expires: Sat, 1 Jan 2000 00:00:00 GMT
Cache-Control: no-cache, must-revalidate

It is also possible to use both the json decorator and the nocache decorator at the same time.

 
File Type Py Version Uploaded on Size # downloads
hexagonit.decorators-0.2-py2.4.egg (md5) Python Egg 2.4 2007-09-05 8KB 940
hexagonit.decorators-0.2.tar.gz (md5) Source 2007-09-05 4KB 621