Introduction

Poi is an issue tracker for Plone. The code is in the collective.

The eXtremeManagement product from Zest Software and others depends on
Poi. The biggest reason: Daniel Nouri has added a content type
PoiTask to eXtremeManagement. You can add such a PoiTask to a Story
and there easily link to one or more Poi issues that should be fixed.
So I am interested in what happens with Poi and I occasionally add
some code or run some tests on various Poi versions.

Poi has several branches. The ones that interest me here are 1.0
and plone3-support.

Poi has several dependencies: AddRemoveWidget, contentmigration,
DataGridField and intelligenttext.

It can be annoying to have to hunt down where all dependencies can be
downloaded and which version is needed. To make it easier on users,
Poi has subversion bundles for this. The ones that interest me here
are 10 and plone3. The bundles have in common that all
dependencies are using trunk. So what are the differences? And with
which Plone version can you use them?

Testing Poi

First of all: I improved the tests of Poi slightly, on all three
branches that I investigate here. When you have an smtp server on
your localhost, running the Poi tests would actually cause a few emails
to be sent. They go to non-existing email addresses, so you (or some
administrator) will get some mail delivery failures in your inbox, which
is not nice. So in tests/ptc.py I replaced the default mail host
with a simple mock mail host, which avoids this. That code was taken (and
drastically simplified) from PasswordResetTool: thanks!

There is always one test that fails. This is a known issue: a deleted
response causes stale SearchableText for an issue. If someone has an
idea on how to fix this, that would be nice.

When below I say a branch or bundle is compatible with some Plone
version then I mean that all tests except that one pass for that Plone
version. The test combinations of Zope and Plone that I tried were:

  • Plone 2.1.4 (tar ball) with Zope 2.8.9; for the tests I added
    PloneTestCase 0.8.2.
  • Plone 2.5.3 (tar ball) with Zope 2.9.7
  • Plone 3.0 (subversion trunk) with Zope 2.10.3

All were using python 2.4.

Note: I did not run any tests in combination with PloneSoftwareCenter.

instancemanager

I ran the tests with help from instancemanager. I use that tool a
lot, so I am used to it, which helps. But I really like it for
quickly running tests for (various versions of) a product on various
versions of Plone. Here is my .instancemanager/poi.py file, ready
for running the tests for the combination of Poi 1.0, Zope 2.9.7 and
Plone 2.5.3. Commented out are the lines that are used for the other
combinations:

python = 'python2.4'
#zope_version = '2.8.9'
zope_version = '2.9.7'
#zope_version = '2.10.3'
archive_sources = [
    #'PloneTestCase-0.8.2.tar.gz',
    ]
symlinkbundle_sources = [
    {'source': 'Poi10bundle',
     'url': 'http://svn.plone.org/svn/collective/Poi/bundles/10'},
    #{'source': 'Poitrunkbundle',
    # 'url': 'http://svn.plone.org/svn/collective/Poi/bundles/trunk'},
    #{'source': 'Poi30bundle',
    # 'url': 'http://svn.plone.org/svn/collective/Poi/bundles/plone3'},
    #{'url': 'http://svn.plone.org/svn/plone/bundles/3.0'},
    #{'url':'https://svn.plone.org/svn/plone/bundles/3.0-lib',
    # 'pylib': True},
    ]
archivebundle_sources = [
    #{'url': 'http://heanet.dl.sourceforge.net/sourceforge/plone/Plone-2.1.4.tar.gz'},
    {'url': 'http://plone.googlecode.com/files/Plone-2.5.3-final.tar.gz'},
    ]
main_products = ['Poi']

Then I just create an instance, fill the products directory and run
the Poi tests with this single command:

$ instancemanager poi --create --products --test=MAIN

When the tests have run, I add and remove some comment signs to get
the right versions and run that command again for the next
combination.

Poi 10 bundle

  • This has Poi branch 1.0. That branch was created by Daniel Nouri on
    2007-05-17, before he added new functionality on trunk.
  • Compatible with Plone 2.1 and 2.5

Poi trunk bundle

  • This has Poi trunk, which has version number 1.1. Since putting 1.0
    on a maintenance branch, trunk has seen the addition of link
    detection by Daniel (links are automatically created from #123
    to issue 123 in this tracker; and r1234 points to
    revision/changelog 1234 if you specified a base url for that in your
    tracker). Plus some small changes by others that I did not
    investigate.
  • Compatible with Plone 2.1 and 2.5.

Poi plone3 bundle

  • This has Poi branch plone3-support. That branch was created by
    Alexander Limi on 2007-04-25. Goal is to add Plone 3 support.

  • This bundle does not have intelligenttext. The reason is that
    intelligenttext is already available as a python module in Plone 3.
    It should be in your instance, in
    lib/python/plone/intelligenttext. The other
    versions of Poi throw this error, when they try to install
    intelligenttext:

    Products.CMFQuickInstallerTool.QuickInstallerTool.AlreadyInstalled: intelligenttext
    

    This python module is not exactly the same as the Product from the
    collective though. It misses some very recent additions there, like
    adding rel="nofollow" to links; this also means that the Poi
    tests had to be changed a bit. Or rather: I had to change the Poi
    tests on the other two branches to fit the intelligenttext changes.

  • Compatible with Plone 3.0 only.

Conclusions

  • On Plone 2.1 or 2.5:
    • For a Poi version without sudden changes that would require a
      reinstall or a schema update: use branches/1.0 from
      bundles/10.
    • For recent improvements: use trunk from bundles/trunk.
  • On Plone 3.0: use branches/plone3-support from
    bundles/plone3.

Maurits van Rees: Poi, intelligenttext and Plone 3

Originally from Planet Plone by Maurits van Rees