djangocms-export-page

Export a Django CMS page or a model view to a DOCX document


Keywords
django, cms, export, docx, djangocms, docx-generator
License
MIT
Install
pip install djangocms-export-page==0.1.1

Documentation

1   Django CMS Export Page

Version: 0.1.0
Source: https://bitbucket.org/maykinmedia/djangocms-export-page
Keywords: django cms export docx
PythonVersion: 3.4

build-status Requirements status Coverage status

python-versions django-versions pypi-version

Export a Django CMS page or a model view to a DOCX document

2   Features

  • Adds a menu entry in the CMS toolbar to export the current page
  • Ability to export a custom model, including placeholder fields

img/page-export-menu.png

3   Installation

3.1   Requirements

  • Python 3.4 or above
  • setuptools 30.3.0 or above
  • Django 1.11 or above
  • Django CMS 3.4.6 or above

3.2   Install

pip install djangocms-export-page

4   Usage

In your Django settings:

INSTALLED_APPS = [
    ...
    'djangocms_export_page',
    ...
]

4.1   CMS Page

CMS Page don't need any extra configuration to work.

If a Plugin has a reverse ForeignKey that would behave like children, add the following to the CMSPlugin model class:

_export_page = {
    'children': 'items'
}

@property
def items(self):
    return self.frequentlyaskedquestion_set.all()

where items is a iterable attribute of the model class.

And for on the ForeignKey Django model class:

_export_page = {
    'fields': ['name', ... ]
}

If you want to export the contents of a ForeignKey or OneToOneField inside the regular model you can use _export_page_field_names. Now these fields will be put in the some level as the plugin fields.

_export_page_field_names = ['number', 'title', 'lead', 'display_date', 'date', 'location']

4.2   Django Model

If you need to export a Django model included in a AppHook, add the following to the model class:

_export_page = {
    'sections': [{
        'name': 'Meta',
        'fields': ['title', ... ]
    }, {
        'name': 'Body',
        'fields': ['content']
    }],
}

It's better to put the PlaceholderField (here content) in a separate section.

4.3   Static Placeholders

If you also want to export the static placeholders of a page, some extra configuration is required. There is a setting called EXPORT_STATIC_PLACEHOLDERS.

EXPORT_STATIC_PLACEHOLDERS = {
    'template_name': ['static_placeholder_code']
}

So with the cms settings it will look like this:

# test.html
<div>
    {% static_placeholder 'test-placeholder' %}
</div>

# settings.py
CMS_TEMPLATES = [
    ('test.html', _('Test page')),
]

EXPORT_STATIC_PLACEHOLDERS = {
    'test.html': ['test-placeholder']
}