{ "info": { "author": "Martin Aspeli", "author_email": "optilude@gmail.com", "bugtrack_url": null, "classifiers": [ "Framework :: Plone", "Programming Language :: Python", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": ".. ATTENTION::\n This version works only on Plone 4 (Products.CMFCore 2.2,\n Products.DCWorkflow 2.2).\n If you want to use this package on Plone 3.3, please use the 1.0b1 version.\n\nIntroduction\n============\n\nThis product provides an alternative type of workflow definition. It works\nmuch like a regular workflow, but instead of granting permissions when \nentering a particular state, it takes them away from the selected roles.\n\nThe original use case was to support \"confidential\" content items via a\nsecondary workflow. The primary chain on the type has a publishing workflow\nthat will grant the View permission to various roles in various states. The\nsecondary 'confidentiality workflow' has two states: 'normal' and\n'confidential'. In the 'normal' state, no roles are selected for the View\npermission, and so the role mappings from the primary workflow apply. However,\nin the 'confidential' state, Anonymous, Authenticated and Member have been\nselected for the View permission and so these roles no longer have the ability\nto view the item.\n\nNote that the 'acquire' flag should almost always be off. The subtractive\nworkflow will set the acquire property in the same way as the default\nworkflow definition, but the results will probably not be what you expect,\nsince permissions that were \"turned off\" may well be acquired.\n\nAlso note that group-to-local role mappings are not \"subtractive\" and work\nexactly as in the standard workflow definition. In general, local roles are\nalways inherited in Zope (although Plone has an extension to turn this off).\n\nThe effects of multiple workflows\n----------------------------------\n\nThis product depends on an interpretation of the DCWorkflow permissions system\nas follows:\n\n* If there are multiple workflows in a chain, the item's state is determined\n by all the workflows, not just the last one.\n\n* In particular, the permission settings in all workflows in the chain apply\n at all times. Later workflows can override earlier ones.\n \nTo support this, an event handler is installed that will, when a transition\noccurs, \"re-play\" the updateRoleMappings() call for all workflows in the chain\n(there is an optimisation to avoid duplicate work if there's only one\nworkflow in the chain). It will do nothing if there are no subtractive\nworkflows in the chain, but as soon as there is one, you will get this\nbehaviour.\n\nThus, if you have a subtractive workflow as the second workflow in a\ntwo-workflow chain, and you invoke a transition from either the first or the\nsecond workflow, the permissions from both will apply, with the subtractive\nworkflow allowed to override the normal workflow.\n\nNote that this may affect existing multi-workflow chains, because by default,\nDCWorkflow does not \"re-play\" the role mappings in this way, letting instead\nthe most recently entered state determine the role mappings and fully\noverriding roles from the current state of any other workflows in the chain.\n\nChangelog\n=========\n\n2.0b1 (2010-09-11)\n------------------\n\n- The fact of setting dummy to the container generate an AddedObjectEvent, \n Products.CMFCore.CMFCatalogAware.handleContentishEvent catch the event and call wftool.notifyCreated(dummy).\n Products.CMFCore 2.2, in Products.CMFCore.WorkflowTool.notifyCreated, added a check,\n wf.notifyCreated is not called if it was previously called (workflow_history not empty).\n So in the tests, wftool.notifyCreated(dummy) does nothing after the dummy object has been set to the container.\n All the tests have been adapted and fixed.\n [vincentfretin]\n\n- Removed the explicit check \"event.transition is None, then return\" in\n react.object_transitioned subscriber.\n We want the roles mapping to be updated if the confidential state\n is the initial state.\n [vincentfretin]\n\n- Fixed workflow GenericSetup import, the _initDCWorkflow signature changed\n in Products.DCWorkflow 2.2 used by Plone 4. This version will not work\n anymore with Products.DCWorkflow 2.1 used by Plone 3.\n [vincentfretin]\n\n\n1.0b1 - 2009-04-03\n------------------\n\n- Initial release", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://pypi.python.org/pypi/collective.subtractiveworkflow", "keywords": "plone zope cmf workflow permissions", "license": "BSD", "maintainer": null, "maintainer_email": null, "name": "collective.subtractiveworkflow", "package_url": "https://pypi.org/project/collective.subtractiveworkflow/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/collective.subtractiveworkflow/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://pypi.python.org/pypi/collective.subtractiveworkflow" }, "release_url": "https://pypi.org/project/collective.subtractiveworkflow/2.0b1/", "requires_dist": null, "requires_python": null, "summary": "The DCWorkflow giveth and the SubtractiveWorkflow taketh away.", "version": "2.0b1" }, "last_serial": 788219, "releases": { "1.0b1": [ { "comment_text": "", "digests": { "md5": "14ac130e6fcf332d382327faa5e7ff91", "sha256": "4f2301aa1f1dff5a54d9b7b9e187b8d575aa93a6c04967b4ea2a89f69a6e821f" }, "downloads": -1, "filename": "collective.subtractiveworkflow-1.0b1.tar.gz", "has_sig": false, "md5_digest": "14ac130e6fcf332d382327faa5e7ff91", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18912, "upload_time": "2009-04-03T06:50:21", "url": "https://files.pythonhosted.org/packages/8a/bc/f72bfae08ffb2f328c8419b17597e1ac4b23ed642425c25ff894f0756e99/collective.subtractiveworkflow-1.0b1.tar.gz" } ], "2.0b1": [ { "comment_text": "", "digests": { "md5": "119d24b663a8fdcee6f1430615337581", "sha256": "346c3325e9a7a98ecce5506ae3488e67403fd8bec9e8659b73ae4fcad53ea64d" }, "downloads": -1, "filename": "collective.subtractiveworkflow-2.0b1.zip", "has_sig": false, "md5_digest": "119d24b663a8fdcee6f1430615337581", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30650, "upload_time": "2010-09-11T18:45:53", "url": "https://files.pythonhosted.org/packages/7d/93/799be9bce3945e5faf03610127143db0180ff46e8cca689ae8e76b378b04/collective.subtractiveworkflow-2.0b1.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "119d24b663a8fdcee6f1430615337581", "sha256": "346c3325e9a7a98ecce5506ae3488e67403fd8bec9e8659b73ae4fcad53ea64d" }, "downloads": -1, "filename": "collective.subtractiveworkflow-2.0b1.zip", "has_sig": false, "md5_digest": "119d24b663a8fdcee6f1430615337581", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30650, "upload_time": "2010-09-11T18:45:53", "url": "https://files.pythonhosted.org/packages/7d/93/799be9bce3945e5faf03610127143db0180ff46e8cca689ae8e76b378b04/collective.subtractiveworkflow-2.0b1.zip" } ] }