{ "info": { "author": "NiteoWeb Ltd.", "author_email": "info@niteoweb.com", "bugtrack_url": null, "classifiers": [ "Framework :: Plone", "Programming Language :: Python" ], "description": "=================\nniteoweb.ipn.core\n=================\n\nA Plone add-on package that acts as a base for supporting different Instant\nPayment Notification providers (such as PayPal, JVZoo, Click2Sell, etc.)\n\n* `Source code @ GitHub `_\n* `Releases @ PyPI `_\n* `Continuous Integration @ Travis-CI `_\n\nSubpackages\n===========\n\nYou probably do not want to use this package on its own, but rather use one\nof its sub-packages:\n\n * `niteoweb.ipn.jvzoo `_\n * `niteoweb.ipn.c2s (WIP) `_\n\nHow it works\n============\n\nThis package acts as a base layer for ``niteoweb.ipn.*`` packages. It provides\nthe code that these sub-packages would have to otherwise duplicate:\n\n * Creating a new member.\n * Updating an existing member.\n * Disabling an existing member.\n * Firing off events that your project code can catch and perform custom tasks\n on.\n\nThe following information is stored as member properties for later use:\n\n ``product_id``\n IPN provider's `Product ID` of the purchased item.\n\n ``affiliate``\n Affiliate who referred the buyer.\n\n ``valid_to``\n Date until the member's subscription is valid.\n\n ``history``\n History of actions taken on the member. Useful for analyses later on.\n\n\nAssumptions\n===========\n\n* Emails are used as usernames.\n* \"Disabling\" a member means to revoke her Member role and put her in the\n `Disabled` group, while removing her from all other groups.\n* \"Enabling\" a member means to create a new member (if she doesn't exist yet),\n grant her the Member role (if she doesn't have it yet) and add her to the\n Product Group.\n* \"Product Group\" is a group that contains members that have purchased the same\n product. Product group IDs are equal to Product IDs -- this is how they are\n linked together.\n* When niteoweb.ipn.core creates a new member object, the registration email is\n **not** sent. Your third-party code should take care of this (for example by\n subscribing to the IPrincipalCreatedEvent emitted by PAS).\n* Whenever a member is enabled, a 'valid_to' property is set on the member\n object to represent until which day should this member be allowed to use the\n site. You then need to setup a cronjob that calls ``@@validity`` view every\n day to disable those members whose validity period has elapsed. In the\n plone.app.registry control panel you can set a secret that needs to be passed\n as a request parameter to the ``@@validity`` view.\n\nInstallation\n============\n\nYou probably do not want to install `niteoweb.ipn.core` directly, but rather\nuse one of ``niteoweb.ipn.*`` sub-packages.\n\nChangelog\n=========\n\n1.5.4 (unreleased)\n------------------\n\n- Nothing changed yet.\n\n\n1.5.3 (2014-03-07)\n------------------\n\n- Add optional ``note`` parameter to enable_member method.\n [matejc]\n\n\n1.5.2 (2014-01-26)\n------------------\n\n- Another fix to include CHANGELOG.rst in the release.\n [zupo]\n\n\n1.5.1 (2014-01-26)\n------------------\n\n- Include .rst files in release.\n [zupo]\n\n\n1.5 (2014-01-26)\n----------------\n\n- Also set ``product_id`` on already existing members.\n [zupo]\n\n\n1.4 (2013-10-07)\n----------------\n\n- @@validity view raises ConflictError on busy site, solved by\n committing transaction after every disabled user.\n [Matej Cotman]\n\n\n1.3 (2013-01-08)\n----------------\n\n- Prefix log entries with current user's username.\n [zupo]\n\n\n1.2 (2013-01-05)\n----------------\n\n- The ``product_id`` parameter is not always needed for in ``disable_member``\n so don't make it required.\n [zupo]\n\n- The @@validity view now supports *dry-run* mode.\n [zupo]\n\n- The @@validity view now prints processing results to the browser.\n [zupo]\n\n- Better ``valid_to`` default value.\n [zupo]\n\n\n1.1 (2013-01-02)\n----------------\n\n- Use ``ipn_`` as a prefix for product group IDs.\n [zupo]\n\n\n1.0 (2012-12-27)\n----------------\n\n- Initial release.\n [zupo]\n\nLicense (3-clause BSD)\n======================\n\nCopyright (c) 2013, NiteoWeb Ltd.. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n * Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n * Neither the name of NiteoWeb Ltd.. nor the names of its contributors may\n be used to endorse or promote products derived from this software\n without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL NITEOWEB LTD. BE LIABLE FOR ANY\nDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.", "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/niteoweb.ipn.core", "keywords": "Plone IPN", "license": "BSD", "maintainer": null, "maintainer_email": null, "name": "niteoweb.ipn.core", "package_url": "https://pypi.org/project/niteoweb.ipn.core/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/niteoweb.ipn.core/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://pypi.python.org/pypi/niteoweb.ipn.core" }, "release_url": "https://pypi.org/project/niteoweb.ipn.core/1.5.3/", "requires_dist": null, "requires_python": null, "summary": "Support for Instant Payment Notifications in Plone.", "version": "1.5.3" }, "last_serial": 1022105, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "4a3bd189709d6dac4c1615aa26addc7a", "sha256": "7a2cbefbe3d7eb629ac1444d0c25bb54e92af6d4bbb8d3772b70694d451d19fa" }, "downloads": -1, "filename": "niteoweb.ipn.core-1.0.zip", "has_sig": false, "md5_digest": "4a3bd189709d6dac4c1615aa26addc7a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 55967, "upload_time": "2012-12-27T11:55:53", "url": "https://files.pythonhosted.org/packages/d0/4c/e3890aa4d805797e07023ec6bfe89bced1228396e07af96b55886c3a4c1a/niteoweb.ipn.core-1.0.zip" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "c5fab8a740887bbdc809b0b0a6032920", "sha256": "23f537b47c1e3133aba0c91ec687daef938b9344eced46b4a6ed0e67c2230248" }, "downloads": -1, "filename": "niteoweb.ipn.core-1.1.zip", "has_sig": false, "md5_digest": "c5fab8a740887bbdc809b0b0a6032920", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 56028, "upload_time": "2013-01-02T09:58:39", "url": "https://files.pythonhosted.org/packages/fa/c9/8dd1450b79bf909d48c7fe751415cf54be42456a20f90971cfc329e4f8ef/niteoweb.ipn.core-1.1.zip" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "8658f7e8f1af7f00aaf4e931261c7f05", "sha256": "2b6a7c3e348cf6c024d4784a55df793c44804e7b3d278105e735e50575513657" }, "downloads": -1, "filename": "niteoweb.ipn.core-1.2.zip", "has_sig": false, "md5_digest": "8658f7e8f1af7f00aaf4e931261c7f05", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 57114, "upload_time": "2013-01-05T14:59:36", "url": "https://files.pythonhosted.org/packages/bf/20/df020a763c0bd647c164b5e173576097e88b1b901b74f1743adf6bd397d0/niteoweb.ipn.core-1.2.zip" } ], "1.3": [ { "comment_text": "", "digests": { "md5": "5e695b73d7ba4c9e1bb4b74886e08c1c", "sha256": "70bea3dbd0f3f2c5d0a8b58c3cfb0a01f203ca46fe0ea8cdd700c36ea28d40c2" }, "downloads": -1, "filename": "niteoweb.ipn.core-1.3.zip", "has_sig": false, "md5_digest": "5e695b73d7ba4c9e1bb4b74886e08c1c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 57955, "upload_time": "2013-01-08T13:56:34", "url": "https://files.pythonhosted.org/packages/24/6a/840c99b37d4a31da4cc039c21c69aa6f793d18dfa1d548e6e3066d1bd660/niteoweb.ipn.core-1.3.zip" } ], "1.4": [ { "comment_text": "", "digests": { "md5": "337c9679502698d62fa50efaa038a5a8", "sha256": "3bfeb68456fa83d4185a6c03baded669fb1b424830699cdb5bd2eed2fb556fb5" }, "downloads": -1, "filename": "niteoweb.ipn.core-1.4.zip", "has_sig": false, "md5_digest": "337c9679502698d62fa50efaa038a5a8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58337, "upload_time": "2013-10-07T10:38:55", "url": "https://files.pythonhosted.org/packages/1d/b7/424f146c09a0dce7642ebfa41e9849f63bea32f71fe77835805bd71b5bd0/niteoweb.ipn.core-1.4.zip" } ], "1.5": [ { "comment_text": "", "digests": { "md5": "75d6387af37523b2e1e423e5673bfef1", "sha256": "846d523b960b18ad9c32078403571d58a1a62ca2be203bec8c3e03153c0dbd9a" }, "downloads": -1, "filename": "niteoweb.ipn.core-1.5.zip", "has_sig": false, "md5_digest": "75d6387af37523b2e1e423e5673bfef1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26997, "upload_time": "2014-01-26T01:18:10", "url": "https://files.pythonhosted.org/packages/9b/74/6f5c43184e29d355a7f08db3019abd2e093df9fcde4b9d3a6304600e4b70/niteoweb.ipn.core-1.5.zip" } ], "1.5.1": [ { "comment_text": "", "digests": { "md5": "ed9666690c298846fb4406bd1d4e4ea1", "sha256": "065e42a6da9f9daa4aa02e2aa596f6e2abd2365fdcc19a17e9a55b8a3e7a395b" }, "downloads": -1, "filename": "niteoweb.ipn.core-1.5.1.zip", "has_sig": false, "md5_digest": "ed9666690c298846fb4406bd1d4e4ea1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27183, "upload_time": "2014-01-26T01:24:47", "url": "https://files.pythonhosted.org/packages/a1/65/75b0f1d16ef8a7e155093b60c75285edc2eeb5b33517561d019343ed6e0e/niteoweb.ipn.core-1.5.1.zip" } ], "1.5.2": [ { "comment_text": "", "digests": { "md5": "53aa0ddd401b4295e1aeb504df63944a", "sha256": "4baa77dffcbb2d8d9721294b75358e6172ea7a54306375f0858fde9aeb874e65" }, "downloads": -1, "filename": "niteoweb.ipn.core-1.5.2.zip", "has_sig": false, "md5_digest": "53aa0ddd401b4295e1aeb504df63944a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28904, "upload_time": "2014-01-26T01:34:25", "url": "https://files.pythonhosted.org/packages/51/fc/e6ad7f15aee844bc6c52a343177f70c9f42d1929b8369e0e9c08061a2ef8/niteoweb.ipn.core-1.5.2.zip" } ], "1.5.3": [ { "comment_text": "", "digests": { "md5": "b8b214a40942824cdfc39f8b9d9edd02", "sha256": "054b1f7c1d1032b7c9174e23d7fc61c92a946e180debc46e95ae152307752056" }, "downloads": -1, "filename": "niteoweb.ipn.core-1.5.3.zip", "has_sig": false, "md5_digest": "b8b214a40942824cdfc39f8b9d9edd02", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 59416, "upload_time": "2014-03-07T12:06:20", "url": "https://files.pythonhosted.org/packages/78/d0/a97242ef52a7bcf9c7812f540115590ea7898d16beecceb538c54c9176ca/niteoweb.ipn.core-1.5.3.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b8b214a40942824cdfc39f8b9d9edd02", "sha256": "054b1f7c1d1032b7c9174e23d7fc61c92a946e180debc46e95ae152307752056" }, "downloads": -1, "filename": "niteoweb.ipn.core-1.5.3.zip", "has_sig": false, "md5_digest": "b8b214a40942824cdfc39f8b9d9edd02", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 59416, "upload_time": "2014-03-07T12:06:20", "url": "https://files.pythonhosted.org/packages/78/d0/a97242ef52a7bcf9c7812f540115590ea7898d16beecceb538c54c9176ca/niteoweb.ipn.core-1.5.3.zip" } ] }