Metadata-Version: 1.1
Name: django-highrise
Version: 0.3
Summary: Highrise CRM integration for Django projects.
Home-page: https://github.com/hugorodgerbrown/django-highrise
Author: Hugo Rodger-Brown
Author-email: hugo@yunojuno.com
License: Copyright (c) 2013, Hugo Rodger-Brown
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met: 

1. Redistributions of source code must retain the above copyright notice, this
   list of conditions and the following disclaimer. 
2. Redistributions in binary form must reproduce the above copyright notice,
   this list of conditions and the following disclaimer in the documentation
   and/or other materials provided with the distribution. 

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Description: # Django-Highrise
        
        This app provides integration between Django and Highrise, which is used to
        provide CRM capabilities.
        
        Currently this supports only one operation - pushing a user to Highrise.
        
        It uses the [pyrise](https://github.com/feedmagnet/pyrise) library.
        
        ## Why bother?
        
        Django is a great web app framework, it's not such a good CRM tool. Sometimes
        you need a little bit extra. Highrise is a simple CRM product from the guys
        behind Basecamp. It allows you to keep tabs on contacts (amongst a lot of
        other sales-related stuff), and has a great email integration feature. You can
        read more about it at [http://highrisehq.com/signup](http://highrisehq.com/signup).
        
        ## Tell me more
        
        This app simplifies the process of integrating with Highrise. It provides the
        API hooks to allow you to push django user records into Highrise, and to read
        a Highrise contact's feed (notes, emails, comments) back out. Where and when
        you use these hooks is up to you. It could be at the point of user registration,
        it could be through the Django admin site, it could even be from the command
        line, run as a batch job overnight.
        
        Under the hood django-highrise is a wrapper around pyrise, and so the objects
        returned are standard pyrise Person, Note, Email objects. This allows you to
        use them in your own code, for instance for adding additional attributes
        beyond just the core User attributes.
        
        The app comes with a single model - HighriseContact. This is used to track
        the fact that a User has been synced with Highrise, and to contain some basic
        utility attributes that make further integration easier.
        
        ## Network considerations
        
        It is very important to bear in mind that this app makes a number of calls
        across the public internet, and is therefore neither highly performant, nor
        immune to standard network connectivity issues. It should *not* therefore be
        integrated in any area of your application where an unexpected 30s network
        timeout would cause a problem. i.e. do not include this as a synchronous call
        in your registration process.
        
        When you sync a User to Highrise two network calls take place: first, a GET is
        issued to the API to fetch any possible matches, then, if none are found, a
        POST is issued to push the new contact to the API. If you wanted to add further
        attributes to the Person and save those back to Highrise, that would be three
        network calls. **Caveat emptor**.
        
        ## Configuration
        
        The underlying `pyrise` library requires a server URL and a valid API key. These
        are set by the app when calling the `init()` function.
        
        The server setting is the URL to your instance of Highrise - e.g. **example.highrisehq.com**.
        Highrise API keys are specific to an individual user - and are available in
        your account under the 'My info' section.
        
        You can use the `test_me()` method to validate your credentials:
        
            >>> from django_highrise import init, test_me
            >>> init('example.highrisehq.com', '1234567890')
            >>> test_me()
            True
            >>>
        
        NB You must call `init()` before using the `sync_user()` function; an exception
        of type HighriseSyncException will be raised if you do not do so.
        
        Easiest option is to call `init()` in your `settings.py` file.
        
        ## Show me some code
        
        Initialise Highrise connection:
        
            >>> from django.conf import settings
            >>> from django_highrise import init, test_me
            >>> init(settings.HIGHRISE_SERVER, settings.HIGHRISE_API_KEY)
            >>> test_me()
            True
            >>>
        
        Push a django user to Highrise:
        
            >>> from django.contrib.auth.models import User
            >>> user = User.objects.create_user('bob', 'bob@example.com', 'password')
            >>> from django_highrise import sync_user
            >>> contact = sync(user)
            >>> contact
            <HighriseContact: bob = 1234567>
            >>>
        
        Update a person in Highrise from django:
        
            >>> contact.person.title = "CEO"
            >>> contact.save()
        
        Fetch the notes about a contact from Highrise:
        
            >>> for note in contact.person.notes:
            ...   print note.body
            ...
            This is a note
            This is another note
            >>>
        
        Get the Highrise URL for the contact:
        
            >>> print contact.url
            'https://example.highrisehq.com/people/1234567'
            >>>
        
        ## Tests
        
        There is a test suite, please bear in mind that it will only run within the
        context of a django app.
Platform: UNKNOWN
Classifier: Environment :: Web Environment
Classifier: Framework :: Django
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2.7
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
