{ "info": { "author": "Vincent Fretin and Michael Launay", "author_email": "development@ecreall.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Web Environment", "Framework :: Plone", "Framework :: Plone :: 4.1", "Intended Audience :: Developers", "Intended Audience :: End Users/Desktop", "Intended Audience :: System Administrators", "License :: OSI Approved :: GNU General Public License (GPL)", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Topic :: Office/Business :: Groupware", "Topic :: Office/Business :: Office Suites", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": ".. contents::\n\n.. image:: https://secure.travis-ci.org/collective/ecreall.trashcan.png?branch=master\n :alt: Travis CI badge\n :target: http://travis-ci.org/collective/ecreall.trashcan\n\n.. image:: https://pypip.in/d/ecreall.trashcan/badge.png\n :alt: Downloads\n :target: https://pypi.python.org/pypi/ecreall.trashcan\n\nThis is an implementation of a trashcan for Plone.\nThis product monkey patch PloneCatalog.searchResults and PloneCatalog.__call__.\nSince version 1.2, this product works only on Plone >= 3.3 (included Plone 4.x).\n\nThis product adds a \"move to trashcan\"/\"restore\" actions and\na \"open trashcan\"/\"close trashcan\" links at the bottom of the page.\n\nWhen you move an object to the trashcan, the object is actually not moved anywhere.\nIt is just hidden from the search.\nWhat the action does is setting a marker interface ITrashed on the object\nand on sub-objects if the object trashed is a folder. It excludes the object\nfrom navigation too.\n\nTo see the trashed objects, you have to activate the trashcan mode with\nthe \"open trashcan\" link at the bottom of your page.\nYou can see it as a parallel world. You will see only trashed objects and the search\nnow search only on trashed content.\n\nIn this mode you can restore objects. You can't restore object if the parent is trashed.\nIn this case you have to cut and paste the object in a non trashed folder to restore it.\n\nWhen you are in trashcan mode, there is some verifications which takes place.\nYou can't paste an object in a trashed folder for example.\n\nTo come back to the normal mode, click on the \"close trashcan\" link at the bottom of the page.\nWhen trahscan mode is closed, it returns to the nearest parent not trashed.\n\nCode repository: https://svn.ecreall.com/public/ecreall.trashcan/\n\nIntegration with CacheFu\n------------------------\n\nIn the plone-containers rule, edit \"ETag Expression\", replace::\n\n python:request.get('__cp',None) is not None\n\nby::\n\n python:str(request.get('__cp',None) is not None) +'|'+ str(request.SESSION.get('trashcan', None))\n\nIntegration with plone.app.caching\n----------------------------------\n\nIf you have a cache on folder views with plone.app.caching,\nadd 'trashed' to your etags.\n\nChangelog\n=========\n\n1.7.2 (2017-01-04)\n------------------\n\n- In isTrashcanOpened, use get_session instead of request.SESSION to avoid\n to create a session object if none exist currently.\n [vincentfretin]\n\n\n1.7.1 (2016-12-05)\n------------------\n\n- Better fix for getting the session in etag trashed.\n [vincentfretin]\n\n\n1.7 (2016-12-02)\n----------------\n\n- Fix getting the session in etag trashed.\n [vincentfretin]\n\n- Fix : don't crash if we don't have session_data_manager (e.g. in tests).\n [cedricmessiant]\n\n\n1.6 (2014-11-14)\n----------------\n\n- Use session_data_manager.getSessionData(create=False) to retrieve the\n session instead of doing request.SESSION because it uses\n session_data_manager.getSessionData(create=1)\n and so create a TransientObject for each webdav request (because it\n doesn't use cookie) and you get finally a \"MaxTransientObjectsExceeded:\n 1000 exceeds maximum number of subobjects 1000\"\n\n\n1.5.2 (2014-06-02)\n------------------\n\n- HTML: remove title from action img.\n [thomasdesvenain]\n\n- Doesn't try to no longer provide ITrashed in pasteObject subscriber if we\n are actually in a RemovedObjectEvent. This fixes removing collective.alias\n content.\n [vincentfretin]\n\n\n1.5.1 (2013-10-02)\n------------------\n\n- Fix use BooleanIndex.\n [thomasdesvenain]\n\n\n1.5 (2013-09-18)\n----------------\n\n- Trash and restore notify events on content.\n [thomasdesvenain]\n\n- Added more metadata package.\n [macagua]\n\n- Rename README file.\n [macagua]\n\n- Updated master template and translations.\n [macagua]\n\n- Added Spanish translation.\n [macagua]\n\n- Added more improvements about i18n.\n [macagua]\n\n- Added genericsetup uninstall profile.\n [macagua]\n\n- Updated bash script for update and generate gettext files.\n [macagua]\n\n- Added .gitignore file.\n [macagua]\n\n- Added ajax mode for object_restore and object_trash scripts.\n [thomasdesvenain]\n\n- Safe unicode for portal messages.\n [thomasdesvenain]\n\n- Added api module with shortcut methods.\n [thomasdesvenain]\n\n- We can force trashed index search.\n [thomasdesvenain]\n\n\n1.4.1 (2012-09-17)\n------------------\n\n- Fixed MANIFEST.in.\n\n\n1.4 (2012-09-17)\n----------------\n\n- Optimization: reindex only trashed and object_provides index\n at trash or restore.\n [thomasdesvenain]\n\n- Remove grok dependency.\n [thomasdesvenain]\n\n- 4.2.1 Compatibility.\n [thomasdesvenain]\n\n- New UI to open / close trashcan.\n [thomasdesvenain]\n\n- Fix security issue.\n [thomasdesvenain]\n\n\n1.3.1 (2011-12-22)\n------------------\n\n- Use BooleanIndex for trashed index.\n [thomasdesvenain]\n\n\n1.3.0 (2011-09-22)\n------------------\n\n- Plone 4.x compatibility.\n\n- Added an Etag for plone.app.registry.\n [thomasdesvenain]\n\n- We may not acquire a REQUEST in searchResults, fixed it.\n [vincentfretin]\n\n\n1.2.1 (2010-09-23)\n------------------\n\n- Trashcan message is of 'warning' class.\n\n- Changed label of trashcan warning:\n exit trashcan button \"may not be at the bottom of the page\"\n\n- Replaced \"five:implements class\" directive by \"class implements\" directive.\n\n- Test if SESSION exists in REQUEST before getting it.\n It's needed for test environment where you don't have SESSION.\n\n\n1.2 (2009-12-18)\n----------------\n\n- Removed livesearch_reply.py, queryCatalog.py. Now patch directly PloneCatalog with\n collective.monkeypatcher. This fixes trashed elements seen in collections.\n This version requires Plone 3.3.\n [vincentfretin]\n\n\n1.1 (2009-03-11)\n----------------\n\n- Initial public release.\n- Add an empty canTrash script, you can overwrite it in another product.\n- Exclude from nav trashed objects.\n [vincentfretin]\n\n\n1.0 (2009-02-23)\n----------------\n\n- Created product with ZopeSkel.\n [Vincent Fretin and Michael Launay]\n\nDownload\n========", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://pypi.python.org/pypi/ecreall.trashcan", "keywords": "Trashcan content types Plone Ecreall", "license": "GPL", "maintainer": "", "maintainer_email": "", "name": "ecreall.trashcan", "package_url": "https://pypi.org/project/ecreall.trashcan/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/ecreall.trashcan/", "project_urls": { "Homepage": "http://pypi.python.org/pypi/ecreall.trashcan" }, "release_url": "https://pypi.org/project/ecreall.trashcan/1.7.2/", "requires_dist": null, "requires_python": "", "summary": "Trashcan for Plone. By Ecreall.", "version": "1.7.2" }, "last_serial": 2553386, "releases": { "1.1": [ { "comment_text": "", "digests": { "md5": "cbf411f566e218b8dfcf52063ba5884a", "sha256": "0ae3a8717fa10c7d02d2280e536246d4274116b92e30ba3b1545fe034b831ab6" }, "downloads": -1, "filename": "ecreall.trashcan-1.1.tar.gz", "has_sig": false, "md5_digest": "cbf411f566e218b8dfcf52063ba5884a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20041, "upload_time": "2009-03-11T16:43:55", "url": "https://files.pythonhosted.org/packages/62/c2/7ad2aa8160cef852cea66a7240640bcfc00b5bb046f843dc4f6a250422db/ecreall.trashcan-1.1.tar.gz" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "52d9a95cbe02c1e1b51b14d185dff7cc", "sha256": "72e4b35018cc30fafa419ab82c13cd90426c3f44d17bfbef8397e9e430d8e8df" }, "downloads": -1, "filename": "ecreall.trashcan-1.2.zip", "has_sig": false, "md5_digest": "52d9a95cbe02c1e1b51b14d185dff7cc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35576, "upload_time": "2009-12-18T19:02:23", "url": "https://files.pythonhosted.org/packages/26/af/1ed46bd95eea801dd8c80fe8c5054c83c2f06baa21bedc3012ddb9b2bff2/ecreall.trashcan-1.2.zip" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "a46de289654b6083d6b0e43952a713af", "sha256": "8ebf3937cefe6ff5edb8e32727ba145563855202b2a0ea883076cddeb3c479bb" }, "downloads": -1, "filename": "ecreall.trashcan-1.2.1.zip", "has_sig": false, "md5_digest": "a46de289654b6083d6b0e43952a713af", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36337, "upload_time": "2010-09-23T13:17:25", "url": "https://files.pythonhosted.org/packages/0d/f2/1b47db5afce6e6810e343ed36b43f78a5a1347f2594f2da3c29f664a233c/ecreall.trashcan-1.2.1.zip" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "86af3207278bc973d8f36b1602169010", "sha256": "ed79b8f543b5d54e11896f655396ff6b109522550033d7a8ddfe61489b068b6c" }, "downloads": -1, "filename": "ecreall.trashcan-1.3.0.zip", "has_sig": false, "md5_digest": "86af3207278bc973d8f36b1602169010", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37682, "upload_time": "2011-09-22T17:24:11", "url": "https://files.pythonhosted.org/packages/10/73/11cb957723fcfbe0ac655221403733bd1b69269d2f5f494fadc303801519/ecreall.trashcan-1.3.0.zip" } ], "1.3.1": [ { "comment_text": "", "digests": { "md5": "b4de0bc303c52231a69f1b945a532331", "sha256": "02809f3179f891feedf011c861fb0ec17102c7bbf8b09b3be4c5641fa0466e18" }, "downloads": -1, "filename": "ecreall.trashcan-1.3.1.zip", "has_sig": false, "md5_digest": "b4de0bc303c52231a69f1b945a532331", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 38040, "upload_time": "2011-12-22T14:37:08", "url": "https://files.pythonhosted.org/packages/c5/d0/0aa64df223c516309f8ad42065a120964f4e569e92a38bcca80cd186e8b1/ecreall.trashcan-1.3.1.zip" } ], "1.4.1": [ { "comment_text": "", "digests": { "md5": "a895352b7b285b9f16d02defd3d7434e", "sha256": "3d047c42104a3e9670f4532fbd33f521c138e6cea8765e86662dc2eb2f070f76" }, "downloads": -1, "filename": "ecreall.trashcan-1.4.1.zip", "has_sig": false, "md5_digest": "a895352b7b285b9f16d02defd3d7434e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40203, "upload_time": "2012-09-17T08:33:07", "url": "https://files.pythonhosted.org/packages/14/b1/98dc26491750ff90f0dcbb33155c2fae4273faefb74255267075d96406ad/ecreall.trashcan-1.4.1.zip" } ], "1.5": [ { "comment_text": "", "digests": { "md5": "191846e2ec4100004ad84d654e7f94a5", "sha256": "aa8cb5245fa9a3183ab05379b956a797a3ae748c2636bfa028519a6b16ffd188" }, "downloads": -1, "filename": "ecreall.trashcan-1.5.zip", "has_sig": false, "md5_digest": "191846e2ec4100004ad84d654e7f94a5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49850, "upload_time": "2013-09-18T10:31:37", "url": "https://files.pythonhosted.org/packages/c2/6b/106bf1b97e9a9dcc6844e2ca9e66b7c37ac6260b55808e5145a716814b62/ecreall.trashcan-1.5.zip" } ], "1.5.1": [ { "comment_text": "", "digests": { "md5": "8688360e34f7ec761eb9e458b77156ca", "sha256": "e764c5df14bed691acd7603ee276acca94968d386bf19457aeec9edcca584dee" }, "downloads": -1, "filename": "ecreall.trashcan-1.5.1.zip", "has_sig": false, "md5_digest": "8688360e34f7ec761eb9e458b77156ca", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50230, "upload_time": "2013-10-02T18:04:17", "url": "https://files.pythonhosted.org/packages/f1/90/9718fa175223415bf423d62b7739abc56082ce6ae72a05fdab4076f3c923/ecreall.trashcan-1.5.1.zip" } ], "1.5.2": [ { "comment_text": "", "digests": { "md5": "ff1e008ad836a013b398ce16bb174eeb", "sha256": "d6dd42d5360af8fb46d727cf35105f545fec17fc988d7042ea1621641840c600" }, "downloads": -1, "filename": "ecreall.trashcan-1.5.2.zip", "has_sig": false, "md5_digest": "ff1e008ad836a013b398ce16bb174eeb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50545, "upload_time": "2014-06-02T10:50:31", "url": "https://files.pythonhosted.org/packages/4d/e1/aba721fc79502929c2accf37ccd0ca2903ea3b20d1648078985ebb9cd49e/ecreall.trashcan-1.5.2.zip" } ], "1.6": [ { "comment_text": "", "digests": { "md5": "34d317b75e94f9fc6699b3902d99c99d", "sha256": "af0b8d0d20bd68edf264366259d005fe5981846fde378518960e564da4d40e2c" }, "downloads": -1, "filename": "ecreall.trashcan-1.6.zip", "has_sig": false, "md5_digest": "34d317b75e94f9fc6699b3902d99c99d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 57365, "upload_time": "2014-11-14T15:23:07", "url": "https://files.pythonhosted.org/packages/be/a9/9d0274a9f1a225156dd36a0d56e4aa67dd04f140bd0f082205eed707f0d9/ecreall.trashcan-1.6.zip" } ], "1.7": [ { "comment_text": "", "digests": { "md5": "5c42a8104cec016f87dc093d4c495c16", "sha256": "7dd4e03255d92d20ff937b78633bed2606bde2336a3d61469b8e4ca9a99396a0" }, "downloads": -1, "filename": "ecreall.trashcan-1.7.tar.gz", "has_sig": false, "md5_digest": "5c42a8104cec016f87dc093d4c495c16", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23738, "upload_time": "2016-12-02T17:09:28", "url": "https://files.pythonhosted.org/packages/97/75/bfead395e3dda0732e311f7fd3cb201abe10ec45995135d3b3bf811ede73/ecreall.trashcan-1.7.tar.gz" } ], "1.7.1": [ { "comment_text": "", "digests": { "md5": "0b585a4ceafa8dc1bc8f11759c660d4f", "sha256": "f08ba67fc65088d0c264af5cfbb93bef39d5b135a992abdcd41e0723111a8c3a" }, "downloads": -1, "filename": "ecreall.trashcan-1.7.1.tar.gz", "has_sig": false, "md5_digest": "0b585a4ceafa8dc1bc8f11759c660d4f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23817, "upload_time": "2016-12-05T08:24:37", "url": "https://files.pythonhosted.org/packages/23/fc/5c45948ae822501ed57a96f1bf57c2e1f9cd5ca81f6ecc0f66aec1bc3ccf/ecreall.trashcan-1.7.1.tar.gz" } ], "1.7.2": [ { "comment_text": "", "digests": { "md5": "dd4bb0623f408a7dc4e099a289b48c45", "sha256": "770d74815040da99ab45757bb31221b82bb687b769e1c02ba66a9c279c68e4cf" }, "downloads": -1, "filename": "ecreall.trashcan-1.7.2.tar.gz", "has_sig": false, "md5_digest": "dd4bb0623f408a7dc4e099a289b48c45", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32202, "upload_time": "2017-01-04T11:06:19", "url": "https://files.pythonhosted.org/packages/56/c3/946a5eefd5f6bbb6d810b2bb09dc30d07bd86db2c292c71cf3c3ffc34aa7/ecreall.trashcan-1.7.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "dd4bb0623f408a7dc4e099a289b48c45", "sha256": "770d74815040da99ab45757bb31221b82bb687b769e1c02ba66a9c279c68e4cf" }, "downloads": -1, "filename": "ecreall.trashcan-1.7.2.tar.gz", "has_sig": false, "md5_digest": "dd4bb0623f408a7dc4e099a289b48c45", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32202, "upload_time": "2017-01-04T11:06:19", "url": "https://files.pythonhosted.org/packages/56/c3/946a5eefd5f6bbb6d810b2bb09dc30d07bd86db2c292c71cf3c3ffc34aa7/ecreall.trashcan-1.7.2.tar.gz" } ] }