Since I began drinking the collective.transmogrifier Kool Aid a few months back, I’ve gotten quite excited about the possibility of being able to use it outside Plone, i.e. like “regular” Python people would do.
It just so happens I have a current project that requires me to import content to Plone 2.5; it took me a while to realize I could just setup a Plone 4 instance, run transmogrifier in it, and import content from it (i.e. from the file system) to Plone 2.5 over XML-RPC. But something about having to include Plone 4 in that scenario rubbed me the wrong way: Plone 4 is not needed, it’s just executing the pipeline.
(I also don’t like the idea of having to create a Python package and a GenericSetup profile in order to facilitate a migration.)
So in addition to working on getting mr.migrator to be able to configure and execute pipelines (currently only GenericSetup profiles and Python code are supported), I thought I’d experiment with removing the CMFCore dependency.
The initial, experimental results can be seen in action here:
From the README:
Introduction ============ This demo is:* Proof of concept for mr.migrator: A tool that provides the ability to register and execute collective.transmogrifier pipelines without creating a Python package. It's Miller Time™.* Also proof of concept for collective.transmogrifier with the CMFCore dependency removed (and a zope.component dependency added in its place). It's Scotch time™. Explanation ----------- In order to work, it currently relies on:* https://svn.plone.org/svn/collective/collective.transmogrifier/branches/aclark-mr-migrator-compat * https://svn.plone.org/svn/collective/transmogrify.filesystem/branches/aclark-mr-migrator-compat * email@example.com:aclark4life/transmogrify.ploneremote.git These are, respectively:* A branch of c.transmogrifier with a setuptools entry point plugin system added, and the CMFCore dependencies removed (gracefully, I hope).* A branch of t.filesystem with the collective.transmogrifier entry point specified (and some CMFCore dependencies removed).* A fork of t.ploneremote with the collective.transmogrifier entry point specified (and some CMFCore dependencies remove). …
It’s a work in progress, but it actually imports content. You may try it locally, as explained in the rest of the README:
Installation ------------ You can try out this demo:: $ git clone firstname.lastname@example.org:aclark4life/mr_migrator_demo.git $ cd mr_migrator_demo $ python bootstrap.py $ bin/buildout Elsewhere, setup a Plone site listenining on localhost:8080 with a Plone site object called "Plone" and then: $ bin/mr.migrator You should end up with content in Plone that looks like this: …
I hope this helps move the state of the art forward a bit; it would be great to share this technology with the rest of the Python world. And in case you are curious about the changes, you can read the revision log here:
Start with the following revision, and click through the next 8 commits:
Thanks Martijn Pieters for creating collective.transmogrifier; thanks Martin Aspeli and Dylan Jay for their blueprints; and thanks Dylan Jay for bringing transmogrifier to the masses via mr.migrator.