Introduction
============
The ``plone.app.lockingbehavior`` package provides a ``plone.locking`` integration
for dexterity.
Usage
-----
Just use the behavior ``plone.app.lockingbehavior.behaviors.ILocking`` in
your dexterity content type. Also check the condition of the "edit" action
of your type, it should check if the object is locked.
In your *profiles/default/types/YOURTYPE.xml* add the behavior and the
edit action::
<?xml version="1.0"?>
<object name="example.conference.presenter" meta_type="Dexterity FTI"
i18n:domain="example.conference" xmlns:i18n="http://xml.zope.org/namespaces/i18n">
<!-- enabled behaviors -->
<property name="behaviors">
<element value="plone.app.lockingbehavior.behaviors.ILocking" />
</property>
<action action_id="edit"
visible="True"
title="Edit"
category="object"
url_expr="string:${object_url}/edit"
condition_expr="not:object/@@plone_lock_info/is_locked_for_current_user|python:True">
<permission value="Modify portal content"/>
</action>
</object>
The ILocking behavior enables locking support for your content type. This adds
the ``ITTWLockable`` interface from ``plone.locking``. The locking viewlet
from ``plone.app.layout`` is also working for the dexterity content type.
More Information
----------------
* https://pypi.org/project/plone.locking
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
2.0.1 (2024-07-31)
------------------
Bug fixes:
- Remove setuptools fossils.
[maurits] (#72)
2.0.0 (2023-10-07)
------------------
Internal:
- Update configuration files.
[plone devs] (cfffba8c)
1.0.7 (2020-04-20)
------------------
Bug fixes:
- Minor packaging updates. (#1)
1.0.6 (2018-11-21)
------------------
Bug fixes:
- Cleanup project level files (setup.py, .travis-ci.yml...) [maurits]
[gforcada] (#2524)
1.0.5 (2017-02-12)
------------------
Bug fixes:
- Add coding header on python files.
[gforcada]
- Unskip test for Zope 4, as isolation problems are already fixed.
[thet]
1.0.4 (2016-05-02)
------------------
New:
- Add behavior short name.
[jensens]
1.0.3 (2016-02-20)
------------------
Fixes:
- Use a functional layer to resolve test isolation problems.
[gforcada]
- Refactor doctest to an integration test and skip it for Zope 4 due to isolation problems.
[pbauer]
- Changed i18n_domain to "plone".
Requires plone.app.locales 4.3.9 or higher.
[claytonc]
1.0.2 (2015-09-09)
------------------
- Remove superfluous 'for'.
[fulv]
- Fix tests: redirect was changed in commit e7367258.
[jone]
- If the content is locked, the redirect points to the default view and
not to the absolute_url of the object. It avoids image opening on redirect
[parruc]
1.0.1 (2011-12-06)
------------------
- Fix version requirement of plone.dexterity: 1.1 is compatible.
[jone]
1.0 (2011-11-27)
----------------
- Fixed problem: locks were not released when editing content and saving
it without changing anything. Fixed by using new IEditFinishedEvent instead
of IObjectModifiedEvent.
[jbaumann]
- Fixed problem which caused widget traversal to fail.
The edit form is now protected for non-anonymous user, since locking for
anyonmous users does not work anyway.
[jbaumann]
- Initial implementation
[jbaumann]
Raw data
{
"_id": null,
"home_page": "https://github.com/plone/plone.app.lockingbehavior/",
"name": "plone.app.lockingbehavior",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "dexterity locking behavior plone",
"author": "Plone Foundation",
"author_email": "mailto:dexterity-development@googlegroups.com",
"download_url": "https://files.pythonhosted.org/packages/ae/89/7940b608e79a57720b294b580d6b3600aa92ba468650d90707ffb60cb5af/plone_app_lockingbehavior-2.0.1.tar.gz",
"platform": null,
"description": "Introduction\n============\n\nThe ``plone.app.lockingbehavior`` package provides a ``plone.locking`` integration\nfor dexterity.\n\nUsage\n-----\n\nJust use the behavior ``plone.app.lockingbehavior.behaviors.ILocking`` in\nyour dexterity content type. Also check the condition of the \"edit\" action\nof your type, it should check if the object is locked.\n\nIn your *profiles/default/types/YOURTYPE.xml* add the behavior and the\nedit action::\n\n <?xml version=\"1.0\"?>\n <object name=\"example.conference.presenter\" meta_type=\"Dexterity FTI\"\n i18n:domain=\"example.conference\" xmlns:i18n=\"http://xml.zope.org/namespaces/i18n\">\n\n <!-- enabled behaviors -->\n <property name=\"behaviors\">\n <element value=\"plone.app.lockingbehavior.behaviors.ILocking\" />\n </property>\n\n <action action_id=\"edit\"\n visible=\"True\"\n title=\"Edit\"\n category=\"object\"\n url_expr=\"string:${object_url}/edit\"\n condition_expr=\"not:object/@@plone_lock_info/is_locked_for_current_user|python:True\">\n <permission value=\"Modify portal content\"/>\n </action>\n\n </object>\n\nThe ILocking behavior enables locking support for your content type. This adds\nthe ``ITTWLockable`` interface from ``plone.locking``. The locking viewlet\nfrom ``plone.app.layout`` is also working for the dexterity content type.\n\n\nMore Information\n----------------\n\n* https://pypi.org/project/plone.locking\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\n2.0.1 (2024-07-31)\n------------------\n\nBug fixes:\n\n\n- Remove setuptools fossils.\n [maurits] (#72)\n\n\n2.0.0 (2023-10-07)\n------------------\n\nInternal:\n\n\n- Update configuration files.\n [plone devs] (cfffba8c)\n\n\n1.0.7 (2020-04-20)\n------------------\n\nBug fixes:\n\n\n- Minor packaging updates. (#1)\n\n\n1.0.6 (2018-11-21)\n------------------\n\nBug fixes:\n\n\n- Cleanup project level files (setup.py, .travis-ci.yml...) [maurits]\n [gforcada] (#2524)\n\n\n1.0.5 (2017-02-12)\n------------------\n\nBug fixes:\n\n- Add coding header on python files.\n [gforcada]\n\n- Unskip test for Zope 4, as isolation problems are already fixed.\n [thet]\n\n\n1.0.4 (2016-05-02)\n------------------\n\nNew:\n\n- Add behavior short name.\n [jensens]\n\n\n1.0.3 (2016-02-20)\n------------------\n\nFixes:\n\n- Use a functional layer to resolve test isolation problems.\n [gforcada]\n\n- Refactor doctest to an integration test and skip it for Zope 4 due to isolation problems.\n [pbauer]\n\n- Changed i18n_domain to \"plone\".\n Requires plone.app.locales 4.3.9 or higher.\n [claytonc]\n\n\n1.0.2 (2015-09-09)\n------------------\n\n- Remove superfluous 'for'.\n [fulv]\n\n- Fix tests: redirect was changed in commit e7367258.\n [jone]\n\n- If the content is locked, the redirect points to the default view and\n not to the absolute_url of the object. It avoids image opening on redirect\n [parruc]\n\n\n1.0.1 (2011-12-06)\n------------------\n\n- Fix version requirement of plone.dexterity: 1.1 is compatible.\n [jone]\n\n\n1.0 (2011-11-27)\n----------------\n\n- Fixed problem: locks were not released when editing content and saving\n it without changing anything. Fixed by using new IEditFinishedEvent instead\n of IObjectModifiedEvent.\n [jbaumann]\n\n- Fixed problem which caused widget traversal to fail.\n The edit form is now protected for non-anonymous user, since locking for\n anyonmous users does not work anyway.\n [jbaumann]\n\n- Initial implementation\n [jbaumann]\n",
"bugtrack_url": null,
"license": "GPL version 2",
"summary": "Locking integration for dexterity content objects.",
"version": "2.0.1",
"project_urls": {
"Homepage": "https://github.com/plone/plone.app.lockingbehavior/"
},
"split_keywords": [
"dexterity",
"locking",
"behavior",
"plone"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "d3efc0df7708a74935d1ec81e24a0edb27909b0b78d9122836540f129fd05a33",
"md5": "f797e7d2a84e593e7b178688ab4ee89a",
"sha256": "32aad5640ce7c2efd8a90714f2acc5570578bfde2f8b4e0d8835f4c401fab5b9"
},
"downloads": -1,
"filename": "plone.app.lockingbehavior-2.0.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "f797e7d2a84e593e7b178688ab4ee89a",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 7796,
"upload_time": "2024-07-31T15:22:08",
"upload_time_iso_8601": "2024-07-31T15:22:08.137697Z",
"url": "https://files.pythonhosted.org/packages/d3/ef/c0df7708a74935d1ec81e24a0edb27909b0b78d9122836540f129fd05a33/plone.app.lockingbehavior-2.0.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ae897940b608e79a57720b294b580d6b3600aa92ba468650d90707ffb60cb5af",
"md5": "6f0263556488a35d2c7b7a5903c7c45f",
"sha256": "94178b0af7ec0b057badc7e2052e60cee61c096a314c893173a2648592a2d54d"
},
"downloads": -1,
"filename": "plone_app_lockingbehavior-2.0.1.tar.gz",
"has_sig": false,
"md5_digest": "6f0263556488a35d2c7b7a5903c7c45f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 14674,
"upload_time": "2024-07-31T15:22:09",
"upload_time_iso_8601": "2024-07-31T15:22:09.654367Z",
"url": "https://files.pythonhosted.org/packages/ae/89/7940b608e79a57720b294b580d6b3600aa92ba468650d90707ffb60cb5af/plone_app_lockingbehavior-2.0.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-07-31 15:22:09",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "plone",
"github_project": "plone.app.lockingbehavior",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"tox": true,
"lcname": "plone.app.lockingbehavior"
}