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 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 and Plone 5.
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.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.
Source Distribution
Hashes for collective.contentexport-1.0b5.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | f57814b9daae255cf47043f49538c39415ce26b2be8642c8d3bde7a33a68473d |
|
MD5 | c17345ba2757af97fee760d2fd064685 |
|
BLAKE2b-256 | fc3b5774f5b5635e7b34c9bea0c4119c93f30e7ee10c5b792980bc127443c0e3 |