{ "info": { "author": "Thomas Desvenain", "author_email": "thomas.desvenain@gmail.com", "bugtrack_url": null, "classifiers": [ "Environment :: Web Environment", "Framework :: Plone", "Framework :: Plone :: 4.3", "Programming Language :: Python", "Programming Language :: Python :: 2.7" ], "description": "=============================\ncollective.contact.duplicated\n=============================\n\nThis add-on is part of the ``collective.contact.*`` suite. For an overview and a demo of these suite, see `collective.contact.demo `__.\n\nAdd a view to manage contact duplications.\n\nInstall\n=======\n\nFor the moment, this needs collective.contact.faceted with batch actions allowed.\nSelect two (or more) contacts (organization, held_position, person, etc) and click\non \"Merge duplicated\" button.\n\nIt is also possible to pass a data field with data that do not come from an existing contact. Such data may be merged with the final contact.\n\nTests\n=====\n\n.. image:: https://secure.travis-ci.org/collective/collective.contact.duplicated.png\n :target: http://travis-ci.org/collective/collective.contact.duplicated\n\n.. image:: https://coveralls.io/repos/collective/collective.contact.duplicated/badge.png?branch=master\n :target: https://coveralls.io/r/collective/collective.contact.duplicated?branch=master\n\nExtend\n======\n\nAdapters of field objects that implements IFieldRenderer interface\nrenders the content of a field on the compare screen.\nCreate a new adapter if you have specific fields.\n\nContributors\n============\n\n- Thomas Desvenain, thomas.desvenain@gmail.com\n- Eric Brehault, ebrehault@gmail.com\n- Simon Pr\u00e9vidente, simon.previdente@makina-corpus.com\n- Stephan Geulette, stephan.geulette@imio.be\n\nChangelog\n=========\n\n\n0.5 (2018-01-04)\n----------------\n\n- Optimized back references update.\n [thomasdesvenain]\n\n- Hide 'merge persons' option when we merge object with non-object.\n [thomasdesvenain]\n\n- Revert: do merge action with Manager role.\n It allowed to make actions without accurate permissions.\n [tdesvenain]\n\n0.4 (2017-10-03)\n----------------\n\n- Handle when field value is a ComputedAttribute (from an acqproperty)\n [thomasdesvenain]\n\n- Do not dismiss merge if only one UID + data\n [ebrehault]\n\n- Avoid error with field using plone.app.vocabularies\n [sgeulette]\n\n- Do merge action with Manager role to avoid security problems\n [sgeulette]\n\n0.3.1 (2017-02-09)\n------------------\n\n- Prevent fatal error when a back reference relation to a duplicated contact\n is out of sync with any actual content.\n [thomasdesvenain]\n\n- Prefer a 400 error than a 500 when user directly access to merge page without accurate params.\n [thomasdesvenain]\n\n0.3.0 (2016-09-23)\n------------------\n\n- Merge contacts with data\n [simon-previdente]\n\n\n0.2 (2015-11-24)\n----------------\n\n- Fix plone.protect compliancy\n [ebrehault]\n\n- Fix permission: anybody allowed to add contacts must be able to merge\n duplicates\n [ebrehault]\n\n\n0.1 (2015-06-02)\n----------------\n\n- Initial release.\n [tdesvenain]", "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/collective.contact.duplicated", "keywords": "contacts", "license": "GPL", "maintainer": "", "maintainer_email": "", "name": "collective.contact.duplicated", "package_url": "https://pypi.org/project/collective.contact.duplicated/", "platform": "", "project_url": "https://pypi.org/project/collective.contact.duplicated/", "project_urls": { "Homepage": "http://pypi.python.org/pypi/collective.contact.duplicated" }, "release_url": "https://pypi.org/project/collective.contact.duplicated/0.5/", "requires_dist": null, "requires_python": "", "summary": "Tools to manage duplicated contacts", "version": "0.5" }, "last_serial": 3462373, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "3f457e619edaa3c30b141b79be0561b5", "sha256": "7fdf4d190095d99c3ec2195a14434392f72429c9a0cc642ef81df0d1d19d6f91" }, "downloads": -1, "filename": "collective.contact.duplicated-0.1.zip", "has_sig": false, "md5_digest": "3f457e619edaa3c30b141b79be0561b5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 47000, "upload_time": "2015-06-02T09:54:24", "url": "https://files.pythonhosted.org/packages/bf/5d/8c30dd8068d7caed7bde1f15d694707ff9e22f3856f468efbfd4b66f9111/collective.contact.duplicated-0.1.zip" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "8db90734027b7cf56b90147775025cd5", "sha256": "9dc24ee0fa6b6ff3688e253e235833d5634c2e4b882024bdf464de8c74dc2943" }, "downloads": -1, "filename": "collective.contact.duplicated-0.2.zip", "has_sig": false, "md5_digest": "8db90734027b7cf56b90147775025cd5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 47281, "upload_time": "2015-11-24T08:52:45", "url": "https://files.pythonhosted.org/packages/31/6e/e7fadb13308f1caacfec0d1ef449971a47aba6bad9c3105e759b355bc073/collective.contact.duplicated-0.2.zip" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "f3022b9b21ca92054a5e919c606aedf7", "sha256": "41c27c8827d775ba255f0f7a478107605da206a94e815e3ae966d96bb42a478d" }, "downloads": -1, "filename": "collective.contact.duplicated-0.3.0.tar.gz", "has_sig": false, "md5_digest": "f3022b9b21ca92054a5e919c606aedf7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28933, "upload_time": "2016-09-26T12:05:00", "url": "https://files.pythonhosted.org/packages/08/c9/ed397cc5836e6c21168807c49936c2702cdec8dec9131bed2a266c5494e6/collective.contact.duplicated-0.3.0.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "97115f69a798cd1a24edd1b95c5a90f7", "sha256": "4ff5917bce194f6dac03bb59808953b18e80aeb8b979f9c0b0195608712326bf" }, "downloads": -1, "filename": "collective.contact.duplicated-0.4.tar.gz", "has_sig": false, "md5_digest": "97115f69a798cd1a24edd1b95c5a90f7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29137, "upload_time": "2017-10-03T08:21:36", "url": "https://files.pythonhosted.org/packages/34/f1/b8619daec835b80b717346d661d975ce9003c87454b4afb82d83e6ee969d/collective.contact.duplicated-0.4.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "14389f11049a5c1503c175c957c0d7a6", "sha256": "d5ca0dfd7434c3ad786ee29611c6f2346b16f4833c21ddd8aa30c5763d5bde56" }, "downloads": -1, "filename": "collective.contact.duplicated-0.5.tar.gz", "has_sig": false, "md5_digest": "14389f11049a5c1503c175c957c0d7a6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30010, "upload_time": "2018-01-04T18:00:56", "url": "https://files.pythonhosted.org/packages/f1/57/e86c4b2ba92ff3340cee1108076d597823688493689614c98d4ddb0aa875/collective.contact.duplicated-0.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "14389f11049a5c1503c175c957c0d7a6", "sha256": "d5ca0dfd7434c3ad786ee29611c6f2346b16f4833c21ddd8aa30c5763d5bde56" }, "downloads": -1, "filename": "collective.contact.duplicated-0.5.tar.gz", "has_sig": false, "md5_digest": "14389f11049a5c1503c175c957c0d7a6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30010, "upload_time": "2018-01-04T18:00:56", "url": "https://files.pythonhosted.org/packages/f1/57/e86c4b2ba92ff3340cee1108076d597823688493689614c98d4ddb0aa875/collective.contact.duplicated-0.5.tar.gz" } ] }