Yesterday and today, I did something I’ve been wanting to do for a long time – refactor the more generic bits of b-org out into more generic components. I have the luxury of targeting Plone 3.0 only, so I could use a lot of new APIs and components only available there. The results are:

  • borg.localrole – a standalone release of the PAS plug-in which allows you to define local roles in an adapter. This will probably work on Plone 2.5, but on its own it does nothing.
  • borg.project – an easy-to-use implementation of the “project workspace” metaphor.

The latter is possibly more interesting. When you install it, a manager can add a new Project, and configure a list of managers (who get the Manager role); a list of members (who get the TeamMember role); and a list of content types which project members will be able to add inside the workspace. There is also a local workflow policy (using CMFPlacefulWorkflow – watch out, you need to install this manually now in Plone 3).

This is no different to what the same part of b-org did, except:

  • It’s completely standalone
  • It works on any kind of user, not just Membrane ones
  • It has few dependencies – it doesn’t need Membrane; in fact, it doesn’t even use Archetypes.
  • It shows off a number of cool Plone 3-like features, such as add forms, formlib-based edit forms, factories, browser views, events and doctests

I know the Teamspace guys have been working on similar things (such as team spaces working with plain members). From what I know, Teamspace is more powerful and ambitious, possibly also a bit more complex. I must admit that the ability to work against plain Plone 3, starting from a clean slate was a strong driving force. I got to exercise a lot of things that we want people to be able to do – I even fixed a few Plone 3 bugs in the process, which I probably wouldn’t have found before the release otherwise.

Both projects are in the Cheesehop. Both have README.txt files with doctests and background info. If you want to see how you may code against Plone 3, or you need a simple, lightweight project workspace, give it a go!

If you just want to have a browse of the code, look in the Collective.

Martin Aspeli: Developing with Plone 3 – borg.localrole and borg.project

Originally from Planet Plone by optilude