Transmogrifier provides support for building pipelines that turn one thing
into another. Specifically, transmogrifier pipelines are used to convert and
import legacy content into a Plone site. It provides the tools to construct
pipelines from multiple sections, where each section processes the data
flowing through the pipe.
A "transmogrifier pipeline" refers to a description of a set of pipe sections,
slotted together in a set order. The stated goal is for these sections to
transform data and ultimately add content to a Plone site based on this data.
Sections deal with tasks such as sourcing the data (from textfiles, databases,
etc.) and characterset conversion, through to determining portal type,
location and workflow state.
Note that a transmogrifier pipeline can be used to process any number of
things, and is not specific to Plone content import. However, it's original
intent is to provide a pluggable way to import legacy content.
Development sponsored by
Elkjøp Nordic AS
Design and development
`Martijn Pieters`_ at Jarn_
A transmogrifier_ is fictional device used for transforming one object
into another object. The term was coined by Bill Waterson of Calvin and
.. _Martijn Pieters: mailto:firstname.lastname@example.org
.. _Jarn: http://www.jarn.com/
.. _Transmogrifier: http://en.wikipedia.org/wiki/Transmogrifier
(name of developer listed in brackets)
- Fix broken distribution.
- Allow csvsource to read files from GS import context
- Don't use traversal to avoid problems with acquisition or views.
- Add csvsource support for taking the filename from an item key.
- Add csvsource restkey handling for rows with more keys than fieldnames.
- Add a blueprint for opening and caching URLs with `urllib2`_.
- Add a source for walking a directory with `os.walk`_.
- Add support for arbitrary csvsource fmtparam options.
- Add DEBUG logging for expressions, useful for tracking changes to
items as they move through the pipeline.
- Add an XML walker source section for walking a tree of elements.
- Add a list source section for adding recursion and/or looping to pipelines.
- Add pprint support to the logger section, moved from the pprint
section used in tests to make it more useful and available in actual
- Fix the import location of the pagetemplate engine for newer Zope versions.
- Bug fix to load ZCML for GS when Products.GenericSetup is installed.
- Added the GenericSetup import context as an annotation to the transmogrifier.
- Added a logger to log the value of a particular key for all items. Handy
when debugging, you can see which path is failing, and good if you want
to show progress in a long import.
- Added a breakpoint section to break on a particular expression, which is
handy for debugging.
- Bug fix: the constructor promises to encode paths to ASCII, but failed to
do so. Thanks to gyst for finding the discrepancy.
- Allow the CSV source to load its file from a package as well as from an
absolute or relative file path. To load from a package, pass
``package.name:filename.csv`` to the ``filename`` option.
- Add CMF 2.2/Plone 4 compatibility for the content constructor
- Use an explicit provides attribute to register the transmogrifier adapter.
Fixes the "Missing 'provides' attribute" errors when loading with
- Add a required flag to the content constructor, which causes it to raise
a KeyError if the container where to construct the new item doesn't exist.
- Add an optional condition to the manipulator section.
- Initial transmogrifier architecture.
TODO: Brief introduction on what you do with files - including link to relevant help section.