This is a pre-production deployment of Warehouse, however changes made here WILL affect the production instance of PyPI.
Latest Version Dependencies status unknown Test status unknown Test coverage unknown
Project Description

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 library from Jason Ford.

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.

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, and a test_settings.py file that is (I think) the smallest I could get away with and still run the tests. It includes DATABASES, INSTALLED_APPS and LOGGING (because django_highrise logs error using logging). The database setting is for sqlite3, so no additional software is required.

The repository includes a modified manage.py and test_settings.py that enable the tests to be run in isolation (i.e. you could download the source repo and run the tests direct from the command line using python manage.py test). These files are not included in the package, as it is assumed that the app will be used within the context of an existing Django site, in which case the site settings would suffice.

Release History

Release History

0.6

This version

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.4

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.3

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2.1

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.1

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.0

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

Download Files

Download Files

TODO: Brief introduction on what you do with files - including link to relevant help section.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
django-highrise-0.6.zip (16.8 kB) Copy SHA256 Checksum SHA256 Source Feb 16, 2013

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS HPE HPE Development Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting