This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (pypi.python.org).
Help us improve Python packaging - Donate today!

View and viewlet helper modules for Plone theme and five.grok developers

Project Description

Introduction

collective.fastview provides framework level helper code for Plone view and template management. It is intended to be used to give some workarounds some rough corners on these Zope 3 and five.grok viewlewt frameworks.

Installation

Add collective.fastview to buildout.cfg eggs list:

eggs =
        ...
        collective.fastview

Render viewlets directly anywhere in the template

You can directly put in viewlet call to any page template code using a viewlet traverser. collective.fastview registers a view with name @@viewlets which you can use to traverse to render any viewlet code:

<div id="header">
    <div tal:replace="structure context/@@viewlets/plone.logo" />
</div>

Note that you still need to register viewlets against some (any) viewlet manager, but it can be a dummy one, which is never rendered using syntax:

<div tal:replace="structure provider:myarghyetanotherviewletmanagername" />

Example of dummy viewlet manager:

class MainViewletManager(grok.ViewletManager):
    """ This viewlet manager is responsible for all gomobiletheme.basic viewlet registrations.

    Viewlets are directly referred in main_template.pt by viewlet name,
    thus overriding Plone behavior to go through ViewletManager render step.
    """
    grok.name('gomobiletheme.basic.viewletmanager')

# Set viewlet manager default to all following viewlets
grok.viewletmanager(MainViewletManager)

Fix Grok 1.0 template inheritance

This fixes grok 1.0 problem that view and viewlets template are not inheritable between packages. E.g. if you subclass a view you need to manually copy over the view template also.

We hope to get rid of this in the future.

See:

Example:

from collective.fastview.utilities import fix_grok_template_inheritance
from gomobiletheme.basic import viewlets as base
from gomobiletheme.basic.viewlets import MainViewletManager
from plonecommunity.app.interfaces import IThemeLayer

# Viewlets are on all content by default.
grok.context(Interface)

# Use templates directory to search for templates.
grok.templatedir("templates")

# Viewlets are active only when gomobiletheme.basic theme layer is activated
grok.layer(IThemeLayer)

grok.viewletmanager(MainViewletManager)

class Head(base.Head):
    """
    My inherited viewlet.
    """


# Fix for grok 1.0 template inheritance
# https://bugs.launchpad.net/grok/+bug/255005
# This will force Head viewlet to use its parent class template
fix_grok_template_inheritance(Head, base.Head)

Examples

This code is mainly used with gomobiletheme.basic package to provide simple mobile themes without need to construct viewlet manager around every viewlet.

These Python packages use this code

0.2.1 - 0.2.2

  • Fixed debug statement left in the code [miohtama]

0.2 - 0.2.1

  • Try to be smarter handling the cases where viewlet raises an exception on update() or render() [miohtama]
  • Cleaned up some docs [miohtama]

0.1 - 0.2

  • Plone 4 compatibility
  • Removed global defines special handlers - they were used for Plone 3, but Plone 4 is now out solving the problem itself
  • Added special exception type for the cases viewlet is not found by name. It was bad idea to return NotFound as Zope has special meaning for this exception (you get 404).

0.1

  • Initial release
Release History

Release History

This version
History Node

0.2.2

History Node

0.2.1

History Node

0.2

History Node

0.1

Download Files

Download Files

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

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
collective.fastview-0.2.2.zip (22.9 kB) Copy SHA256 Checksum SHA256 Source Nov 4, 2010

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting