Plone add-on to export dexterity content in various formats
Project description
collective.contentexport
Features
Exports dexterity content in various formats:
- xlsx
- xls
- csv
- tsv
- json
- yaml
- html (a table)
- zip-file containing all images from image-fields
- zip-file containing all files from file-fields
- zip-file containing related files and images from relationfields
It can be used to export all instances of a dexterity type and all its data. It cannot be used to export a folder-structure of content.
Usage
Provides a form /@@collective_contentexport_view to configure the export. The form is also availabe in the main controlpanel as Content export.
The form allows you to:
- Select the export type
- Select the content type to export
- Choose fields from the selected type to be ignored
- Select the format of richtext-fields (html/plaintext)
- Select the format for files and images (url, base64, location within zip-file)
collective.contentexport uses tablib for several export-formats.
Use in code
You can use the collective_contentexport_view in code to have more control over the results.
The view collective_contentexport_view accepts the following parameters:
- export_type
The export-format you want to use. Accepts the following options:
- xlsx (Excel Spreadsheet (xlsx))
- xls (Excel Legacy Spreadsheet (xls))
- yaml (YAML)
- html (HTML Table)
- csv (Comma Separated Values File)
- tsv (Tab Separated Values File)
- json (JSON Dump)
- images (Export images as zip)
- files (Export files as zip)
- related (Export related files and images as zip)
- portal_type
- The content-type you want to export
- blob_format
The format in which blobs (filed/images) should be exported. Accepts the following options:
- url (URL)
- base64 (Base64-encoded string)
- zip_path (Location within the a zip)
- richtext_format
The format in which richtext (html) should be exported. Options:
- html
- text/plain
- blacklist
- Fields that should be ommited from the export (cannot be combined with whitelist).
- whitelist
- Only these fields should be included in the export (cannot be combined with blacklist).
- additional
- Additional data to export. A dict with a name (for the heading) as key and a callable method as value to get additional data for the export from the objects.
- query
- Catalog-query to filter the exported content.
The following example creates a zip-file with images or files from the field primary_picture for the type some_type:
view = api.content.get_view('collective_contentexport_view', portal, request) view(export_type='related', portal_type='some_type', whitelist='primary_picture')
You can filter the items that should be exported by passing a catalog-query:
path = '/'.join(self.context.getPhysicalPath()) view = api.content.get_view('collective_contentexport_view', portal, request) view(export_type='json', portal_type='Document', query={'review_state': 'published', 'path': path})
You can also extend the export. In the following example the value some_fieldname is being extracted from the object using the method _somehandler.
def _somehandler(obj): return some_crazy_transform(obj.custom_field) additional = {'some_fieldname': _somehandler} view = api.content.get_view('collective_contentexport_view', portal, request) result = view(export_type='json', portal_type='Document', additional=additional)
You can also override the default methods to modify the default behavior. In the following example the image from Images is being extracted using the method _get_imagename that only dumps the filename of the image:
def _get_imagename(obj): if obj.image: return obj.image.filename additional = {'image': _get_imagename} view = api.content.get_view('collective_contentexport_view', portal, request) result = view(export_type='json', portal_type='Image', additional=additional)
Compatability
collective.contentexport is tested to work in Plone 4.3, Plone 5 and PLone 5.1.
Known Issues
- xslx-Export is broken unless you pinn openpyxl = 2.4.9. See https://github.com/collective/collective.contentexport/issues/4 for details.
Installation
Install collective.contentexport by adding it to your buildout:
[buildout] ... eggs = collective.contentexport
and then running bin/buildout.
You don’t need to install the add-on to use the export.
Contribute
- Issue Tracker: https://github.com/collective/collective.contentexport/issues
- Source Code: https://github.com/collective/collective.contentexport
Support
If you are having issues, please let us know at https://github.com/collective/collective.contentexport/issues.
License
The project is licensed under the GPLv2.
Contributors
- Philip Bauer, bauer@starzel.de
Changelog
1.1 (2018-03-27)
- Add modification date to default fields [pbauer]
- Add export-view to controlpanel [pbauer]
- Run tests with Plone 5.1 [pbauer]
1.0 (2016-07-09)
- Fix tsv-Export [pbauer]
- Test compatibility with Plone 5.0.5 [pbauer]
1.0b5 (2015-12-03)
- Fix UnicodeEncodeError in get_blob_url when filenames have special characters. [pbauer]
- Add path and review_state to exported data that is not part of the schema. [pbauer]
1.0b4 (2015-11-28)
- Allow to pass catalog-query to filter the exported content. [pbauer]
1.0b3 (2015-11-28)
- Move package to https://github.com/collective/collective.contentexport. [pbauer]
- No longer bind views to browserlayer to simplify package-use. Rename views to prevent unintended name-clashes since we no longer use the browser-layer. [pbauer]
1.0b2 (2015-11-06)
- Add whitelist (only export fields in the whitelist) [pbauer]
- Document extending and overriding the export. [pbauer]
1.0b1 (2015-11-05)
- Sort fieldnames in blacklist by alphabet. [pbauer]
- Add ability to provide additional export-methods for arbitrary data by extending ADDITIONAL_MAPPING. [pbauer]
- Add tests [pbauer]
1.0a2 (2015-11-04)
- Localize datetime [pbauer]
- Prevent uneven dimension of data-dict [pbauer]
- Fix blacklist [pbauer]
1.0a1 (2015-11-04)
- Get content from all languages. [pbauer]
- Add export for multiple images and files related with RelationList. [pbauer]
- Allow choosing blacklisted fields from the fields of the selected type. [pbauer]
- Use http://docs.python-tablib.org for most exports. [pbauer]
- Add German translations. [pbauer]
- Moved initial code from client-project to github. [pbauer]
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Filename, size | File type | Python version | Upload date | Hashes |
---|---|---|---|---|
Filename, size collective.contentexport-1.1.tar.gz (125.9 kB) | File type Source | Python version None | Upload date | Hashes View |
Hashes for collective.contentexport-1.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | f45828829f35d680b60d7a5c31ab8022163380258b09d07be42841228317d35b |
|
MD5 | 06025348850c1e405e55cdfb17bb8be3 |
|
BLAKE2-256 | 9e41d8dae4820f5332d3d6b9b8f89da39799a4161834d15712f80f84cd202716 |