{ "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.contactlist\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\nUsers can can manage lists of contacts.\nAdds an action to search and add a content to an existing or a new list.\n\nLists handles any contact type: organization, person or held position.\n\n\nInstallation\n============\n\nYou need to turn on Member folder creation.\n\nAPI\n===\n\nAn helper api to manage contact lists: ::\n\n def extend_list(contact_list, contacts):\n \"\"\"Add contacts to a contact list\n @param contact_list: object - The contact list object\n @param contacts: objects - A list of contact objects\n @return: objects - the list of contacts that have been actually added\n \"\"\"\n\n def replace_list(contact_list, contacts):\n \"\"\"Replace the contacts of a contact list\n @param contact_list: object - The contact list object\n @param contacts: objects - A list of contact objects\n @return: objects - the list of contacts that have been actually added\n \"\"\"\n\n def get_contacts(*contact_lists, **kwargs):\n \"\"\"Get the contacts from one or many contact list(s)\n kwargs can have an 'operator' option ('and' or 'or')\n so we make union or intersection of lists\n default is 'or'\n \"\"\"\n\n\nVocabularies\n============\n\n- `collective.contact.contactlist.lists`: all lists user can see.\n Lists shared to user are distinguished with owner's name.\n- `collective.contact.contactlist.alllists`: all lists user can view, without distinction,\n- `collective.contact.contactlist.editablelists`: all lists user can edit,\n- `collective.contact.contactlist.mylists`: all lists created by user,\n- `collective.contact.contactlist.addtolist`: all lists user can edit + list creation option\n- `collective.contact.contactlist.vocabularies`: vocabulary of all previous vocabularies.\n\n\nIntegration with collective.contact.facetednav\n==============================================\n\nIf you have collective.contact.facetednav installed,\nif you have enabled contact selection on your faceted navigation\nyou can batch select contacts and add them to lists\n\nYou have a new widget \"contacts list\", wich display your lists.\nIt filters your results on the contents of the lists you have selected.\n\nCompatible with eea.facetednav > 10\n\nUse ContactListSourceBinder\n===========================\n\nWhen you write a schema,\nyou can filter choices of a ContactChoice (or ContactList) field on the contacts of one or many lists: ::\n\n birthday_guests = ContactList(\n title=u\"Birthday guests\",\n value_type=ContactChoice(\n source=ContactListSourceBinder(\n contact_lists_query={'Subject': 'Friends'}),\n contact_lists_operator='or',\n portal_type=(\"person\",),\n )\n )\n )\n\nThis works like ContactSourceBinder from collective.contact.widget, but it also gets a\ncountact_lists_query parameter, wich is a catalog query dictionnary. Contacts displayed by formwidget\nquery are filtered on the union or intersection (depending on contact_lists_operator) of the lists we get using this query.\n\n\nTests\n=====\n\nThis add-on is tested using Travis CI. The current status of the add-on is :\n\n.. image:: https://secure.travis-ci.org/collective/collective.contact.contactlist.png\n :target: http://travis-ci.org/collective/collective.contact.contactlist\n\nContributors\n============\n\n- Thomas Desvenain, thomas.desvenain@gmail.com\nChangelog\n=========\n\n\n2.0 (2019-04-24)\n----------------\n\n- Made it compatible with eea.facetednavigation >= 10.0. Branch 1.x is compatible with eea.facetednavigation < 10.0\n [sgeulette]\n\n1.3 (2018-11-13)\n----------------\n\n- 'collective.contact.contactlist.lists' vocabulary is sorted by title when creators are different.\n + few fixes on list order\n [thomasdesvenain]\n\n\n1.2 (2017-01-17)\n----------------\n\n- Test eea widget.\n [thomasdesvenain]\n\n- API: Added a source binder that allows developers\n to restrict ContactChoice fields on contents of contact lists.\n [thomasdesvenain]\n\n- get_contacts with 'and' operator was broken.\n [thomasdesvenain]\n\n- Minor optimizations and PEP8.\n [thomasdesvenain]\n\n- API: deprecate update_list function and create extend_list instead,\n which is less ambiguous.\n [thomasdesvenain]\n\n- Fix get_contacts API for empty list\n [ebrehault]\n\n\n1.1 (2016-09-23)\n----------------\n\n- More robust unit tests.\n [thomasdesvenain]\n\n- Add get_lists_for_contact method to get all lists that contain contact.\n [cedricmessiant]\n\n- Fix relations.\n [cedricmessiant]\n\n- Put 'Create a new list' on top of the select widget.\n [cedricmessiant]\n\n- Fix update_list API for empty list\n [ebrehault]\n\n- Fix permissions in API\n [ebrehault]\n\n\n1.0 (2014-06-16)\n----------------\n\n- Initial release.\n [tdesvenain]", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://pypi.python.org/pypi/collective.contact.contactlist", "keywords": "crm", "license": "GPL", "maintainer": "", "maintainer_email": "", "name": "collective.contact.contactlist", "package_url": "https://pypi.org/project/collective.contact.contactlist/", "platform": "", "project_url": "https://pypi.org/project/collective.contact.contactlist/", "project_urls": { "Homepage": "http://pypi.python.org/pypi/collective.contact.contactlist" }, "release_url": "https://pypi.org/project/collective.contact.contactlist/2.0/", "requires_dist": null, "requires_python": "", "summary": "Manage lists of contacts", "version": "2.0" }, "last_serial": 5181369, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "701617c3b4743dd286cb37fc243d8742", "sha256": "021573b3581696a1a36bf1bd37a7fda08471e0cfa499b11611bf9112abedcabc" }, "downloads": -1, "filename": "collective.contact.contactlist-1.0.zip", "has_sig": false, "md5_digest": "701617c3b4743dd286cb37fc243d8742", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36723, "upload_time": "2014-06-16T15:07:07", "url": "https://files.pythonhosted.org/packages/90/c1/a4f68fc1c4ecad7b4e35276e4da6c0e797bbce8c2112a3d4a1d729367661/collective.contact.contactlist-1.0.zip" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "5b9818ddecb36eb25793641931fe5866", "sha256": "f0a8dfdd3457c70771eae8990ef9156912af970603b4bc86af522f398e1fe46a" }, "downloads": -1, "filename": "collective.contact.contactlist-1.1.tar.gz", "has_sig": false, "md5_digest": "5b9818ddecb36eb25793641931fe5866", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17790, "upload_time": "2016-09-23T14:30:49", "url": "https://files.pythonhosted.org/packages/68/51/341d21faba0840e1f25901d54d84bc565a3a0381a52baeda4663850da51f/collective.contact.contactlist-1.1.tar.gz" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "94d973d650ba967fd50cb33f052fb8f7", "sha256": "cd6e67656c7ebda94e85eccd7c2bd0a7eb1a4e0c24030a4656992715995b75d9" }, "downloads": -1, "filename": "collective.contact.contactlist-1.2.tar.gz", "has_sig": false, "md5_digest": "94d973d650ba967fd50cb33f052fb8f7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29212, "upload_time": "2017-01-17T14:30:18", "url": "https://files.pythonhosted.org/packages/7a/db/0bdef8cef086e1e28bde57d225e7c4be217c3a6a3d82cb188ffe031540b6/collective.contact.contactlist-1.2.tar.gz" } ], "1.3": [ { "comment_text": "", "digests": { "md5": "a7dfa379084d02bb0240aaa0fb8d202d", "sha256": "e1c18694955dd251e8e3ef0138a17cfa55c7808345722a70991784ee906294fe" }, "downloads": -1, "filename": "collective.contact.contactlist-1.3.tar.gz", "has_sig": false, "md5_digest": "a7dfa379084d02bb0240aaa0fb8d202d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30882, "upload_time": "2018-11-13T12:00:57", "url": "https://files.pythonhosted.org/packages/fa/53/7aafb470bdac229e35f533ad49415ef2fa6efa19f99d0f458aff83d1403d/collective.contact.contactlist-1.3.tar.gz" } ], "2.0": [ { "comment_text": "", "digests": { "md5": "c11078e754f305773af6d8dc68b54a3a", "sha256": "b0ff501a0112f3f7db53bd053017d0eb9e84f40946208c364836c43d48720325" }, "downloads": -1, "filename": "collective.contact.contactlist-2.0.tar.gz", "has_sig": false, "md5_digest": "c11078e754f305773af6d8dc68b54a3a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31153, "upload_time": "2019-04-24T10:14:08", "url": "https://files.pythonhosted.org/packages/88/14/a72155c00ae44a4e6afaf757078487ea92d44ef170089af1f9e2cae3b49c/collective.contact.contactlist-2.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c11078e754f305773af6d8dc68b54a3a", "sha256": "b0ff501a0112f3f7db53bd053017d0eb9e84f40946208c364836c43d48720325" }, "downloads": -1, "filename": "collective.contact.contactlist-2.0.tar.gz", "has_sig": false, "md5_digest": "c11078e754f305773af6d8dc68b54a3a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31153, "upload_time": "2019-04-24T10:14:08", "url": "https://files.pythonhosted.org/packages/88/14/a72155c00ae44a4e6afaf757078487ea92d44ef170089af1f9e2cae3b49c/collective.contact.contactlist-2.0.tar.gz" } ] }