{ "info": { "author": "Hugo Rodger-Brown", "author_email": "hugo@rodger-brown.com", "bugtrack_url": null, "classifiers": [ "Environment :: Web Environment", "Framework :: Django", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Topic :: Internet :: WWW/HTTP", "Topic :: Internet :: WWW/HTTP :: Dynamic Content" ], "description": "Django-Highrise\n===============\n\nThis app provides integration between Django and Highrise, which is used to\nprovide CRM capabilities.\n\nCurrently this supports only one operation - pushing a user to Highrise.\n\nIt uses the `pyrise `_ library from `Jason\nFord `_.\n\nWhy bother?\n-----------\n\nDjango is a great web app framework, it's not such a good CRM tool. Sometimes\nyou need a little bit extra. Highrise is a simple CRM product from the guys\nbehind Basecamp. It allows you to keep tabs on contacts (amongst a lot of\nother sales-related stuff), and has a great email integration feature. You can\nread more about it at http://highrisehq.com/signup.\n\nTell me more\n------------\n\nThis app simplifies the process of integrating with Highrise. It provides the\nAPI hooks to allow you to push django user records into Highrise, and to read\na Highrise contact's feed (notes, emails, comments) back out. Where and when\nyou use these hooks is up to you. It could be at the point of user registration,\nit could be through the Django admin site, it could even be from the command\nline, run as a batch job overnight.\n\nUnder the hood django-highrise is a wrapper around **pyrise**, and so the\nobjects returned are standard pyrise Person, Note, Email objects. This allows\nyou to use them in your own code, for instance for adding additional attributes\nbeyond just the core User attributes.\n\nThe app comes with a single model - HighriseContact. This is used to track\nthe fact that a User has been synced with Highrise, and to contain some basic\nutility attributes that make further integration easier.\n\nNetwork considerations\n----------------------\n\nIt is very important to bear in mind that this app makes a number of calls\nacross the public internet, and is therefore neither highly performant, nor\nimmune to standard network connectivity issues. It should *not* therefore be\nintegrated in any area of your application where an unexpected 30s network\ntimeout would cause a problem. i.e. do not include this as a synchronous call\nin your registration process.\n\nWhen you sync a User to Highrise two network calls take place: first, a GET is\nissued to the API to fetch any possible matches, then, if none are found, a\nPOST is issued to push the new contact to the API. If you wanted to add further\nattributes to the Person and save those back to Highrise, that would be three\nnetwork calls. **Caveat emptor**.\n\nConfiguration\n-------------\n\nThe underlying **pyrise** library requires a server URL and a valid API key.\nThese are set by the app when calling the ``init()`` function.\n\nThe server setting is the URL to your instance of Highrise - e.g.\n**example.highrisehq.com**. Highrise API keys are specific to an individual\nuser - and are available in your account under the 'My info' section.\n\nYou can use the ``test_me()`` method to validate your credentials::\n\n >>> from django_highrise import init, test_me\n >>> init('example.highrisehq.com', '1234567890')\n >>> test_me()\n True\n >>>\n\nNB You must call ``init()`` before using the ``sync_user()`` function; an\nexception of type HighriseSyncException will be raised if you do not do so.\n\nEasiest option is to call ``init()`` in your **settings.py** file.\n\nShow me some code\n-----------------\n\nInitialise Highrise connection::\n\n >>> from django.conf import settings\n >>> from django_highrise import init, test_me\n >>> init(settings.HIGHRISE_SERVER, settings.HIGHRISE_API_KEY)\n >>> test_me()\n True\n >>>\n\nPush a django user to Highrise::\n\n >>> from django.contrib.auth.models import User\n >>> user = User.objects.create_user('bob', 'bob@example.com', 'password')\n >>> from django_highrise import sync_user\n >>> contact = sync(user)\n >>> contact\n \n >>>\n\nUpdate a person in Highrise from django::\n\n >>> contact.person.title = \"CEO\"\n >>> contact.save()\n\nFetch the notes about a contact from Highrise::\n\n >>> for note in contact.person.notes:\n ... print note.body\n ...\n This is a note\n This is another note\n >>>\n\nGet the Highrise URL for the contact::\n\n >>> print contact.url\n 'https://example.highrisehq.com/people/1234567'\n >>>\n\nTests\n-----\n\nThere is a test suite, and a test_settings.py file that is (I think) the\nsmallest I could get away with and still run the tests. It includes DATABASES,\nINSTALLED_APPS and LOGGING (because django_highrise logs error using logging).\nThe database setting is for sqlite3, so no additional software is required.\n\nThe repository includes a modified manage.py and test_settings.py that enable\nthe tests to be run in isolation (i.e. you could download the source repo and\nrun the tests direct from the command line using ``python manage.py test``).\nThese files are *not* included in the package, as it is assumed that the app\nwill be used within the context of an existing Django site, in which case the\nsite settings would suffice.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/hugorodgerbrown/django-highrise", "keywords": null, "license": "Copyright (c) 2013, Hugo Rodger-Brown\nAll 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\n1. Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer. \n2. Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution. \n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, 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\nON ANY 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.", "maintainer": null, "maintainer_email": null, "name": "django-highrise", "package_url": "https://pypi.org/project/django-highrise/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/django-highrise/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/hugorodgerbrown/django-highrise" }, "release_url": "https://pypi.org/project/django-highrise/0.6/", "requires_dist": null, "requires_python": null, "summary": "Highrise CRM integration for Django projects.", "version": "0.6" }, "last_serial": 725061, "releases": { "0.0": [], "0.1": [ { "comment_text": "", "digests": { "md5": "e6f22f1a2aa704373f1339b4fffdcbbc", "sha256": "39e7cf38ab6bb8ac654a4ea9ce25d4c3e3fd6a76f73ebeb37a4cdca5924e6a33" }, "downloads": -1, "filename": "django-highrise-0.1.tar.gz", "has_sig": false, "md5_digest": "e6f22f1a2aa704373f1339b4fffdcbbc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7026, "upload_time": "2013-02-15T18:52:58", "url": "https://files.pythonhosted.org/packages/1c/2d/0eaa966a2e86f709acf96085fa3bac64c5192a9446d354b4f92225b13555/django-highrise-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "8e0003bbc918cb1df967bfcc0767d49c", "sha256": "802500cecdaf5020a9e43a43138cf64a5addac0891122f48510c09068b41a140" }, "downloads": -1, "filename": "django-highrise-0.2.zip", "has_sig": false, "md5_digest": "8e0003bbc918cb1df967bfcc0767d49c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14617, "upload_time": "2013-02-16T14:02:24", "url": "https://files.pythonhosted.org/packages/19/3e/41839220a783dc8db67f609c9089c319de03955d005e1ee219a226dfded6/django-highrise-0.2.zip" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "f93123b6820f14ebd819df21873b8893", "sha256": "8a5873b6c50d03916db777fc7efba63b609bd727e6e4ba42250c83b123c9bcb2" }, "downloads": -1, "filename": "django-highrise-0.2.1.zip", "has_sig": false, "md5_digest": "f93123b6820f14ebd819df21873b8893", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15530, "upload_time": "2013-02-16T14:14:25", "url": "https://files.pythonhosted.org/packages/e8/95/bb96274bf6cac137e5575fcd9ba98ccc81ac204a96aefa29bed94867798f/django-highrise-0.2.1.zip" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "b6307e01d4de14308b27fa70b4078a5e", "sha256": "55841999937c1057f8492802cd694b2ee312eeb89289dd556469fac02fafc00f" }, "downloads": -1, "filename": "django-highrise-0.3.zip", "has_sig": false, "md5_digest": "b6307e01d4de14308b27fa70b4078a5e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15696, "upload_time": "2013-02-16T14:28:17", "url": "https://files.pythonhosted.org/packages/6a/ee/5571cfed34440505e06a9cd74a8af23ec55eb67ba85f66c309f3898c70df/django-highrise-0.3.zip" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "f38e6bda5331933be58e4e07b49c0752", "sha256": "7ff2a9b66a3d6cfa9fcee95467aa2415666b0442d8e72d5b3baab25a7a60ef9b" }, "downloads": -1, "filename": "django-highrise-0.4.zip", "has_sig": false, "md5_digest": "f38e6bda5331933be58e4e07b49c0752", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16481, "upload_time": "2013-02-16T15:37:39", "url": "https://files.pythonhosted.org/packages/58/a1/336d339e272a2769ca013b3061b381df110757a0fb365323cc94d11625ad/django-highrise-0.4.zip" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "e32abb72514a3b1e9442ed6c07f9748d", "sha256": "d65b5a3df5a9e421fff4ea41793cd3401ab468f61781d744eb71db6123fc0fe0" }, "downloads": -1, "filename": "django-highrise-0.6.zip", "has_sig": false, "md5_digest": "e32abb72514a3b1e9442ed6c07f9748d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16844, "upload_time": "2013-02-16T22:26:21", "url": "https://files.pythonhosted.org/packages/d5/b0/8cdb41478db9baf86e29e85ca75363e3fc45106d94ced3eef840f35e33f9/django-highrise-0.6.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e32abb72514a3b1e9442ed6c07f9748d", "sha256": "d65b5a3df5a9e421fff4ea41793cd3401ab468f61781d744eb71db6123fc0fe0" }, "downloads": -1, "filename": "django-highrise-0.6.zip", "has_sig": false, "md5_digest": "e32abb72514a3b1e9442ed6c07f9748d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16844, "upload_time": "2013-02-16T22:26:21", "url": "https://files.pythonhosted.org/packages/d5/b0/8cdb41478db9baf86e29e85ca75363e3fc45106d94ced3eef840f35e33f9/django-highrise-0.6.zip" } ] }