Home Company Services Portfolio Contact us nav spacer

Progress bar for Plone

by Roché Compaan posted on Sep 18, 2009 09:45 PM last modified Sep 28, 2009 03:16 PM —

Don't let long running jobs time out, just wire in collective.progressbar.

If you have a big import job on the server and don't want to tell your customer to ignore the browser timeout and just reload later to see if it completed, just install collective.progressbar. It's basic but it doesn't time out :-)

This product provides a basic html and javascript progress bar for Plone that is useful for long running server side processes like imports or exports.

To use it, you simply have to fire two events. The first event initialises the progress bar view:

from collective.progressbar.events import InitialiseProgressBar
from collective.progressbar.events import ProgressBar
title = 'Importing file'
bar = ProgressBar(self.context, self.request, title)
notify(InitialiseProgressBar(bar))

The ProgressBar class above can take an optional view parameter if you want to customise the view that renders the progress bar further. You only have to include the progressbar macro in your custom view.

To update progress, you simply have to fire the appropriate event:

from collective.progressbar.events import UpdateProgressEvent
from collective.progressbar.events import ProgressState
for index in range(101):
progress = ProgressState(self.request, index) notify(UpdateProgressEvent(progress))

To see how the progress bar works, install the package and browse to the demo view eg.: http://localhost:8080/plone/@@collective.progressbar-demo

It's available as an egg on PYPI (http://pypi.python.org/pypi/collective.progressbar/0.5) or you can check it out from the collective (http://svn.plone.org/svn/collective/collective.progressbar/).