===========
CMFEditions
===========
CMFEditions provides versioning in Plone.
- It works out of the box.
- It's highly extensible for specific use cases.
.. contents:: Contents
Out Of The Box Experience
=========================
Versionable content items edit views now allows saving a version on save
(automatically or manually). The version history may be accessed quickly from
the view view.
Versionable content types also have an additional tab with version related
functionality:
- save new version
- preview an old version
- retrieve an old version (replacing the current state in the tree)
- diffing versions
A content panel allows configuring the versioning policy by content type:
- enable or disable versioning
- auto-versioning on save
- auto-versioning on retrieve
By default the contents of a folder is versioned independently of the folder.
This may be changed through the ZMI and for specific cases on python level.
The current strategy is to save everything of the content item (incl. security
information, workflow state, etc.). On retrieve some of these information are
filtered out. This policy may completely be changed depending on specific needs
(see modifiers below).
Extensibility
=============
CMFEditions was from the beginning developed with extensibility in mind.
A handful of tools provide the whole functionality:
- repository layer: This is the public main API. The repository layer
cares about recursive storing and retrieving of content items from/to
Zope 2's Object File System (OFS).
- archivist layer: It knows *how to clone* content items. The
archivist "is Mr. Pickle".
- modifiers: They're invoked by the archivist and know *what to clone*.
This the main customization point. A modifier knows about what
information on an object is a reference and if the referenced object
has to be versioned also.
- storage: Is responsible of storing content items versions in a
history. The current storage implementation is a ZODB storage (it
uses Zope Version Control Product from ZC). Other storages may be
written (svn, file based, xml based, etc.). The storage API is quite
simple and the storage implementation doesn't have to care about
reference stuff as this is already done by the upper layers.
- purge policy: The purge policy is called on every save operations
and has full control over the version to save and the whole history.
The current implementation may be configured to only hold the n
current versions by purging the older versions from the repository.
This functionality is by default disabled. It may be enabled through
the ZMI. You should take care when you're saving objects with a lot
of interrelations. Purging functionality is quite new!
Additional Documentation
========================
A couple of presentations and ReSt documents may be found in
documentation package that has to be downloaded separately (or the
``doc`` folder of CMFEditions).
The CMFEditions team also started adding `documentation in the download
area <http://plone.org/products/cmfeditions/documentation>` of plone.org.
You're welcome to help out.
Dependencies
============
CMFEditions is part of the Plone distribution and all dependencies are already
included. Please refer to the dependency information of Plone for any details.
Migrating from Older Versions of CMFEditions
============================================
We know there are severe problems when migrating from 1.0alpha3,
1.0alpha4 or trunk checkout from May 2006 and before.
Please `contact us <mailto:collective-versioning@lists.sourceforge.net>`
for assistance. We're interested in making migrations bullet proof.
Feedback
========
- Please `report bugs <https://github.com/plone/Products.CMFEditions/issues>` to the CMFEditions tracker on plone.org.
- For feedback and questions the developers may be contacted on the `mailing list <mailto:collective-versioning@lists.sourceforge.net>`.
Source Code
===========
Contributors please read the document `Process for Plone core's development <https://docs.plone.org/develop/coredev/docs/index.html>`_
Sources are at the `Plone code repository hosted at Github <https://github.com/plone/Products.CMFEditions>`_.
Credits & Sponsoring
====================
Several people and organizations have made CMFEditions possible:
See CREDITS.txt
Changelog
=========
.. You should *NOT* be adding new change log entries to this file.
You should create a file in the news directory instead.
For helpful instructions, please see:
https://github.com/plone/plone.releaser/blob/master/ADD-A-NEWS-ITEM.rst
.. towncrier release notes start
4.0.4 (2024-12-11)
------------------
Bug fixes:
- Fix "Can't pickle objects in acquisition wrappers." error in
`OMOutsideChildrensModifier` and `OMInsideChildrensModifier`. @davisagli (#26)
4.0.3 (2024-01-18)
------------------
Internal:
- Update configuration files.
[plone devs] (cfffba8c)
4.0.2 (2023-10-07)
------------------
Bug fixes:
- Allow principal in sys_metadata with ArchivistTool init (#101)
4.0.1 (2023-04-15)
------------------
Internal:
- Update configuration files.
[plone devs] (3333c742)
4.0.0 (2022-12-02)
------------------
Bug fixes:
- Final release for Plone 6.0.0 (#600)
4.0.0b3 (2022-10-03)
--------------------
Bug fixes:
- Fix object remains locked after version retrieved (#93)
4.0.0b2 (2022-09-19)
--------------------
Bug fixes:
- Only fire ObjectModifiedEvent once when an item is reverted to an old version. [davisagli] (#90)
4.0.0b1 (2022-07-21)
--------------------
Bug fixes:
- Replaced label 'Working Copy' with 'Current revision' [rristow] (#55)
- Do not depend on Zope2 but Zope and remove transitional dependencies.
[jensens] (#87)
- Fix deprecated imports and not depend on CMFPlone.
Removes also circular dependency.
[jensens] (#88)
- Fix test to work with updated CMFUid.
[davisagli] (#89)
4.0.0a3 (2022-01-19)
--------------------
Breaking changes:
- The VersionView class is deprecated because it contained just one method that is now part of the @@plone view
[ale-rt] (#84)
4.0.0a2 (2021-12-29)
--------------------
Breaking changes:
- Removed versioning_config.py and versioning_config_form.pt from skin.
Instead, you can change the versioning config in the ``@@content-controlpanel``.
[maurits] (#72)
- Removed migration code from version 1.0alpha3 to 1.0beta1 from 2006.
Removed Storage Migration Support.
This had code for creating a test hierarchy for migration tests.
[maurits] (#72)
- Removed unused versions_history.pt which defines a versions_history macro.
We do still have versions_history_form.
[maurits] (#72)
New features:
- Merged skin script ``checkUpToDate`` into ``versions_history_form`` view.
Merged ``can_diff`` view into ``versions_history_form`` view.
[maurits] (#71)
- Remove now empty CMFEditions skin layer in an upgrade step.
[maurits] (#71)
- Moved various items from from skin to a browser view:
``saveasnewversion``, ``revertversion``, ``diff_legend``, ``versions_history_form``, ``compare.css``.
[maurits] (#71)
Bug fixes:
- Removed version_diff.pt.
This template is deprecated. Use the @@history view instead.
[maurits] (#71)
- QA: black, isort, flake8, fix deprecation warnings, remove use of six, upgrade to Python 3.7-only syntax.
[maurits] (#80)
4.0.0a1 (2021-04-26)
--------------------
Breaking changes:
- Removed support for Archetypes, Zope 2 and Python 2.
Removed Archetypes-only modifiers: ``RetainATRefs``, ``NotRetainATRefs``, ``SkipBlobs``, ``CloneBlobs``.
Added upgrade step to remove these modifiers from the ``portal_modifier`` tool.
This is for Plone 6 only.
[maurits] (#74)
- Update for Plone 6 with Bootstrap markup
[petschki] (#79)
New features:
- Handle broken VersionPolicies and modifiers in a nicer way.
- ``ConditionalModifier.isApplicable``: return False when modifier is broken.
- ``portal_repository.listPolicies``: log and ignore Broken VersionPolicies.
[maurits] (#74)
- Barceloneta LTS support
[petschki] (#77)
3.3.4 (2020-04-23)
------------------
Bug fixes:
- Minor packaging updates. (#1)
3.3.3 (2019-08-29)
------------------
Bug fixes:
- Fix DeprecationWarning [jensens] (#71)
3.3.2 (2019-05-04)
------------------
Bug fixes:
- Fix release issue in 3.3.1
[esteele] (#69)
3.3.1 (2019-05-04)
------------------
Bug fixes:
- Avoid ResourceWarnings.
[gforcada] (#65)
- Made removing of versioning behaviors less strict (named vs dotted).
[iham] (#67)
3.3.0 (2018-11-06)
------------------
New features:
- Replaced usages of getObjSize with human_readable_size. (#60)
Bug fixes:
- Fix success() responses in controller actions browser views for AT types
(#62)
3.2.2 (2018-09-23)
------------------
Bug fixes:
- Fix Unauthorized error due to importing six inside Restricted Python
`Plone issue 2463 <https://github.com/plone/Products.CMFPlone/issues/2463>`_
[davilima6]
- Migrate Tests away from PloneTestCase
[pbauer]
- Do not run webdav_history.txt in py3 since it breaks tests (no webdav support in py3).
[pbauer]
- cleanup: isort/formatting/security decorators
[jensens]
- InitializeClass was moved to AccessControl.class_init - use it.
[jensens]
- setDefaultRoles is deprecated.
addPermission from AccessControl.Permission is instead used.
[jensens]
3.2.1 (2018-06-18)
------------------
Bug fixes:
- Test against plone.app.contenttypes instead of ATContentTypes.
[davisagli]
3.2.0 (2018-04-03)
------------------
New features:
- Allow disabling versioning per object.
`Plone issue 2341 <https://github.com/plone/Products.CMFPlone/issues/2341>`_
[tomgross]
Bug fixes:
- Make imports Python 3 compatible
[ale-rt, pbauer]
- Don't depend on ZODB version 3 directly
[tomgross]
3.1.1 (2018-02-05)
------------------
New features:
- Prepare for Python 2 / 3 compatibility
[davilima6]
3.1 (2017-03-31)
----------------
New features:
- Use the ``processQueue`` from the merged ``collective.indexing``. [gforcada]
3.0.1 (2017-02-12)
------------------
Bug fixes:
- Make tests run in Zope 4 (includes some cleanup).
[pbauer]
- Get rid of CMFFormController scripts
[tomgross]
3.0 (2016-12-05)
----------------
Breaking changes:
- Purge all old revisions of content about to be removed.
[tschorr]
For older changes, 2.2.23 and earlier, see ``docs/old-changelog.rst``.
Raw data
{
"_id": null,
"home_page": "https://pypi.org/project/Products.CMFEditions",
"name": "Products.CMFEditions",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "Versioning Plone",
"author": "CMFEditions contributors",
"author_email": "collective-versioning@lists.sourceforge.net",
"download_url": "https://files.pythonhosted.org/packages/e0/99/54498d40c3b910239db23445f3265b1b2113a7d66fec373495d533b8579a/products_cmfeditions-4.0.4.tar.gz",
"platform": null,
"description": "===========\nCMFEditions\n===========\n\n\nCMFEditions provides versioning in Plone.\n\n- It works out of the box.\n- It's highly extensible for specific use cases.\n\n.. contents:: Contents\n\nOut Of The Box Experience\n=========================\n\nVersionable content items edit views now allows saving a version on save\n(automatically or manually). The version history may be accessed quickly from\nthe view view.\n\nVersionable content types also have an additional tab with version related\nfunctionality:\n\n- save new version\n- preview an old version\n- retrieve an old version (replacing the current state in the tree)\n- diffing versions\n\nA content panel allows configuring the versioning policy by content type:\n\n- enable or disable versioning\n- auto-versioning on save\n- auto-versioning on retrieve\n\nBy default the contents of a folder is versioned independently of the folder.\nThis may be changed through the ZMI and for specific cases on python level.\n\nThe current strategy is to save everything of the content item (incl. security\ninformation, workflow state, etc.). On retrieve some of these information are\nfiltered out. This policy may completely be changed depending on specific needs\n(see modifiers below).\n\nExtensibility\n=============\n\nCMFEditions was from the beginning developed with extensibility in mind.\nA handful of tools provide the whole functionality:\n\n- repository layer: This is the public main API. The repository layer\n cares about recursive storing and retrieving of content items from/to\n Zope 2's Object File System (OFS).\n- archivist layer: It knows *how to clone* content items. The\n archivist \"is Mr. Pickle\".\n- modifiers: They're invoked by the archivist and know *what to clone*.\n This the main customization point. A modifier knows about what\n information on an object is a reference and if the referenced object\n has to be versioned also.\n- storage: Is responsible of storing content items versions in a\n history. The current storage implementation is a ZODB storage (it\n uses Zope Version Control Product from ZC). Other storages may be\n written (svn, file based, xml based, etc.). The storage API is quite\n simple and the storage implementation doesn't have to care about\n reference stuff as this is already done by the upper layers.\n- purge policy: The purge policy is called on every save operations\n and has full control over the version to save and the whole history.\n The current implementation may be configured to only hold the n\n current versions by purging the older versions from the repository.\n This functionality is by default disabled. It may be enabled through\n the ZMI. You should take care when you're saving objects with a lot\n of interrelations. Purging functionality is quite new!\n\n\nAdditional Documentation\n========================\n\nA couple of presentations and ReSt documents may be found in\ndocumentation package that has to be downloaded separately (or the\n``doc`` folder of CMFEditions).\n\nThe CMFEditions team also started adding `documentation in the download\narea <http://plone.org/products/cmfeditions/documentation>` of plone.org.\nYou're welcome to help out.\n\n\nDependencies\n============\n\nCMFEditions is part of the Plone distribution and all dependencies are already\nincluded. Please refer to the dependency information of Plone for any details.\n\n\nMigrating from Older Versions of CMFEditions\n============================================\n\nWe know there are severe problems when migrating from 1.0alpha3,\n1.0alpha4 or trunk checkout from May 2006 and before.\nPlease `contact us <mailto:collective-versioning@lists.sourceforge.net>`\nfor assistance. We're interested in making migrations bullet proof.\n\n\nFeedback\n========\n\n- Please `report bugs <https://github.com/plone/Products.CMFEditions/issues>` to the CMFEditions tracker on plone.org.\n- For feedback and questions the developers may be contacted on the `mailing list <mailto:collective-versioning@lists.sourceforge.net>`.\n\n\nSource Code\n===========\n\nContributors please read the document `Process for Plone core's development <https://docs.plone.org/develop/coredev/docs/index.html>`_\n\nSources are at the `Plone code repository hosted at Github <https://github.com/plone/Products.CMFEditions>`_.\n\n\nCredits & Sponsoring\n====================\n\nSeveral people and organizations have made CMFEditions possible:\n\n See CREDITS.txt\n\nChangelog\n=========\n\n.. You should *NOT* be adding new change log entries to this file.\n You should create a file in the news directory instead.\n For helpful instructions, please see:\n https://github.com/plone/plone.releaser/blob/master/ADD-A-NEWS-ITEM.rst\n\n.. towncrier release notes start\n\n4.0.4 (2024-12-11)\n------------------\n\nBug fixes:\n\n\n- Fix \"Can't pickle objects in acquisition wrappers.\" error in\n `OMOutsideChildrensModifier` and `OMInsideChildrensModifier`. @davisagli (#26)\n\n\n4.0.3 (2024-01-18)\n------------------\n\nInternal:\n\n\n- Update configuration files.\n [plone devs] (cfffba8c)\n\n\n4.0.2 (2023-10-07)\n------------------\n\nBug fixes:\n\n\n- Allow principal in sys_metadata with ArchivistTool init (#101)\n\n\n4.0.1 (2023-04-15)\n------------------\n\nInternal:\n\n\n- Update configuration files.\n [plone devs] (3333c742)\n\n\n4.0.0 (2022-12-02)\n------------------\n\nBug fixes:\n\n\n- Final release for Plone 6.0.0 (#600)\n\n\n4.0.0b3 (2022-10-03)\n--------------------\n\nBug fixes:\n\n\n- Fix object remains locked after version retrieved (#93)\n\n\n4.0.0b2 (2022-09-19)\n--------------------\n\nBug fixes:\n\n\n- Only fire ObjectModifiedEvent once when an item is reverted to an old version. [davisagli] (#90)\n\n4.0.0b1 (2022-07-21)\n--------------------\n\nBug fixes:\n\n\n- Replaced label 'Working Copy' with 'Current revision' [rristow] (#55)\n- Do not depend on Zope2 but Zope and remove transitional dependencies.\n [jensens] (#87)\n- Fix deprecated imports and not depend on CMFPlone.\n Removes also circular dependency.\n [jensens] (#88)\n- Fix test to work with updated CMFUid.\n [davisagli] (#89)\n\n\n4.0.0a3 (2022-01-19)\n--------------------\n\nBreaking changes:\n\n\n- The VersionView class is deprecated because it contained just one method that is now part of the @@plone view\n [ale-rt] (#84)\n\n\n4.0.0a2 (2021-12-29)\n--------------------\n\nBreaking changes:\n\n\n- Removed versioning_config.py and versioning_config_form.pt from skin.\n Instead, you can change the versioning config in the ``@@content-controlpanel``.\n [maurits] (#72)\n- Removed migration code from version 1.0alpha3 to 1.0beta1 from 2006.\n Removed Storage Migration Support.\n This had code for creating a test hierarchy for migration tests.\n [maurits] (#72)\n- Removed unused versions_history.pt which defines a versions_history macro.\n We do still have versions_history_form.\n [maurits] (#72)\n\n\nNew features:\n\n\n- Merged skin script ``checkUpToDate`` into ``versions_history_form`` view.\n Merged ``can_diff`` view into ``versions_history_form`` view.\n [maurits] (#71)\n- Remove now empty CMFEditions skin layer in an upgrade step.\n [maurits] (#71)\n- Moved various items from from skin to a browser view:\n ``saveasnewversion``, ``revertversion``, ``diff_legend``, ``versions_history_form``, ``compare.css``.\n [maurits] (#71)\n\n\nBug fixes:\n\n\n- Removed version_diff.pt.\n This template is deprecated. Use the @@history view instead.\n [maurits] (#71)\n- QA: black, isort, flake8, fix deprecation warnings, remove use of six, upgrade to Python 3.7-only syntax.\n [maurits] (#80)\n\n\n4.0.0a1 (2021-04-26)\n--------------------\n\nBreaking changes:\n\n\n- Removed support for Archetypes, Zope 2 and Python 2.\n Removed Archetypes-only modifiers: ``RetainATRefs``, ``NotRetainATRefs``, ``SkipBlobs``, ``CloneBlobs``.\n Added upgrade step to remove these modifiers from the ``portal_modifier`` tool.\n This is for Plone 6 only.\n [maurits] (#74)\n- Update for Plone 6 with Bootstrap markup\n [petschki] (#79)\n\n\nNew features:\n\n\n- Handle broken VersionPolicies and modifiers in a nicer way.\n\n - ``ConditionalModifier.isApplicable``: return False when modifier is broken.\n - ``portal_repository.listPolicies``: log and ignore Broken VersionPolicies.\n\n [maurits] (#74)\n- Barceloneta LTS support\n [petschki] (#77)\n\n\n3.3.4 (2020-04-23)\n------------------\n\nBug fixes:\n\n\n- Minor packaging updates. (#1)\n\n\n3.3.3 (2019-08-29)\n------------------\n\nBug fixes:\n\n\n- Fix DeprecationWarning [jensens] (#71)\n\n\n3.3.2 (2019-05-04)\n------------------\n\nBug fixes:\n\n\n- Fix release issue in 3.3.1\n [esteele] (#69)\n\n\n3.3.1 (2019-05-04)\n------------------\n\nBug fixes:\n\n\n- Avoid ResourceWarnings.\n [gforcada] (#65)\n- Made removing of versioning behaviors less strict (named vs dotted).\n [iham] (#67)\n\n\n3.3.0 (2018-11-06)\n------------------\n\nNew features:\n\n\n- Replaced usages of getObjSize with human_readable_size. (#60)\n\n\nBug fixes:\n\n\n- Fix success() responses in controller actions browser views for AT types\n (#62)\n\n\n3.2.2 (2018-09-23)\n------------------\n\nBug fixes:\n\n- Fix Unauthorized error due to importing six inside Restricted Python\n `Plone issue 2463 <https://github.com/plone/Products.CMFPlone/issues/2463>`_\n [davilima6]\n- Migrate Tests away from PloneTestCase\n [pbauer]\n\n- Do not run webdav_history.txt in py3 since it breaks tests (no webdav support in py3).\n [pbauer]\n\n- cleanup: isort/formatting/security decorators\n [jensens]\n\n- InitializeClass was moved to AccessControl.class_init - use it.\n [jensens]\n\n- setDefaultRoles is deprecated.\n addPermission from AccessControl.Permission is instead used.\n [jensens]\n\n\n3.2.1 (2018-06-18)\n------------------\n\nBug fixes:\n\n- Test against plone.app.contenttypes instead of ATContentTypes.\n [davisagli]\n\n\n3.2.0 (2018-04-03)\n------------------\n\nNew features:\n\n- Allow disabling versioning per object.\n `Plone issue 2341 <https://github.com/plone/Products.CMFPlone/issues/2341>`_\n [tomgross]\n\nBug fixes:\n\n- Make imports Python 3 compatible\n [ale-rt, pbauer]\n\n- Don't depend on ZODB version 3 directly\n [tomgross]\n\n3.1.1 (2018-02-05)\n------------------\n\nNew features:\n\n- Prepare for Python 2 / 3 compatibility\n [davilima6]\n\n\n3.1 (2017-03-31)\n----------------\n\nNew features:\n\n- Use the ``processQueue`` from the merged ``collective.indexing``. [gforcada]\n\n\n3.0.1 (2017-02-12)\n------------------\n\nBug fixes:\n\n- Make tests run in Zope 4 (includes some cleanup).\n [pbauer]\n\n- Get rid of CMFFormController scripts\n [tomgross]\n\n\n3.0 (2016-12-05)\n----------------\n\nBreaking changes:\n\n- Purge all old revisions of content about to be removed.\n [tschorr]\n\n\nFor older changes, 2.2.23 and earlier, see ``docs/old-changelog.rst``.\n",
"bugtrack_url": null,
"license": "GPL",
"summary": "Versioning for Plone",
"version": "4.0.4",
"project_urls": {
"Homepage": "https://pypi.org/project/Products.CMFEditions"
},
"split_keywords": [
"versioning",
"plone"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "b851ae0748d684be1fcb2841d312c8f1f478d206a57468435712ba5bf1e92d5f",
"md5": "352a8afe1fd25bf78eb72e61eeef24ad",
"sha256": "d1dfaa29ed13c96e7c85c0a5159e63e5eade5ef8a59e77169c17af8ee4fee7b4"
},
"downloads": -1,
"filename": "Products.CMFEditions-4.0.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "352a8afe1fd25bf78eb72e61eeef24ad",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 245376,
"upload_time": "2024-12-11T22:08:36",
"upload_time_iso_8601": "2024-12-11T22:08:36.370314Z",
"url": "https://files.pythonhosted.org/packages/b8/51/ae0748d684be1fcb2841d312c8f1f478d206a57468435712ba5bf1e92d5f/Products.CMFEditions-4.0.4-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e09954498d40c3b910239db23445f3265b1b2113a7d66fec373495d533b8579a",
"md5": "4c610e645980245abeeddd916b34c799",
"sha256": "59d0f511a78cb31d96252baf2b8d00c5f4bf03cc392c1352327c2f658e1ff9b9"
},
"downloads": -1,
"filename": "products_cmfeditions-4.0.4.tar.gz",
"has_sig": false,
"md5_digest": "4c610e645980245abeeddd916b34c799",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 1766570,
"upload_time": "2024-12-11T22:08:41",
"upload_time_iso_8601": "2024-12-11T22:08:41.602406Z",
"url": "https://files.pythonhosted.org/packages/e0/99/54498d40c3b910239db23445f3265b1b2113a7d66fec373495d533b8579a/products_cmfeditions-4.0.4.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-11 22:08:41",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "products.cmfeditions"
}