Skip to main content

Importer from an old Plone Site into a new one with Volto

Project description

Plugin for redturtle.importer.base to migrate old site into a new Volto-enabled site.

Features

There is a new adapter for redturtle.importer.base for content-types with volto.blocks enabled behavior that converts rich text from html (TinyMce) to json (DraftJs/blocks).

HTML to DraftJs converter

For content-types with blocks enabled, we need to convert old-style HTML text to a DraftJs compatible data structure.

The best library to do this, is the officiale one that is only available for Javascript.

For that reason, to convert HTML we need to connect to an external tool: https://github.com/RedTurtle/draftjs-converter

This is a nodejs rest api that accept some html and returns its DraftJs converted version.

To use this api, we need to set an environment variable with its address in our buildout:

environment-vars +=
    ...
    DRAFTJS_CONVERTER_URL http://localhost:3000/html_converter

Blocks conversions

Every piece of a RichText value should be converted into a Volto block element.

Some pieces can be converted into a specific block (for example tables, images, embed items). Other standard html elements are converted into a text block that contains a DraftJs data structure.

We made some assumption when converting text into blocks.

Every paragraph is a new block

This allows editors to move text, insert elements between paragraphs, etc.

Images are wrapped into a separate paragraph

Before launching the conversion tool, we wrap every image into a separate paragraph.

In this way we can handle them as an “image block” in Volto.

Image sizes conversion

In Plone images in text can have also a miniature (images scales in Plone).

In Volto, right now, there are only 3 available sizes (S, M, L), so we mapped plone scales into these 3 sizes.

Types conversion

If a content-type have volto.blocks behavior enabled and a text field, that field will be converted in blocks.

Collection content-types will be converted into a Document with a listing block with its criteria filters.

Folders with a default view will be converted into a Document content-type with these rules for its blocks:

  • If default view is a Collection content-type, we create a listing block with its criteria filters.
  • If default view is a Document or News Item, we convert its text into blocks.
  • If the folder doesn’t have a default item as view, we create a listing block that shows first level contents.

Installation

Install redturtle.importer.volto by adding it to your buildout:

[buildout]

...

eggs =
    redturtle.importer.volto

and then running bin/buildout

You don’t have to install it. In this way, after the data migration, you can remove it from the buildout and everything is clean.

Credits

This product has been developed with some help from

kitconcept

License

The project is licensed under the GPLv2.

Contributors

Changelog

1.0.0 (2020-12-18)

  • Initial release. [cekk]

Project details


Download files

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

Files for redturtle.importer.volto, version 1.0.0
Filename, size File type Python version Upload date Hashes
Filename, size redturtle.importer.volto-1.0.0.tar.gz (25.1 kB) File type Source Python version None Upload date Hashes View

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 Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page