zope.fanstatic 0.12
Fanstatic integration for Zope.
Zope integration for fanstatic
This package provides Zope integration for fanstatic. This means it's taking care of three things:
- provide access to the needed resources throughout the request/response cycle.
- provide the base URL for the resources to be rendered.
- clear the needed resources when an exception view is rendered.
This library fulfills these conditions for a Zope Toolkit/Grok setup.
We'll run through a few tests to demonstrate it. Note that the real code being tested is not in this document itself, but in the views described in ftesting.zcml.
We need to be in a request to make this work, so let's up a request to a page we have set up in ftesting.zcml that should cause the inclusion of a single resource in its header:
>>> from zope.app.wsgi.testlayer import Browser
>>> browser = Browser()
>>> browser.open('http://localhost/zope.fanstatic.test_single')
>>> print browser.contents
<html>
<head>
<script type="text/javascript" src="http://localhost/fanstatic/foo/a.js"></script>
<BLANKLINE>
</head>
<body>
<p>the widget HTML itself</p>
</body>
</html>
If a resource happens to need another resource, this resource is also automatically included:
>>> browser.open('http://localhost/zope.fanstatic.test_multiple')
>>> print browser.contents
<html>
<head>
<script type="text/javascript" src="http://localhost/fanstatic/foo/a.js"></script>
<script type="text/javascript" src="http://localhost/fanstatic/foo/b.js"></script>
<BLANKLINE>
</head>
<body>
<p>the widget HTML itself</p>
</body>
</html>
Let's force all javascript resources to be forced to be included at the bottom now, just before the </body> tag:
>>> browser.open('http://localhost/zope.fanstatic.test_bottom')
>>> print browser.contents
<html>
<head>
</head>
<body>
<p>the widget HTML itself</p>
<script type="text/javascript" src="http://localhost/fanstatic/foo/a.js"></script>
<script type="text/javascript" src="http://localhost/fanstatic/foo/b.js"></script></body>
</html>
In-template resources
zope.fanstatic provides support for rendering resource publisher aware URLs to in-template resources:
>>> browser.open('http://localhost/zope.fanstatic.test_inline_resource')
>>> print browser.contents
<html>
<head>
</head>
<body>
<img src="http://localhost/fanstatic/foo/evencaveman.jpg" />
<img src="http://localhost/fanstatic/foo/sub/evencaveman.jpg" />
</body>
</html>
Exception views
When an exception occurs in the rendering of a view, we don't want to have any needed resources intended for a view being also injected in the error view. The needed resources are cleared and if the exception view chooses to do so, it can need resources itself.
>>> browser.raiseHttpErrors = False
>>> browser.open('http://localhost/zope.fanstatic.test_error')
>>> import fanstatic
>>> fanstatic.get_needed().has_resources()
False
CHANGES
0.12 (2011-08-31)
- Similar to the fix in 0.11, make sure calling for the URL of a resource will not failed for a DummyNeededResources object which would badly hurt testability of function or "browser" tests of applications that depend on fanstatic/zope.fanstatic.
0.11 (2011-08-17)
- Fix bug where calling ensure_base_url() failed for DummyNeededResources objects. This was problematic when writing functional or "browser" tests of applications that depend on fanstatic/zope.fanstatic.
0.10 (2011-04-11)
- Update to fanstatic 0.11 API.
0.9.1 (2011-01-20)
- Do not clear resources on DummyNeededResources objects.
0.9 (2011-01-20)
- Integrate zope.errorview, subscribing to the HandleExceptionEvent. This will clear the needed resources thusfar required, to have a clean slate for the error view to be rendered.
0.9b (2011-01-06)
Zope.fanstatic version 0.9 is a fundamental rewrite of hurry.zoperesource, as a result of the rewrite of hurry.resource into fanstatic.
Here's a list of essential changes since version 0.7 of hurry.zoperesource:
- Compliance with the Fanstatic API.
- ++resource++foo/bar/baz.jpg expressions in Page Templates are still supported by way registering a traversable component for all available resource libraries. There are no zope.browserresource components involved anymore in zope.fanstatic.
Download
| File | Type | Py Version | Uploaded on | Size | # downloads |
|---|---|---|---|---|---|
| zope.fanstatic-0.12.tar.gz (md5) | Source | 2011-08-31 | 28KB | 465 | |
- Author: Zope Foundation and Contributors
- Home Page: http://pypi.python.org/pypi/zope.fanstatic
- License: ZPL 2.1
- Categories
- Package Index Owner: jw, janjaapdriessen, faassen
- DOAP record: zope.fanstatic-0.12.xml
