collective.documentgenerator


Namecollective.documentgenerator JSON
Version 3.43 PyPI version JSON
download
home_pagehttps://pypi.org/project/collective.documentgenerator
SummaryDesktop document generation (.odt, .pdf, .doc, ...) based on appy framework (https://appyframe.work/tool/public) and OpenOffice/LibreOffice
upload_time2024-04-10 06:52:25
maintainerNone
docs_urlNone
authorSimon Delcourt
requires_pythonNone
licenseGPL
keywords plone document generation generator odt word pdf libreoffice template
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            .. image:: https://github.com/collective/collective.documentgenerator/actions/workflows/python-package.yml/badge.svg?branch=master
    :target: https://github.com/collective/collective.documentgenerator/actions/workflows/python-package.yml

.. image:: https://coveralls.io/repos/collective/collective.documentgenerator/badge.svg?branch=master
   :alt: Coveralls badge
   :target: https://coveralls.io/r/collective/collective.documentgenerator?branch=master

.. image:: https://img.shields.io/pypi/v/collective.documentgenerator.svg
   :alt: PyPI badge
   :target: https://pypi.org/project/collective.documentgenerator


============================
collective.documentgenerator
============================

``collective.documentgenerator`` is an elegant product allowing to easily **produce office documents** based on dynamic templates.

New content types are used to store the different templates:

* **style templates**, that can be common for other templates
* **sub templates**, that can be used in other templates
* **mailing loop templates**, that can be used by other templates to do a loop for mailing
* **basic templates**
* **advanced templates**, regarding configuration

Templates are created within `LibreOffice <https://www.libreoffice.org>`_ software.

Output formats are those that can be produced by LibreOffice:

* odt and ods formats
* doc, docx, xls, xlsx formats
* pdf, csv, rtf

You can use a demo profile to easily test the product.


Translations
------------

This product has been translated into

- French.

- Spanish.

You can contribute for any message missing or other new languages, join us at
`Plone Collective Team <https://www.transifex.com/plone/plone-collective/>`_
into *Transifex.net* service with all world Plone translators community.


Installation
============

Install ``collective.documentgenerator`` by adding it to your buildout:

   [buildout]

    ...

    eggs =
        collective.documentgenerator


and then running "bin/buildout"


Usage
=====


**How to add a new POD template?**
----------------------------------

In your Plone site, you can add two sorts of main templates :

- PODTemplate : composed of title, description and odt file to be uploaded
- ConfigurablePODTemplate : adding configurable fields to basic template

  * output formats selection
  * portal types selection
  * style template selection
  * subtemplate selection
  * TAL expression as condition (`behavior <https://github.com/collective/collective.behavior.talcondition>`_).
  * enabling flag
  * context variables list
  * mailing loop template

If you want, you can organize your templates in one or more folder.


**How to write the template ?**
-------------------------------

The `appy framework <https://appyframe.work/tool/public>`_ is used to interpret the template and render it using the context.

You can find a `documentation <https://appyframe.work/13>`_ explaining the syntax that can be used.

You can do the following things:

- use basic python expression to access context fields or methods
- do an if... then... else...
- do a loop for a paragraph, a section, a table, a row, a cell
- transform xhtml to text

Base helper methods can be used in templates and custom methods can be added.


**How to generate a document?**
-------------------------------

A viewlet displays all the available PODTemplate and ConfigurablePODTemplate following the current context.
Clicking the template link will call the 'document-generation' view.

- Calling 'document-generation' view

  * render template and propose to download the generated document
  * parameters: template UID and document type
  * this is the default view used in the viewlet

- Calling 'persistent-document-generation' view

  * render template and create a file with the generated document
  * parameters: template UID and document type

- Calling 'mailing-loop-persistent-document-generation' view

  * loop on persisted rendered document and create a file containing all documents
  * parameters: document UID

**Search and replace**
----------------------

Documentation about the search and replace feature is here :
`docs/search_replace.rst <https://github.com/collective/collective.documentgenerator/tree/master/docs/search_replace.rst>`_


**Logging & Debugging**
-----------------------

You can specify form request that will be logged using collective.fingerpointing by defining environment variable
`DOCUMENTGENERATOR_LOG_PARAMETERS)` each parameter must be separated by a comma e.g. `param1,param2`


Plone versions
--------------

It is working and tested on Plone 4.3, Plone 5.0, 5.1 and 5.2 (Python2.7).


Contribute
==========

* `Source code @ GitHub <https://github.com/collective/collective.documentgenerator.git>`_
* `Issues @ GitHub <https://github.com/collective/collective.documentgenerator/issues>`_
* `Continuous Integration @ Travis CI <https://travis-ci.org/collective/collective.documentgenerator>`_
* `Code Coverage @ Coveralls.io <https://coveralls.io/r/collective/collective.documentgenerator?branch=master>`_


License
=======

The project is licensed under the GPLv2.


Changelog
=========

3.43 (2024-04-10)
-----------------

- Import `safe_encode` from `imio.pyutils` instead `imio.helpers`.
  [gbastien]
- Use has Plone versions constants (`HAS_PLONE_4`, `HAS_PLONE_5`, ...)
  from `imio.helpers`.
  [gbastien]

3.42 (2024-02-12)
-----------------

- Translated again type icon title.
  [gbastien]

3.41 (2024-02-12)
-----------------

- Corrected typo.
  [sgeulette]
- In `TitleColumn`, use `typeInfo.Title()` instead translating `typeInfo.title`,
  `Title()` do the same but manages special characters in the `title`.
  [gbastien]

3.40 (2023-08-01)
-----------------

- Add `DOCUMENTGENERATOR_LOG_PARAMETERS` environment variable that can be used to log request form parameters with
  collective.fingerpointing.
  [mpeeters]

3.39 (2023-06-26)
-----------------

- Removed `utils.safe_encode`, imported it from `imio.helpers.content`.
  [gbastien]

3.38 (2022-12-12)
-----------------

- Added missing upgrade step after registry modification (`force_default_page_style_for_mailing`) in 3.36.
  [sgeulette]

3.37 (2022-10-27)
-----------------

- Bugfix: page style check now handle case of POD template without mailing template
  attribute.
  [sdelcourt]

3.36 (2022-10-21)
-----------------

- Add a new parameter `force_default_page_style_for_mailing` to the registry.
  If set to True, apply automatically a default page style to mailing templates.
  [sdelcourt]
- Order templates directories by title in `dg-templates-listing` view.
  [sgeulette]
- Improved `DXDocumentGenerationHelperView.get_value` by adding optional obj parameter.
  [sgeulette]

3.35 (2022-08-26)
-----------------

- Group link by template title.
  [odelaere]
- Added 'title' attribute to generation link.
  [odelaere]
- Aliased import to avoid confusion.
  [sgeulette]
- CSS for generationlinks so it may be adapted more easily.
  [gbastien]

3.34 (2022-06-21)
-----------------

- Stored `template_uid` on a persistent generated document to know which template has been used.
  [sgeulette]

3.33 (2022-06-14)
-----------------

- Added character escaping to avoid xss in `TemplatesTable`
  [sgeulette]
- In `utils.update_oo_config_after_bigbang` don't fail instance start up if
  `update_oo_config` raises an exception.
  [odelaere]

3.32 (2022-06-02)
-----------------

- Added upgrade step to `14` that will add the `oo_port_list` parameter to the registry.
  [gbastien]

3.31 (2022-06-01)
-----------------

- Use appy to load balance on multiple LO server.
  [odelaere]

3.30 (2022-05-06)
-----------------

- Added `iterable_in_columns` (for labels document).
  [sgeulette]
- Added `get_relations` in dexterity
  [sgeulette]
- Use Appy to search and replace in POD templates pod expressions.
  [aduchene]
- .ods POD Templates are now usable with search and replace.
  [aduchene]
- Make sure tmp directory is unique when searching and replacing.
  [aduchene]
- Updated readme
  [Arhell]

3.29 (2022-04-15)
-----------------

- Method update_oo_config updates all the registry entries for libreoffice server.
  [odelaere]
- Added subscriber to update oo config on process start.
  [odelaere]

3.28 (2022-01-14)
-----------------

- Added helper `ConfigurablePODTemplate.get_filename` to easily get file filename.
  [gbastien]

3.27 (2021-12-06)
-----------------

- Updated metadata version.
  [sgeulette]

3.26 (2021-11-08)
-----------------

- Clean notes when creating/editing a `PODTemplate` this way the `search&replace`
  functionnality works as expected:

  - Added `utils.clean_notes`;
  - Clean notes is only done if `odt_file` changed and file is updated only if
    something was cleaned;
  - Moved function `create_temporary_file` from `events.styles_events` to `utils`.

  [gbastien]

3.25 (2021-09-23)
-----------------

- Use wrapped context of ProxyObject for __unicode__ method.
  Revert __repr__ to default implementation.
  [sdelcourt]

3.24 (2021-09-23)
-----------------

- Require `beautifulsoup4<4.10` in `setup.py` as starting from 4.10.0,
  `beautifulsoup4` is no more compatible with `Python2`.
  [gbastien]
- Pass parameter `html=True` when calling `Renderer` so content is considered
  as html when using `xhtml` function in POD template, some pre-processing is
  applied to ensure that given content is valid xhtml.
  [gbastien]
- Use wrapped context of ProxyObject for __repr__ and __str__ methods.
  [sdelcourt]

3.23 (2021-08-09)
-----------------

- Allow templates selection on the search result before applying the replace.
  [sdelcourt]

3.22 (2021-07-16)
-----------------

- Added a view to search and replace in POD templates pod expressions `@@collective.documentgenerator-controlpanel`.
  [aduchene]
- Added an helper class `SearchAndReplacePODTemplates` that can search and replace in POD templates pod expressions.
  [aduchene]
- Added tests on search and replace feature.
  [aduchene]
- Added utility classes to search and replace pod expressions in ODT files.
  [sdelcourt]
- Added a script `bin/search_replace` to search and replace in ODT files via CLI.
  [sdelcourt]
- Added some documentation about search and replace feature.
  [aduchene]
- Added `portal` to the default generation context.
  [gbastien]
- Fix style update temporary file directory didn't use CUSTOM_TMP.
  [odelaere]
- Ensure CUSTOM_TMP directory exists before rendering a document.
  [odelaere]

3.21 (2021-04-20)
-----------------

- Added a view to check up every POD templates `@@check-pod-templates`.
  [odelaere]
- Adapted the `@@check-pod-templates` way to `find_pod_templates` to take into
  account current context.  This way, we may check pod templates on a
  particular folder.
  [gbastien]
- Corrected domain
  [sgeulette]
- Don't check by default selection column in dg-templates-listing to avoid
  user error with batch buttons
  [sgeulette]

3.20 (2021-03-09)
-----------------

- Added CSV file support.
  [odelaere]
- Reworked icons to use svg instead of png and have a more consistent set.
  [odelaere]
- Add generated title parameter for PersistentDocumentGenerationView.
  [jjaumotte]

3.19 (2020-10-07)
-----------------

- Prevent "AttributeError" by not render actionpanel's external edit when there is another pod template to use
  [fngaha]
- Use the same default values between controlpanel schema and registry records.
  [odelaere]

3.18 (2020-08-18)
-----------------

- Updated file_representation to be compliant with zopeedit < 1.0 (current windows exe) and zopeedit >= 1.0.
  [sgeulette]
- Fixed bug when rendering an empty RichTextATFieldRenderer.
  [odelaere]
- Pass `kwargs` given to `DocumentGenerationView.__call__`,
  to submethods `generate_and_download_doc`,  `_generate_doc`,
  `_recursive_generate_doc` then `_render_document` so it is possible to pass
  `raiseOnError=False` parameter to `_render_document`.
  [gbastien]

3.17 (2020-06-24)
-----------------

- In `AT` renderer and helper, use field accessor instead `get()` method
  to get the stored value.
  [gbastien]

3.16 (2020-05-25)
-----------------

- Fix `RuntimeError: set changed size during iteration` error in get_children_pod_template() method.
  [sdelcourt]

3.15 (2020-05-19)
-----------------

- Improve integration of stream parameter for Appy, this allow to explicitly set the value to `False`.
  The default value remain `auto`.
  [mpeeters]
- Added Transifex.net service integration to manage the translation process.
  [macagua]
- Added Spanish translation.
  [macagua]
- Updated the i18n support.
  [macagua]

3.14 (2020-04-23)
-----------------

- Updated get_value to test if attribute exist on object.
  [sgeulette]
- Added possibility to pass `kwargs` to `DocumentGenerationView.__call__`,
  then submethods `generate_and_download_doc` and `_generate_doc`.
  [gbastien]

3.13 (2020-03-04)
-----------------

- Improved dg-templates-listing.
  [sgeulette]

3.12 (2020-02-06)
-----------------

- Added parameter `bypass_check_permission=False` to method
  `DocumentGenerationHelperView.display`, when True it bypasses read permission
  check, this is useful when context is an object that was get unrestrictively.
  [gbastien]

3.11 (2019-12-03)
-----------------

- Casted dynamically variable.
  [sgeulette]
- Added Plone 5.2 support
  [odelaere]
- Fixed RichTextATFieldRenderer default render of empty value.
  [sdelcourt]

3.10 (2019-11-26)
-----------------

- Fix test `test_get_file_is_unrestricted` by removing permission `View`
  to every roles.
  [gbastien]
- Moved the `get_all_pod_templates/get_generable_templates` logic outside the
  `DocumentGeneratorLinksViewlet` so it is easier to override.
  It is now an `IGenerablePODTemplates` adapter.
  [gbastien]

3.9 (2019-10-14)
----------------

- context_var returns default when value is None.
  [sgeulette]
- While reusing another POD template odt_file, make sure get_file will have
  access to the POD template holding the odt_file by getting it unrestricted.
  [gbastien]
- Fixed test `TestDexterityHelperViewMethods.test_display_date_method` as
  translation format changed starting with `Plone 5.1.x`.
  [gbastien]

3.8 (2019-08-13)
----------------

- Added custom temporary directory 'CUSTOM_TMP' environment variable
  for appy's workspace.
  [odelaere]
- Added ability to use an external server process for LibreOffice.
  [odelaere]
- Make `DocumentGeneratorLinksViewlet.get_links_info` return also the
  `pod_template object` in addition to `pod_template UID`.
  [gbastien]

3.7 (2019-05-16)
----------------

- Pass parameters `helper_view` and `pod_template` to
  `DocumentGenerationView.get_base_generation_context` so it is available
  if necessary.
  [gbastien]
- Display every POD templates that implement IConfigurablePODTemplate in the
  `collective.documentgenerator.ExistingPODTemplate` vocabulary.
  [gbastien]
- Moved files CHANGES.rst, README.rst and CONTRIBUTORS.rst from docs/ to root.
  [gbastien]

3.6 (2019-03-27)
----------------

- Ordered generation links by position in parent.
  [sgeulette]

3.5 (2019-03-08)
----------------

- Made style not mandatory.
  [sgeulette]
- Added collective.fingerpointing support to know who generated which document in which format
  [odelaere]

3.4 (2018-12-18)
----------------

- On a Pod template, when displaying Pod templates that are using my odt_file,
  display the absolute_url next to the title.
  [gbastien]

3.3 (2018-10-02)
----------------

- Do not break if not allowed to remove tmp file, this is the case for example
  when LibreOffice user is not same as Zope instance user.
  [gbastien]
- Allow to override portal types and the displayed title in the list of templates to merge.
  [odelaere]
- Added generation context as parameter to mailing_list
  [sgeulette]
- Avoid calling mailing_list 2 times in MailingLoopPersistentDocumentGenerationView
  [sgeulette]
- Added update_oo_config function to update oo option following environment variable
  [sgeulette]

3.2 (2018-07-24)
----------------

- Mailing: include context variables from original template in mailing generation context.
  [sgeulette]
- pep8: sort import
  [sgeulette]

3.1 (2018-05-03)
----------------

- On a POD template, added possibility to reuse the `odt_file` of another
  POD template.
  [anuyens, odelaere, gbastien]
- Do not register the `batchactions` viewlet displayed in the
  `IBelowContentBody` viewlet using the `IBatchActionsMarker` but register it
  for a more specific interface `IBelowContentBodyBatchActionsMarker`.
  [gbastien]
- Override batch actions viewlet available method.
  [sgeulette]
- Added Column modifier management (new in appy > 0.9.11)
  [odelaere]

3.0.12 (2018-02-21)
-------------------

- Update renderer parameters: managePageStyles and resolveFields.
  [sgeulette]
- Removed rename_page_styles field from pod template schema.
  [sgeulette]

3.0.11 (2018-01-17)
-------------------

- Add hook to provides all helper view to be updated with
  appy renderer
  [sdelcourt]

3.0.10 (2018-01-06)
-------------------

- Use `edit_action_target` in view action column.
  [sgeulette]
- Do not use CSS to manage contenttype icon,
  we have an icon_epxr on the portal_types.
  [gbastien]
- Use collective.eeafaceted.batchactions, if present.
  Add a selection column and a batch transition button
  [sgeulette]
- Use portal type icon to display in table view.
  [sgeulette]

3.0.9 (2017-12-18)
------------------

- Added rename_page_styles field and used it as renderer parameter.
  [sgeulette]
- Added plone translations.
  [sgeulette]

3.0.8 (2017-12-11)
------------------

- Added style template on basic Template type.
  [sgeulette]

3.0.7 (2017-12-04)
------------------

- Include batch in templates listing.
  [sgeulette]
- Corrected encoding error in date display
  [sgeulette]

3.0.6 (2017-11-28)
------------------

- Corrected collection template
  [sgeulette]
- Fix bug in styles update
  [sgeulette]

3.0.5 (2017-11-16)
------------------

- Corrected actions_panel call.
  [sgeulette]
- Added method `get_file_binary` to helper view, it returns the binary data of
  a file object, managing fact that object is a Dexterity or Archetypes file.
  [gbastien]
- Require `future>=0.14.0` to be able to use the `html` package.
  [gbastien]
- Fixed tests to work in french (this validates translations, especially of
  date methods).  Fixed tests to work in both Plone 4.3.x and Plone 5.x
  [gbastien]
- Upgraded pip on travis. Don't use bootstrap. Upgrade setuptools.
  [sgeulette]

3.0.4 (2017-11-10)
------------------

- Manage translation of week and month in date display
  [sgeulette]
- Add download column in list template
  [sgeulette]

3.0.3 (2017-10-30)
------------------

- Added view to reset style_modification_md5 (so template is considered as not modified).
  [sgeulette]
- Added view to list all templates
  [sgeulette]
- Added field `pod_template.optimize_tables` that makes it possible to
  `use global value/force enable/force disable` table optimization for a single
  POD template
  [gbastien]

3.0.2 (2017-10-06)
------------------

- Corrected soffice script for ubuntu 16.04.
  [sgeulette]
- Tests now rely on imio.helpers to import testing_logger when necessary to
  have logging on Travis CI for example.
  [gbastien]
- Corrected tests following changes in 3.0.1
  [sgeulette]
- Added display_phone method
  [sgeulette]

3.0.1 (2017-09-20)
------------------

- Use pod template title as default title for persisted documents.
  [sdelcourt]

3.0.0 (2017-09-20)
------------------

- Added locking behaviors on types.
  [sgeulette]
- Added MailingLoopTemplate type and mailing_loop_template field on ConfigurablePODTemplate.
  [sgeulette]
- Added 'mailing-loop-persistent-document-generation' view to manage mailing loop generation
  [sgeulette]
- Added helper method to manage context
  [sgeulette]
- Added helper method to check if mailed data have to be replaced during rendering
  [sgeulette]
- Moved filename generation to `DocumentGenerationView._get_filename` method so
  it is easy to override and to call for specific usecases.
  [gbastien]
- Moved persistent doc title generation moved to `DocumentGenerationView._get_title` method
  so it is easy to override and to call for specific usecases.
  [sgeulette]
- Do not break if temporary file can not be deleted.
  [gbastien]

2.0.8 (2017-08-02)
------------------

- Add default value for 'pod_template' and 'output_format' attributes of the generation view.
  [sdelcourt]

2.0.7 (2017-07-25)
------------------

- Check field_name existence following parameter: do not by default and fail if not exist
  [sgeulette]

2.0.6 (2017-07-24)
------------------

- Corrected migration step.
  [sgeulette]
- Check z3c.form.interfaces.NO_VALUE in get_value
  [sgeulette]

2.0.5 (2017-07-19)
------------------

- Added easy way to complete infos returned by
  `DocumentGeneratorLinksViewlet.get_links_info`.
  [gbastien]
- Do `pod_template` and `output_format` directly available on the
  `@@generation-view` and on the `@@document_generation_helper_view` via
  `self.pod_template` and `self.output_format`.
  [gbastien]
- Added migration to change portal types icons
  [sgeulette]

2.0.4 (2017-07-12)
------------------

- Start and end libreoffice during test.
  [sgeulette]
- Check if field_name from a behavior is present
  [sgeulette]

2.0.3 (2017-06-22)
------------------

- When generating filename, remove special characters from unicoded title to
  avoid it being turned to ascii numbers (special character `\u2013` is turned
  to `2013` in the produced filename).
  [gbastien]

2.0.2 (2017-06-22)
------------------

- Make sure we do not have `-` character in the filename that is cropped because
  it is handled weridly by `cropName` and cut name if `-` encountered.
  [gbastien]

2.0.1 (2017-06-21)
------------------

- Use `plone.i18n.normalizer.interfaces.IFileNameNormalizer` to normalize
  filename because `Products.CMFPlone.utils.normalizeString` uses
  `IIDNormalizer` for which max_length is fixed to 50.  Here max_length is fixed
  to 1023 so we may manage very long element title to generate filename.
  [gbastien]
- Manage style_modification_md5 field to detect if the template has been modified by a user.
  Updated update_templates method to use it.
  [sgeulette]

2.0.0 (2017-06-21)
------------------

- Make package compatible with both Plone4 and Plone5 at the same time :
  - Created Plone version specific profiles (plone4 and plone5);
  - Removed support for AT in the Plone5 version;
  - Adapted demo profile to work with Dexterity (plone.app.contenttypes).
  [gbastien]
- Run every tests in 'french' so we are sure that translations work everywhere.
  [gbastien]
- Added parameter `raiseOnError_for_non_managers` to be able to raise a Plone
  error instead generating the document where errors are included.  This avoid
  generating a document containing errors where some data may be lost like in
  PDF where errors are not viewable or even in ODT when users do not understand
  that errors in comments are important.  This will enable the `raiseOnError`
  parameter of appy.pod.renderer.Renderer.
  [gbastien]
- Call styles update at pod template creation
  [sgeulette]
- Raise exception when style update fails
  [sgeulette]
- Corrected mimetype of demo templates. Update style only for odt.
  [sgeulette]

1.0.6 (2017-05-31)
------------------

- Added do_rendering field in IMergeTemplatesRowSchema schema. If selected, the subtemplate is rendered first
  and the path is the value in context dict. Else the subtemplate object is the value in context dict.
  [sgeulette]
- Return generation context from rendering methods to use it in tests
  [sgeulette]
- Added unit testing for do_rendering feature
  [odelaere, sgeulette]
- Improved validation for ConfigurablePodTemplate
  [odelaere]
- Added validation to avoid generation context corruption at generation time
  [odelaere]
- Manage boolean values in context variables
  [sgeulette]
- Removed meta_type attribute causing error when pasting
  [sgeulette]
- Do not lose filename when updating a Pod template with it's styles template
  [gbastien]
- Ease override of term title of the `collective.documentgenerator.StyleTemplates` vocabulary
  [gbastien]
- Define a correct portal_type description for StyleTmplate so it is displayed in the folder_factories
  [gbastien]
- Modified generated filename, before it was POD template title and format, now it it build using POD template title,
  context title and format
  [gbastien]

1.0.5 (2017-03-10)
------------------

- Added parameter 'html' in display_html_as_text witch is mutually exclusive with 'field_name' to add ability to use a date field or an html formatted string with display_html_as_text.
  [odelaere]
- Added parameter 'text' in display_text_as_html witch is mutually exclusive with 'field_name' to add ability to use a date field or a string with display_text_as_html.
  [odelaere]
- Added parameter 'date' in display_date witch is mutually exclusive with 'field_name' to add ability to use a date field or a date object with display_date.
  [odelaere]
- Added parameter `optimize_tables` to be able to use the `optimalColumnWidths`
  functionnality of appy.pod.
  [gbastien]

1.0.4 (2017-02-14)
------------------

- Update styles templates only with force param.
  [sgeulette]
- Make sure `current_md5` is stored as unicode or it fails to validate when
  manually validating stored data.
  [gbastien]

1.0.3 (2017-02-10)
------------------

- Added utils method to update templates.
  [sgeulette]

1.0.2 (2017-02-07)
------------------

- Fix widget for fields `IConfigurablePODTemplate.pod_formats` and
  `IConfigurablePODTemplate.pod_portal_types` to avoid override by another
  package like it is the case when using `collective.z3cform.select2`.
  Use CheckBoxWidget for `IConfigurablePODTemplate.pod_portal_types` to ease
  selection when displaying several elements.
  [gbastien]
- Set appy renderer on view element stored in generation context.
  Useful when view has been overrided in generation context getter.
  [sgeulette]

1.0.1 (2017-01-13)
------------------

- Removed useless parameter in getDGHV method.
  [sgeulette]

1.0.0 (2017-01-12)
------------------

- Raise NotImplementedError in not implemented methods.
  [sgeulette]
- Rename display_html by render_xhtml and display_text by display_text_as_html.
  [sgeulette]
- Add display_html_as_text
  [sgeulette]
- Add get_state
  [sgeulette]
- Add context_var method to safely get an optional context variable
  [sgeulette]

0.14 (2016-12-19)
-----------------

- Use correct name for entry to documentgenerator configuration
  in the control panel.
  [gbastien]
- Added formats `.doc` and `.docx` to the demo template
  `test_template_multiple`.
  [gbastien]
- Set default value for oo_port and uno_path from environment variable
  [sgeulette]

0.13 (2016-12-09)
-----------------

- Validate path to python by importing `unohelper` instead importing
  `uno` because `uno` could have been installed using `pip install uno`
  but is not sufficient to generate the document.
  [gbastien]
- Added `.docx` format in which it is possible to generate template.
  [gbastien]
- Set oo_port from environment variable at install
  [sgeulette]

0.12 (2016-12-07)
-----------------

- Pass every parameters to DocumentGenerationHelperView.translate
  that zope.i18n.translate manages.
  [gbastien]
- Made context variable value not required
  [sgeulette]

0.11 (2016-11-22)
-----------------

- Replaced unrestrictedTraverse by getMultiAdapter.
  [sgeulette]
- Added context variables field on configurablepodtemplate, and validator.
  Added those variables in generation context.
  [sgeulette]
- Moved fr setting from default profile to testing
  [sgeulette]

0.10 (2016-10-05)
-----------------

- Use forceOoCall in renderer to call libreoffice to render b.e. table of contents in odt
  [sgeulette]
- Changed viewlet podtemplate search. Defined template in zcml.
  [sgeulette]
- Add content icons
  [sgeulette]
- Manage correctly datetime.date and datetime.datetime
  [sgeulette]
- Add display_widget method
  [sgeulette]
- Rename display_text to display_html (for rich text fields)
  [sgeulette]
- Add display_text for text fields to render intelligent html
  [sgeulette]
- Add method to get attribute value
  [sgeulette]
- Add method to get helper view on another object
  [sgeulette]
- Remove context parameter from helper methods to avoid changing context
  [sgeulette]
- Get generation view name from a method.
  [sgeulette]
- Use RadioFieldWidget for Bool field 'enabled' so it is displayed on the
  pod_template view when it is False.
  [gbastien]

0.9 (2016-06-22)
----------------

- Handle case of rendering value of single selection widget.
  [sdelcourt]

0.8 (2016-06-03)
----------------

- In `DocumentGenerationView._render_document`, pass `portal` as `imageResolver`
  to `appy.pod.renderer.Renderer` so private images can be accessed by
  LibreOffice in XHTML fields.
  [gbastien]

0.7 (2016-03-22)
----------------

- Pass `**kwargs` to DocumentGenerationView._render_document so it is possible to pass
  arbitrary parameters to appy.pod.renderer.Renderer that is called in _render_document
  and to which we also pass the `**kwargs`.
  This way, it is possible for example to turn `Renderer.raiseOnError` to True.
  [gbastien]
- Added meta_type for content_types `PODTemplate`, `ConfigurablePODTemplate`, `SubTemplate`
  and `StyleTemplate`, this way it can be used to filter out objectValues/objectIds.
  [gbastien]
- Added a validator on the configurablePODTemplates which check if the chosen generations
  formats are corrects with the kind of file provided.
  [boulch, DieKatze]

0.6 (2016-01-21)
----------------

- CSS fix, display POD templates in the viewlet using display: inline-block;
  instead of display: inline; so attached tags may be aligned on it.
  [gbastien]
- Added 'description' to the list of available data to display in the generationlinks viewlet.
  The POD template description is now displayed when hovering the POD template title.
  [gbastien]

0.5 (2015-12-02)
----------------

- Added `ConfigurablePODTemplateCondition._extra_expr_ctx` method so it is easy
  to extend the context of the ITALCondition expression without overriding
  the `evaluate` method.
  [gbastien]

0.4 (2015-12-02)
----------------

- Make sure to not query a `None` to ensure compatibility with ZCatalog 3.
  [gbastien]
- Take into account the `oo_port` paramater defined in the registry.
  [gbastien]

0.3 (2015-09-30)
----------------

- Extend the base helper view to do @@plone, @@plone_portal_state view available
  and added a method 'translate' to be able to translate a msgid in a given domain.
  [gbastien]
- Refactored the DocumentGenerationHelperView.display_date method to use
  toLocalizedDate and adapted AT and DX implementations.
  [gbastien]
- Refactor the generation view to pass the arguments `pod_template` and `output_format`
  directly to the view call or its methods.
  [gbastien, sdelcourt]

0.2 (2015-09-22)
----------------
- Renamed field `pod_portal_type` to `pod_portal_types` as this field
  is a multiselection field.
  [gbastien]
- Renamed `doc_uid` parameter used by the `document-generation` view to
  `template_uid`, more obvious, and makes it available in the viewlet
  link infos dict.
  [gbastien]
- Added field IConfigurablePODTemplate.pod_formats to be able to select the
  format we want to generate the POD template in.
  [gbastien]
- When evaluating the tal_condition on the template, pass extra_expr_ctx
  to the TAL expression so `context` and `here` become the element on which the TAL
  expression is actually evaluated instead of the pod_template and `template`
  is the pod_template
  [gbastien]

0.1 (2015-07-17)
----------------
- Initial release.
  [gbastien]

- ...

- Update bootstrap
  use https://raw.githubusercontent.com/buildout/buildout/master/bootstrap/bootstrap.py
  [fngaha]
            

Raw data

            {
    "_id": null,
    "home_page": "https://pypi.org/project/collective.documentgenerator",
    "name": "collective.documentgenerator",
    "maintainer": null,
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "keywords": "plone document generation generator odt word pdf libreoffice template",
    "author": "Simon Delcourt",
    "author_email": "simon.delcourt@imio.be",
    "download_url": "https://files.pythonhosted.org/packages/e7/ef/39760022456d40b765c3a7326ecd78fe3f0f40da029127e6066a7b7326d8/collective.documentgenerator-3.43.tar.gz",
    "platform": null,
    "description": ".. image:: https://github.com/collective/collective.documentgenerator/actions/workflows/python-package.yml/badge.svg?branch=master\n    :target: https://github.com/collective/collective.documentgenerator/actions/workflows/python-package.yml\n\n.. image:: https://coveralls.io/repos/collective/collective.documentgenerator/badge.svg?branch=master\n   :alt: Coveralls badge\n   :target: https://coveralls.io/r/collective/collective.documentgenerator?branch=master\n\n.. image:: https://img.shields.io/pypi/v/collective.documentgenerator.svg\n   :alt: PyPI badge\n   :target: https://pypi.org/project/collective.documentgenerator\n\n\n============================\ncollective.documentgenerator\n============================\n\n``collective.documentgenerator`` is an elegant product allowing to easily **produce office documents** based on dynamic templates.\n\nNew content types are used to store the different templates:\n\n* **style templates**, that can be common for other templates\n* **sub templates**, that can be used in other templates\n* **mailing loop templates**, that can be used by other templates to do a loop for mailing\n* **basic templates**\n* **advanced templates**, regarding configuration\n\nTemplates are created within `LibreOffice <https://www.libreoffice.org>`_ software.\n\nOutput formats are those that can be produced by LibreOffice:\n\n* odt and ods formats\n* doc, docx, xls, xlsx formats\n* pdf, csv, rtf\n\nYou can use a demo profile to easily test the product.\n\n\nTranslations\n------------\n\nThis product has been translated into\n\n- French.\n\n- Spanish.\n\nYou can contribute for any message missing or other new languages, join us at\n`Plone Collective Team <https://www.transifex.com/plone/plone-collective/>`_\ninto *Transifex.net* service with all world Plone translators community.\n\n\nInstallation\n============\n\nInstall ``collective.documentgenerator`` by adding it to your buildout:\n\n   [buildout]\n\n    ...\n\n    eggs =\n        collective.documentgenerator\n\n\nand then running \"bin/buildout\"\n\n\nUsage\n=====\n\n\n**How to add a new POD template?**\n----------------------------------\n\nIn your Plone site, you can add two sorts of main templates :\n\n- PODTemplate : composed of title, description and odt file to be uploaded\n- ConfigurablePODTemplate : adding configurable fields to basic template\n\n  * output formats selection\n  * portal types selection\n  * style template selection\n  * subtemplate selection\n  * TAL expression as condition (`behavior <https://github.com/collective/collective.behavior.talcondition>`_).\n  * enabling flag\n  * context variables list\n  * mailing loop template\n\nIf you want, you can organize your templates in one or more folder.\n\n\n**How to write the template ?**\n-------------------------------\n\nThe `appy framework <https://appyframe.work/tool/public>`_ is used to interpret the template and render it using the context.\n\nYou can find a `documentation <https://appyframe.work/13>`_ explaining the syntax that can be used.\n\nYou can do the following things:\n\n- use basic python expression to access context fields or methods\n- do an if... then... else...\n- do a loop for a paragraph, a section, a table, a row, a cell\n- transform xhtml to text\n\nBase helper methods can be used in templates and custom methods can be added.\n\n\n**How to generate a document?**\n-------------------------------\n\nA viewlet displays all the available PODTemplate and ConfigurablePODTemplate following the current context.\nClicking the template link will call the 'document-generation' view.\n\n- Calling 'document-generation' view\n\n  * render template and propose to download the generated document\n  * parameters: template UID and document type\n  * this is the default view used in the viewlet\n\n- Calling 'persistent-document-generation' view\n\n  * render template and create a file with the generated document\n  * parameters: template UID and document type\n\n- Calling 'mailing-loop-persistent-document-generation' view\n\n  * loop on persisted rendered document and create a file containing all documents\n  * parameters: document UID\n\n**Search and replace**\n----------------------\n\nDocumentation about the search and replace feature is here :\n`docs/search_replace.rst <https://github.com/collective/collective.documentgenerator/tree/master/docs/search_replace.rst>`_\n\n\n**Logging & Debugging**\n-----------------------\n\nYou can specify form request that will be logged using collective.fingerpointing by defining environment variable\n`DOCUMENTGENERATOR_LOG_PARAMETERS)` each parameter must be separated by a comma e.g. `param1,param2`\n\n\nPlone versions\n--------------\n\nIt is working and tested on Plone 4.3, Plone 5.0, 5.1 and 5.2 (Python2.7).\n\n\nContribute\n==========\n\n* `Source code @ GitHub <https://github.com/collective/collective.documentgenerator.git>`_\n* `Issues @ GitHub <https://github.com/collective/collective.documentgenerator/issues>`_\n* `Continuous Integration @ Travis CI <https://travis-ci.org/collective/collective.documentgenerator>`_\n* `Code Coverage @ Coveralls.io <https://coveralls.io/r/collective/collective.documentgenerator?branch=master>`_\n\n\nLicense\n=======\n\nThe project is licensed under the GPLv2.\n\n\nChangelog\n=========\n\n3.43 (2024-04-10)\n-----------------\n\n- Import `safe_encode` from `imio.pyutils` instead `imio.helpers`.\n  [gbastien]\n- Use has Plone versions constants (`HAS_PLONE_4`, `HAS_PLONE_5`, ...)\n  from `imio.helpers`.\n  [gbastien]\n\n3.42 (2024-02-12)\n-----------------\n\n- Translated again type icon title.\n  [gbastien]\n\n3.41 (2024-02-12)\n-----------------\n\n- Corrected typo.\n  [sgeulette]\n- In `TitleColumn`, use `typeInfo.Title()` instead translating `typeInfo.title`,\n  `Title()` do the same but manages special characters in the `title`.\n  [gbastien]\n\n3.40 (2023-08-01)\n-----------------\n\n- Add `DOCUMENTGENERATOR_LOG_PARAMETERS` environment variable that can be used to log request form parameters with\n  collective.fingerpointing.\n  [mpeeters]\n\n3.39 (2023-06-26)\n-----------------\n\n- Removed `utils.safe_encode`, imported it from `imio.helpers.content`.\n  [gbastien]\n\n3.38 (2022-12-12)\n-----------------\n\n- Added missing upgrade step after registry modification (`force_default_page_style_for_mailing`) in 3.36.\n  [sgeulette]\n\n3.37 (2022-10-27)\n-----------------\n\n- Bugfix: page style check now handle case of POD template without mailing template\n  attribute.\n  [sdelcourt]\n\n3.36 (2022-10-21)\n-----------------\n\n- Add a new parameter `force_default_page_style_for_mailing` to the registry.\n  If set to True, apply automatically a default page style to mailing templates.\n  [sdelcourt]\n- Order templates directories by title in `dg-templates-listing` view.\n  [sgeulette]\n- Improved `DXDocumentGenerationHelperView.get_value` by adding optional obj parameter.\n  [sgeulette]\n\n3.35 (2022-08-26)\n-----------------\n\n- Group link by template title.\n  [odelaere]\n- Added 'title' attribute to generation link.\n  [odelaere]\n- Aliased import to avoid confusion.\n  [sgeulette]\n- CSS for generationlinks so it may be adapted more easily.\n  [gbastien]\n\n3.34 (2022-06-21)\n-----------------\n\n- Stored `template_uid` on a persistent generated document to know which template has been used.\n  [sgeulette]\n\n3.33 (2022-06-14)\n-----------------\n\n- Added character escaping to avoid xss in `TemplatesTable`\n  [sgeulette]\n- In `utils.update_oo_config_after_bigbang` don't fail instance start up if\n  `update_oo_config` raises an exception.\n  [odelaere]\n\n3.32 (2022-06-02)\n-----------------\n\n- Added upgrade step to `14` that will add the `oo_port_list` parameter to the registry.\n  [gbastien]\n\n3.31 (2022-06-01)\n-----------------\n\n- Use appy to load balance on multiple LO server.\n  [odelaere]\n\n3.30 (2022-05-06)\n-----------------\n\n- Added `iterable_in_columns` (for labels document).\n  [sgeulette]\n- Added `get_relations` in dexterity\n  [sgeulette]\n- Use Appy to search and replace in POD templates pod expressions.\n  [aduchene]\n- .ods POD Templates are now usable with search and replace.\n  [aduchene]\n- Make sure tmp directory is unique when searching and replacing.\n  [aduchene]\n- Updated readme\n  [Arhell]\n\n3.29 (2022-04-15)\n-----------------\n\n- Method update_oo_config updates all the registry entries for libreoffice server.\n  [odelaere]\n- Added subscriber to update oo config on process start.\n  [odelaere]\n\n3.28 (2022-01-14)\n-----------------\n\n- Added helper `ConfigurablePODTemplate.get_filename` to easily get file filename.\n  [gbastien]\n\n3.27 (2021-12-06)\n-----------------\n\n- Updated metadata version.\n  [sgeulette]\n\n3.26 (2021-11-08)\n-----------------\n\n- Clean notes when creating/editing a `PODTemplate` this way the `search&replace`\n  functionnality works as expected:\n\n  - Added `utils.clean_notes`;\n  - Clean notes is only done if `odt_file` changed and file is updated only if\n    something was cleaned;\n  - Moved function `create_temporary_file` from `events.styles_events` to `utils`.\n\n  [gbastien]\n\n3.25 (2021-09-23)\n-----------------\n\n- Use wrapped context of ProxyObject for __unicode__ method.\n  Revert __repr__ to default implementation.\n  [sdelcourt]\n\n3.24 (2021-09-23)\n-----------------\n\n- Require `beautifulsoup4<4.10` in `setup.py` as starting from 4.10.0,\n  `beautifulsoup4` is no more compatible with `Python2`.\n  [gbastien]\n- Pass parameter `html=True` when calling `Renderer` so content is considered\n  as html when using `xhtml` function in POD template, some pre-processing is\n  applied to ensure that given content is valid xhtml.\n  [gbastien]\n- Use wrapped context of ProxyObject for __repr__ and __str__ methods.\n  [sdelcourt]\n\n3.23 (2021-08-09)\n-----------------\n\n- Allow templates selection on the search result before applying the replace.\n  [sdelcourt]\n\n3.22 (2021-07-16)\n-----------------\n\n- Added a view to search and replace in POD templates pod expressions `@@collective.documentgenerator-controlpanel`.\n  [aduchene]\n- Added an helper class `SearchAndReplacePODTemplates` that can search and replace in POD templates pod expressions.\n  [aduchene]\n- Added tests on search and replace feature.\n  [aduchene]\n- Added utility classes to search and replace pod expressions in ODT files.\n  [sdelcourt]\n- Added a script `bin/search_replace` to search and replace in ODT files via CLI.\n  [sdelcourt]\n- Added some documentation about search and replace feature.\n  [aduchene]\n- Added `portal` to the default generation context.\n  [gbastien]\n- Fix style update temporary file directory didn't use CUSTOM_TMP.\n  [odelaere]\n- Ensure CUSTOM_TMP directory exists before rendering a document.\n  [odelaere]\n\n3.21 (2021-04-20)\n-----------------\n\n- Added a view to check up every POD templates `@@check-pod-templates`.\n  [odelaere]\n- Adapted the `@@check-pod-templates` way to `find_pod_templates` to take into\n  account current context.  This way, we may check pod templates on a\n  particular folder.\n  [gbastien]\n- Corrected domain\n  [sgeulette]\n- Don't check by default selection column in dg-templates-listing to avoid\n  user error with batch buttons\n  [sgeulette]\n\n3.20 (2021-03-09)\n-----------------\n\n- Added CSV file support.\n  [odelaere]\n- Reworked icons to use svg instead of png and have a more consistent set.\n  [odelaere]\n- Add generated title parameter for PersistentDocumentGenerationView.\n  [jjaumotte]\n\n3.19 (2020-10-07)\n-----------------\n\n- Prevent \"AttributeError\" by not render actionpanel's external edit when there is another pod template to use\n  [fngaha]\n- Use the same default values between controlpanel schema and registry records.\n  [odelaere]\n\n3.18 (2020-08-18)\n-----------------\n\n- Updated file_representation to be compliant with zopeedit < 1.0 (current windows exe) and zopeedit >= 1.0.\n  [sgeulette]\n- Fixed bug when rendering an empty RichTextATFieldRenderer.\n  [odelaere]\n- Pass `kwargs` given to `DocumentGenerationView.__call__`,\n  to submethods `generate_and_download_doc`,  `_generate_doc`,\n  `_recursive_generate_doc` then `_render_document` so it is possible to pass\n  `raiseOnError=False` parameter to `_render_document`.\n  [gbastien]\n\n3.17 (2020-06-24)\n-----------------\n\n- In `AT` renderer and helper, use field accessor instead `get()` method\n  to get the stored value.\n  [gbastien]\n\n3.16 (2020-05-25)\n-----------------\n\n- Fix `RuntimeError: set changed size during iteration` error in get_children_pod_template() method.\n  [sdelcourt]\n\n3.15 (2020-05-19)\n-----------------\n\n- Improve integration of stream parameter for Appy, this allow to explicitly set the value to `False`.\n  The default value remain `auto`.\n  [mpeeters]\n- Added Transifex.net service integration to manage the translation process.\n  [macagua]\n- Added Spanish translation.\n  [macagua]\n- Updated the i18n support.\n  [macagua]\n\n3.14 (2020-04-23)\n-----------------\n\n- Updated get_value to test if attribute exist on object.\n  [sgeulette]\n- Added possibility to pass `kwargs` to `DocumentGenerationView.__call__`,\n  then submethods `generate_and_download_doc` and `_generate_doc`.\n  [gbastien]\n\n3.13 (2020-03-04)\n-----------------\n\n- Improved dg-templates-listing.\n  [sgeulette]\n\n3.12 (2020-02-06)\n-----------------\n\n- Added parameter `bypass_check_permission=False` to method\n  `DocumentGenerationHelperView.display`, when True it bypasses read permission\n  check, this is useful when context is an object that was get unrestrictively.\n  [gbastien]\n\n3.11 (2019-12-03)\n-----------------\n\n- Casted dynamically variable.\n  [sgeulette]\n- Added Plone 5.2 support\n  [odelaere]\n- Fixed RichTextATFieldRenderer default render of empty value.\n  [sdelcourt]\n\n3.10 (2019-11-26)\n-----------------\n\n- Fix test `test_get_file_is_unrestricted` by removing permission `View`\n  to every roles.\n  [gbastien]\n- Moved the `get_all_pod_templates/get_generable_templates` logic outside the\n  `DocumentGeneratorLinksViewlet` so it is easier to override.\n  It is now an `IGenerablePODTemplates` adapter.\n  [gbastien]\n\n3.9 (2019-10-14)\n----------------\n\n- context_var returns default when value is None.\n  [sgeulette]\n- While reusing another POD template odt_file, make sure get_file will have\n  access to the POD template holding the odt_file by getting it unrestricted.\n  [gbastien]\n- Fixed test `TestDexterityHelperViewMethods.test_display_date_method` as\n  translation format changed starting with `Plone 5.1.x`.\n  [gbastien]\n\n3.8 (2019-08-13)\n----------------\n\n- Added custom temporary directory 'CUSTOM_TMP' environment variable\n  for appy's workspace.\n  [odelaere]\n- Added ability to use an external server process for LibreOffice.\n  [odelaere]\n- Make `DocumentGeneratorLinksViewlet.get_links_info` return also the\n  `pod_template object` in addition to `pod_template UID`.\n  [gbastien]\n\n3.7 (2019-05-16)\n----------------\n\n- Pass parameters `helper_view` and `pod_template` to\n  `DocumentGenerationView.get_base_generation_context` so it is available\n  if necessary.\n  [gbastien]\n- Display every POD templates that implement IConfigurablePODTemplate in the\n  `collective.documentgenerator.ExistingPODTemplate` vocabulary.\n  [gbastien]\n- Moved files CHANGES.rst, README.rst and CONTRIBUTORS.rst from docs/ to root.\n  [gbastien]\n\n3.6 (2019-03-27)\n----------------\n\n- Ordered generation links by position in parent.\n  [sgeulette]\n\n3.5 (2019-03-08)\n----------------\n\n- Made style not mandatory.\n  [sgeulette]\n- Added collective.fingerpointing support to know who generated which document in which format\n  [odelaere]\n\n3.4 (2018-12-18)\n----------------\n\n- On a Pod template, when displaying Pod templates that are using my odt_file,\n  display the absolute_url next to the title.\n  [gbastien]\n\n3.3 (2018-10-02)\n----------------\n\n- Do not break if not allowed to remove tmp file, this is the case for example\n  when LibreOffice user is not same as Zope instance user.\n  [gbastien]\n- Allow to override portal types and the displayed title in the list of templates to merge.\n  [odelaere]\n- Added generation context as parameter to mailing_list\n  [sgeulette]\n- Avoid calling mailing_list 2 times in MailingLoopPersistentDocumentGenerationView\n  [sgeulette]\n- Added update_oo_config function to update oo option following environment variable\n  [sgeulette]\n\n3.2 (2018-07-24)\n----------------\n\n- Mailing: include context variables from original template in mailing generation context.\n  [sgeulette]\n- pep8: sort import\n  [sgeulette]\n\n3.1 (2018-05-03)\n----------------\n\n- On a POD template, added possibility to reuse the `odt_file` of another\n  POD template.\n  [anuyens, odelaere, gbastien]\n- Do not register the `batchactions` viewlet displayed in the\n  `IBelowContentBody` viewlet using the `IBatchActionsMarker` but register it\n  for a more specific interface `IBelowContentBodyBatchActionsMarker`.\n  [gbastien]\n- Override batch actions viewlet available method.\n  [sgeulette]\n- Added Column modifier management (new in appy > 0.9.11)\n  [odelaere]\n\n3.0.12 (2018-02-21)\n-------------------\n\n- Update renderer parameters: managePageStyles and resolveFields.\n  [sgeulette]\n- Removed rename_page_styles field from pod template schema.\n  [sgeulette]\n\n3.0.11 (2018-01-17)\n-------------------\n\n- Add hook to provides all helper view to be updated with\n  appy renderer\n  [sdelcourt]\n\n3.0.10 (2018-01-06)\n-------------------\n\n- Use `edit_action_target` in view action column.\n  [sgeulette]\n- Do not use CSS to manage contenttype icon,\n  we have an icon_epxr on the portal_types.\n  [gbastien]\n- Use collective.eeafaceted.batchactions, if present.\n  Add a selection column and a batch transition button\n  [sgeulette]\n- Use portal type icon to display in table view.\n  [sgeulette]\n\n3.0.9 (2017-12-18)\n------------------\n\n- Added rename_page_styles field and used it as renderer parameter.\n  [sgeulette]\n- Added plone translations.\n  [sgeulette]\n\n3.0.8 (2017-12-11)\n------------------\n\n- Added style template on basic Template type.\n  [sgeulette]\n\n3.0.7 (2017-12-04)\n------------------\n\n- Include batch in templates listing.\n  [sgeulette]\n- Corrected encoding error in date display\n  [sgeulette]\n\n3.0.6 (2017-11-28)\n------------------\n\n- Corrected collection template\n  [sgeulette]\n- Fix bug in styles update\n  [sgeulette]\n\n3.0.5 (2017-11-16)\n------------------\n\n- Corrected actions_panel call.\n  [sgeulette]\n- Added method `get_file_binary` to helper view, it returns the binary data of\n  a file object, managing fact that object is a Dexterity or Archetypes file.\n  [gbastien]\n- Require `future>=0.14.0` to be able to use the `html` package.\n  [gbastien]\n- Fixed tests to work in french (this validates translations, especially of\n  date methods).  Fixed tests to work in both Plone 4.3.x and Plone 5.x\n  [gbastien]\n- Upgraded pip on travis. Don't use bootstrap. Upgrade setuptools.\n  [sgeulette]\n\n3.0.4 (2017-11-10)\n------------------\n\n- Manage translation of week and month in date display\n  [sgeulette]\n- Add download column in list template\n  [sgeulette]\n\n3.0.3 (2017-10-30)\n------------------\n\n- Added view to reset style_modification_md5 (so template is considered as not modified).\n  [sgeulette]\n- Added view to list all templates\n  [sgeulette]\n- Added field `pod_template.optimize_tables` that makes it possible to\n  `use global value/force enable/force disable` table optimization for a single\n  POD template\n  [gbastien]\n\n3.0.2 (2017-10-06)\n------------------\n\n- Corrected soffice script for ubuntu 16.04.\n  [sgeulette]\n- Tests now rely on imio.helpers to import testing_logger when necessary to\n  have logging on Travis CI for example.\n  [gbastien]\n- Corrected tests following changes in 3.0.1\n  [sgeulette]\n- Added display_phone method\n  [sgeulette]\n\n3.0.1 (2017-09-20)\n------------------\n\n- Use pod template title as default title for persisted documents.\n  [sdelcourt]\n\n3.0.0 (2017-09-20)\n------------------\n\n- Added locking behaviors on types.\n  [sgeulette]\n- Added MailingLoopTemplate type and mailing_loop_template field on ConfigurablePODTemplate.\n  [sgeulette]\n- Added 'mailing-loop-persistent-document-generation' view to manage mailing loop generation\n  [sgeulette]\n- Added helper method to manage context\n  [sgeulette]\n- Added helper method to check if mailed data have to be replaced during rendering\n  [sgeulette]\n- Moved filename generation to `DocumentGenerationView._get_filename` method so\n  it is easy to override and to call for specific usecases.\n  [gbastien]\n- Moved persistent doc title generation moved to `DocumentGenerationView._get_title` method\n  so it is easy to override and to call for specific usecases.\n  [sgeulette]\n- Do not break if temporary file can not be deleted.\n  [gbastien]\n\n2.0.8 (2017-08-02)\n------------------\n\n- Add default value for 'pod_template' and 'output_format' attributes of the generation view.\n  [sdelcourt]\n\n2.0.7 (2017-07-25)\n------------------\n\n- Check field_name existence following parameter: do not by default and fail if not exist\n  [sgeulette]\n\n2.0.6 (2017-07-24)\n------------------\n\n- Corrected migration step.\n  [sgeulette]\n- Check z3c.form.interfaces.NO_VALUE in get_value\n  [sgeulette]\n\n2.0.5 (2017-07-19)\n------------------\n\n- Added easy way to complete infos returned by\n  `DocumentGeneratorLinksViewlet.get_links_info`.\n  [gbastien]\n- Do `pod_template` and `output_format` directly available on the\n  `@@generation-view` and on the `@@document_generation_helper_view` via\n  `self.pod_template` and `self.output_format`.\n  [gbastien]\n- Added migration to change portal types icons\n  [sgeulette]\n\n2.0.4 (2017-07-12)\n------------------\n\n- Start and end libreoffice during test.\n  [sgeulette]\n- Check if field_name from a behavior is present\n  [sgeulette]\n\n2.0.3 (2017-06-22)\n------------------\n\n- When generating filename, remove special characters from unicoded title to\n  avoid it being turned to ascii numbers (special character `\\u2013` is turned\n  to `2013` in the produced filename).\n  [gbastien]\n\n2.0.2 (2017-06-22)\n------------------\n\n- Make sure we do not have `-` character in the filename that is cropped because\n  it is handled weridly by `cropName` and cut name if `-` encountered.\n  [gbastien]\n\n2.0.1 (2017-06-21)\n------------------\n\n- Use `plone.i18n.normalizer.interfaces.IFileNameNormalizer` to normalize\n  filename because `Products.CMFPlone.utils.normalizeString` uses\n  `IIDNormalizer` for which max_length is fixed to 50.  Here max_length is fixed\n  to 1023 so we may manage very long element title to generate filename.\n  [gbastien]\n- Manage style_modification_md5 field to detect if the template has been modified by a user.\n  Updated update_templates method to use it.\n  [sgeulette]\n\n2.0.0 (2017-06-21)\n------------------\n\n- Make package compatible with both Plone4 and Plone5 at the same time :\n  - Created Plone version specific profiles (plone4 and plone5);\n  - Removed support for AT in the Plone5 version;\n  - Adapted demo profile to work with Dexterity (plone.app.contenttypes).\n  [gbastien]\n- Run every tests in 'french' so we are sure that translations work everywhere.\n  [gbastien]\n- Added parameter `raiseOnError_for_non_managers` to be able to raise a Plone\n  error instead generating the document where errors are included.  This avoid\n  generating a document containing errors where some data may be lost like in\n  PDF where errors are not viewable or even in ODT when users do not understand\n  that errors in comments are important.  This will enable the `raiseOnError`\n  parameter of appy.pod.renderer.Renderer.\n  [gbastien]\n- Call styles update at pod template creation\n  [sgeulette]\n- Raise exception when style update fails\n  [sgeulette]\n- Corrected mimetype of demo templates. Update style only for odt.\n  [sgeulette]\n\n1.0.6 (2017-05-31)\n------------------\n\n- Added do_rendering field in IMergeTemplatesRowSchema schema. If selected, the subtemplate is rendered first\n  and the path is the value in context dict. Else the subtemplate object is the value in context dict.\n  [sgeulette]\n- Return generation context from rendering methods to use it in tests\n  [sgeulette]\n- Added unit testing for do_rendering feature\n  [odelaere, sgeulette]\n- Improved validation for ConfigurablePodTemplate\n  [odelaere]\n- Added validation to avoid generation context corruption at generation time\n  [odelaere]\n- Manage boolean values in context variables\n  [sgeulette]\n- Removed meta_type attribute causing error when pasting\n  [sgeulette]\n- Do not lose filename when updating a Pod template with it's styles template\n  [gbastien]\n- Ease override of term title of the `collective.documentgenerator.StyleTemplates` vocabulary\n  [gbastien]\n- Define a correct portal_type description for StyleTmplate so it is displayed in the folder_factories\n  [gbastien]\n- Modified generated filename, before it was POD template title and format, now it it build using POD template title,\n  context title and format\n  [gbastien]\n\n1.0.5 (2017-03-10)\n------------------\n\n- Added parameter 'html' in display_html_as_text witch is mutually exclusive with 'field_name' to add ability to use a date field or an html formatted string with display_html_as_text.\n  [odelaere]\n- Added parameter 'text' in display_text_as_html witch is mutually exclusive with 'field_name' to add ability to use a date field or a string with display_text_as_html.\n  [odelaere]\n- Added parameter 'date' in display_date witch is mutually exclusive with 'field_name' to add ability to use a date field or a date object with display_date.\n  [odelaere]\n- Added parameter `optimize_tables` to be able to use the `optimalColumnWidths`\n  functionnality of appy.pod.\n  [gbastien]\n\n1.0.4 (2017-02-14)\n------------------\n\n- Update styles templates only with force param.\n  [sgeulette]\n- Make sure `current_md5` is stored as unicode or it fails to validate when\n  manually validating stored data.\n  [gbastien]\n\n1.0.3 (2017-02-10)\n------------------\n\n- Added utils method to update templates.\n  [sgeulette]\n\n1.0.2 (2017-02-07)\n------------------\n\n- Fix widget for fields `IConfigurablePODTemplate.pod_formats` and\n  `IConfigurablePODTemplate.pod_portal_types` to avoid override by another\n  package like it is the case when using `collective.z3cform.select2`.\n  Use CheckBoxWidget for `IConfigurablePODTemplate.pod_portal_types` to ease\n  selection when displaying several elements.\n  [gbastien]\n- Set appy renderer on view element stored in generation context.\n  Useful when view has been overrided in generation context getter.\n  [sgeulette]\n\n1.0.1 (2017-01-13)\n------------------\n\n- Removed useless parameter in getDGHV method.\n  [sgeulette]\n\n1.0.0 (2017-01-12)\n------------------\n\n- Raise NotImplementedError in not implemented methods.\n  [sgeulette]\n- Rename display_html by render_xhtml and display_text by display_text_as_html.\n  [sgeulette]\n- Add display_html_as_text\n  [sgeulette]\n- Add get_state\n  [sgeulette]\n- Add context_var method to safely get an optional context variable\n  [sgeulette]\n\n0.14 (2016-12-19)\n-----------------\n\n- Use correct name for entry to documentgenerator configuration\n  in the control panel.\n  [gbastien]\n- Added formats `.doc` and `.docx` to the demo template\n  `test_template_multiple`.\n  [gbastien]\n- Set default value for oo_port and uno_path from environment variable\n  [sgeulette]\n\n0.13 (2016-12-09)\n-----------------\n\n- Validate path to python by importing `unohelper` instead importing\n  `uno` because `uno` could have been installed using `pip install uno`\n  but is not sufficient to generate the document.\n  [gbastien]\n- Added `.docx` format in which it is possible to generate template.\n  [gbastien]\n- Set oo_port from environment variable at install\n  [sgeulette]\n\n0.12 (2016-12-07)\n-----------------\n\n- Pass every parameters to DocumentGenerationHelperView.translate\n  that zope.i18n.translate manages.\n  [gbastien]\n- Made context variable value not required\n  [sgeulette]\n\n0.11 (2016-11-22)\n-----------------\n\n- Replaced unrestrictedTraverse by getMultiAdapter.\n  [sgeulette]\n- Added context variables field on configurablepodtemplate, and validator.\n  Added those variables in generation context.\n  [sgeulette]\n- Moved fr setting from default profile to testing\n  [sgeulette]\n\n0.10 (2016-10-05)\n-----------------\n\n- Use forceOoCall in renderer to call libreoffice to render b.e. table of contents in odt\n  [sgeulette]\n- Changed viewlet podtemplate search. Defined template in zcml.\n  [sgeulette]\n- Add content icons\n  [sgeulette]\n- Manage correctly datetime.date and datetime.datetime\n  [sgeulette]\n- Add display_widget method\n  [sgeulette]\n- Rename display_text to display_html (for rich text fields)\n  [sgeulette]\n- Add display_text for text fields to render intelligent html\n  [sgeulette]\n- Add method to get attribute value\n  [sgeulette]\n- Add method to get helper view on another object\n  [sgeulette]\n- Remove context parameter from helper methods to avoid changing context\n  [sgeulette]\n- Get generation view name from a method.\n  [sgeulette]\n- Use RadioFieldWidget for Bool field 'enabled' so it is displayed on the\n  pod_template view when it is False.\n  [gbastien]\n\n0.9 (2016-06-22)\n----------------\n\n- Handle case of rendering value of single selection widget.\n  [sdelcourt]\n\n0.8 (2016-06-03)\n----------------\n\n- In `DocumentGenerationView._render_document`, pass `portal` as `imageResolver`\n  to `appy.pod.renderer.Renderer` so private images can be accessed by\n  LibreOffice in XHTML fields.\n  [gbastien]\n\n0.7 (2016-03-22)\n----------------\n\n- Pass `**kwargs` to DocumentGenerationView._render_document so it is possible to pass\n  arbitrary parameters to appy.pod.renderer.Renderer that is called in _render_document\n  and to which we also pass the `**kwargs`.\n  This way, it is possible for example to turn `Renderer.raiseOnError` to True.\n  [gbastien]\n- Added meta_type for content_types `PODTemplate`, `ConfigurablePODTemplate`, `SubTemplate`\n  and `StyleTemplate`, this way it can be used to filter out objectValues/objectIds.\n  [gbastien]\n- Added a validator on the configurablePODTemplates which check if the chosen generations\n  formats are corrects with the kind of file provided.\n  [boulch, DieKatze]\n\n0.6 (2016-01-21)\n----------------\n\n- CSS fix, display POD templates in the viewlet using display: inline-block;\n  instead of display: inline; so attached tags may be aligned on it.\n  [gbastien]\n- Added 'description' to the list of available data to display in the generationlinks viewlet.\n  The POD template description is now displayed when hovering the POD template title.\n  [gbastien]\n\n0.5 (2015-12-02)\n----------------\n\n- Added `ConfigurablePODTemplateCondition._extra_expr_ctx` method so it is easy\n  to extend the context of the ITALCondition expression without overriding\n  the `evaluate` method.\n  [gbastien]\n\n0.4 (2015-12-02)\n----------------\n\n- Make sure to not query a `None` to ensure compatibility with ZCatalog 3.\n  [gbastien]\n- Take into account the `oo_port` paramater defined in the registry.\n  [gbastien]\n\n0.3 (2015-09-30)\n----------------\n\n- Extend the base helper view to do @@plone, @@plone_portal_state view available\n  and added a method 'translate' to be able to translate a msgid in a given domain.\n  [gbastien]\n- Refactored the DocumentGenerationHelperView.display_date method to use\n  toLocalizedDate and adapted AT and DX implementations.\n  [gbastien]\n- Refactor the generation view to pass the arguments `pod_template` and `output_format`\n  directly to the view call or its methods.\n  [gbastien, sdelcourt]\n\n0.2 (2015-09-22)\n----------------\n- Renamed field `pod_portal_type` to `pod_portal_types` as this field\n  is a multiselection field.\n  [gbastien]\n- Renamed `doc_uid` parameter used by the `document-generation` view to\n  `template_uid`, more obvious, and makes it available in the viewlet\n  link infos dict.\n  [gbastien]\n- Added field IConfigurablePODTemplate.pod_formats to be able to select the\n  format we want to generate the POD template in.\n  [gbastien]\n- When evaluating the tal_condition on the template, pass extra_expr_ctx\n  to the TAL expression so `context` and `here` become the element on which the TAL\n  expression is actually evaluated instead of the pod_template and `template`\n  is the pod_template\n  [gbastien]\n\n0.1 (2015-07-17)\n----------------\n- Initial release.\n  [gbastien]\n\n- ...\n\n- Update bootstrap\n  use https://raw.githubusercontent.com/buildout/buildout/master/bootstrap/bootstrap.py\n  [fngaha]",
    "bugtrack_url": null,
    "license": "GPL",
    "summary": "Desktop document generation (.odt, .pdf, .doc, ...) based on appy framework (https://appyframe.work/tool/public) and OpenOffice/LibreOffice",
    "version": "3.43",
    "project_urls": {
        "Homepage": "https://pypi.org/project/collective.documentgenerator"
    },
    "split_keywords": [
        "plone",
        "document",
        "generation",
        "generator",
        "odt",
        "word",
        "pdf",
        "libreoffice",
        "template"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e7ef39760022456d40b765c3a7326ecd78fe3f0f40da029127e6066a7b7326d8",
                "md5": "bee55fe801e5fc8d248412d545dc6f9e",
                "sha256": "01467744b23d97f5285f3967b21633a30c349c37769ec5c5e6d1d5f33387ab47"
            },
            "downloads": -1,
            "filename": "collective.documentgenerator-3.43.tar.gz",
            "has_sig": false,
            "md5_digest": "bee55fe801e5fc8d248412d545dc6f9e",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 694029,
            "upload_time": "2024-04-10T06:52:25",
            "upload_time_iso_8601": "2024-04-10T06:52:25.554655Z",
            "url": "https://files.pythonhosted.org/packages/e7/ef/39760022456d40b765c3a7326ecd78fe3f0f40da029127e6066a7b7326d8/collective.documentgenerator-3.43.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-04-10 06:52:25",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "collective.documentgenerator"
}
        
Elapsed time: 0.33318s