Skip to main content

A content type, workflow, and portlet for conducting online polls, for anonymous and logged-in users.

Project description

<nav class="contents" id="table-of-contents" role="doc-toc">

Table of Contents


Life, the Universe, and Everything

A content type, workflow and portlet for conducting online polls, for anonymous and logged-in users.

Mostly Harmless

Travis CI badge Coveralls badge Downloads

Got an idea? Found a bug? Let us know by opening a support ticket.

Don’t Panic


To enable this product in a buildout-based installation:

  1. Edit your buildout.cfg and add collective.polls to the list of eggs to install:

    eggs =
  2. If you are using Plone 4.2 you need to add the following also:

    collective.js.jqueryui =

After updating the configuration you need to run ‘’bin/buildout’’, which will take care of updating your system.

Go to the ‘Site Setup’ page in a Plone site and click on the ‘Add-ons’ link.

Check the box next to ‘’collective.polls’’ and click the ‘Activate’ button.


  • Polls can be opened for anonymous users to vote

  • If an open poll is allowed for anonymous but is inside a private folder, nobody can vote. Therefore the poll’s parent folder needs to be published before opening the poll in order for this field to take effect

  • Voting can take place either in the object or in a voting portlet;

  • The voting portlet can show the latest open poll or ab specific open poll and closed polls

  • Users can see partial results of the poll

  • Results can be shown using a bar chart, a pie chart, or just by number of votes

  • Polls can have relations with other content in the site

Workflow description

The workflow associated with polls has the following states: ‘Private’, ‘Pending review’, ‘Open’ and ‘Closed’.

  • Polls are created in ‘Private’ state; only Owner, Manager, Editor or Site Administrator roles can modify them.

  • When a poll is in ‘Private’ state it can be sent to ‘Pending review’ or directly to ‘Open’ state, if the user has the proper role (Reviewer, Manager or Site Administrator).

  • When a poll is in ‘Pending review’ state it can be edited by Manager, Editor, Reviewer or Site Administrator roles.

  • A poll in ‘Pending review’ state can be sent to ‘Open’ state, with “Review portal content” permission, or to Private, with “Request review” permission.

  • When the poll is ‘Open’ users can only vote; nobody can modify the poll in any way.

  • An ‘Open’ poll can be sent to ‘Private’ or ‘Closed’ state by Reviewer, Manager or Site Administrator roles.

  • When an ‘Open’ poll is sent to ‘Private’, all votes are removed to avoid data manipulation.

  • When a poll is in ‘Closed’ state nobody can modify it, nor can anyone vote on it; a closed poll can always be reopened by usera with proper permissions.

Not entirely unlike

Plone PoPoll

A very old an unmaintained product, PoPoll includes a poll tool that allows member or anonymous to vote for one or more answers. A portlet is provided. It can be configured to display the last poll, or the first poll of a folder. After the vote statistics screens are shown.

Share and Enjoy

collective.polls would not have been possible without the contribution of the following people:

  • Franco Pellegrini

  • Héctor Velarde

  • Érico Andrei

  • Rafahela Bazzanella

  • Silvestre Huens

  • Elio Schmutz

  • Timon Tschanz

  • Maurits van Rees

  • Jean-Michel FRANCOIS

  • WebDesignerDepot (icon)

You can find an updated list of package contributors on GitHub.

Development sponsored by Open Multimedia and Simples Consultoria.


There’s a frood who really knows where his towel is.

1.6.2 (2015-03-11)

  • Add upgrade step to remove missing resource from JS registry (fixes #83). [hvelarde]

  • Update German translation. [mbaechtold]

  • Added Czech translation [naro]

1.6.1 (2014-08-19)

  • Remove @@legendothers_translation.js because it is not used anywhere. [rafaelbco]

1.6 (2014-05-01)

  • Add a default value to the voting portlet poll parameter. This fixes an issue happening when importing portlets.xml assignments. [ericof]

  • Remove unnecesary code in portlet (closes #73). [nueces]

  • In portlet link back to poll page (closes #47). [marcosfromero]

1.5 (2013-12-17)

  • Make the add-on aware of subsites (INavigationRoot) [rafaelbco]

  • Implement show_total for the portlet (closes #64). [marcosfromero]

  • Depend on plone.api. [hvelarde]

  • Remove dependency on unittest2; package is not going to be tested under Python 2.6 anymore. [hvelarde]

  • Drop support for Plone 4.1. [hvelarde]

  • Add French translation. [toutpt]

1.4 (2013-04-10)

  • Tested for Plone 4.3 compatibility. [ericof, hvelarde]

  • Anonymous voters can now vote again on a reopened poll (fixes #35). [ericof]

  • Remove cmf.ManagePortal permission when editing the portlets. [flecox]

1.3.1 (2013-03-27)

  • Fix refreshing the portlet. Previously no html would be returned when the portlet was defined on a default page. The refresh would fail with a ComponentLookupError when used inside a panel of collective.panels. [maurits]

  • Fixing jQuery bug when doing AJAX call in portlet. [flecox]

1.3 (2013-01-14)

  • Test compatibility with Plone 4.3. [hvelarde]

  • Bump up version of collective.z3cform.widgets dependency to 1.0b3. [hvelarde]

  • Declare Pillow as a package dependency. [hvelarde]

  • Add Dutch translation. [fredvd]

  • Fixed permissions checks for anonymous users when a poll is at the root level of the site (fixes #61). [vincentpsarga]

1.2 (2012-09-16)

  • EnhancedTextLinesFieldWidget widget was updated; new features (like inline editing and reordering) are now available. [hvelarde]

  • Added the ‘open’ transition to the ‘closed’ state, that way, polls can be re-opened after they were closed (closes #53). [frapell]

1.1 (2012-08-14)

  • Multiple poll charts can be rendered in one page. [Quimera]

  • Multiple poll portlets can be rendered in one page. [Quimera]

  • Updated Brazilian Portuguese translation. [rafahela]

  • Add translation functionality for the ‘Others’ string and translate it to German. [eschmutz]

  • Fixed translation strings for actions on poll workflow; updated Spanish and Brazilian Portuguese translations. [hvelarde]

  • Update German translations. [tschanzt]

  • allow_anonymous field is always shown (fixes #51). [hvelarde]

  • Some refactoring on tests was done; we now test for CSS installation and removal. [hvelarde]

  • DataGridField widget was replaced with EnhancedTextLinesFieldWidget. [flecox, hvelarde]

1.0.1 (2012-05-08)

  • Fix UnicodeDecodeError in PossiblePolls vocabulary when we have a poll with umlauts in the title. [elioschmutz]

  • Add German translation. [elioschmutz]

1.0 (2012-05-02)

  • Tested for Plone 4.2 compatibility. [hvelarde]

  • Updated Dexterity version requirement (we want to use latest version to avoid any issues). [hvelarde]

  • Added a nice hack to include both README.txt and README.rst in the package declaration. [hvelarde]

  • Pie chart is now shown when all votes go to one option (issue #27). [flecox]

1.0rc2 (2012-02-20)

  • Ajax load of partial results on portlet (issue #37). [Quimera]

  • Updated Brazilian Portuguese translation. [ericof]

  • Added option to control if portlet shows closed polls when no open ones are available (issue #32). [ericof]

  • Added validation for Poll options (issue #31). [ericof]

  • Add a subscriber to erase votes when poll is sent back to revision (issue #33). [ericof]

  • Fix Anonymous permissions to View and Vote on polls. [ericof]

  • Modify workflows and permissions to be consistent with the ones used in Plone. [ericof]

  • Fixed file. [nueces]

  • Renamed the workflow state to ‘Opened’ instead of ‘Published’ (issue #26). [frapell]

  • Updated tests and translations. [frapell]

  • Added the pieChart to the portlet (issue #23). [frapell]

  • Made the poll redirect to the place where the vote was casted (issue #22). [frapell]

  • Updated Spanish translation. [hvelarde]

  • Fixed permissions on private and pending states (issue #20). [hvelarde]

  • Fixed javascript registry uninstall and tests. [hvelarde]

1.0rc1 (2012-01-10)

  • Initial release.

Project details

Download files

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

Source Distribution (143.9 kB view hashes)

Uploaded source

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page