Skip to main content
Warning: You are using the test version of PyPI. This is a pre-production deployment of Warehouse. Changes made here affect the production instance of TestPyPI (
Help us improve Python packaging - Donate today!

Django Asana integration project

Project Description

:License: MIT

django-asana leverages python-asana, the official python client library for Asana. To this, django-asana adds
django models and commands for importing data from Asana into these models.

Detailed documentation is in the "docs" directory.


``django-asana`` aims to allow for rich interaction between Django projects and Asana projects. The vision is to allow automated processes done in Django to interact with human Asana users toward project completion. For example, an Asana project might include a workflow of ten tasks that must all be completed in order. This tool will monitor the Asana project status, complete the automated steps when they are ready to be done, and report completion bask to Asana so the workflow may continue.

For now, this tool can do a one time sync from Asana, storing the current status of workspaces, projects, and tasks in Django models. Depending on the size of the Asana workspaces, this initial sync may take some time. Successive syncs are faster if they are performed within the hour, which is the timeout for Asana's sync token. Webhook receivers are registered so the Django project will remain synced to Asana in real-time. Task.sync_to_asana() can be used to update Asana to reflect local changes, like task completion.


#. Python 3+
#. `Django 1.8+ <>`_
#. `python-asana 0.6.2+ <>`_
#. `django-braces 1.10+ <>`_ for JsonRequestResponseMixin


This will also install `python-asana <>`_.

$ pip install django-asana

Quick start

#. Configure your django settings file. Asana allows two different connection methods. For Oauth2, provide values for the following settings: ASANA_CLIENT_ID, ASANA_CLIENT_SECRET, and ASANA_OAUTH_REDIRECT_URI. To use an access token, provide a value for ASANA_ACCESS_TOKEN. Then add "django-asana" to your INSTALLED_APPS setting like this::


If you have multiple Asana workspaces but only ever need to sync one with Django, specify it:

ASANA_WORKSPACE = 'This Workspace'

In the production version of your settings, set a base url for the webhooks. It must be reachable by Asana and secured by SSL. In your dev environment it is fine to leave this setting out; your project will be synced whenever you run the management command.


With that value, your webhook urls will be something like this:

#. To enable webhooks so Asana can keep your data in sync, add the following to your base

urlpatterns += [
url(r'^', include('djasana.urls')),

#. Run `python migrate` to create the Asana models.
#. Run the command to synchronize data from Asana to Django:

$ python sync_from_asasa

Command line options

Note: Due to option parsing limitations, it is less error prone to pass in the id of the object rather than the name.

Good example:

$ python sync_from_asana -w 123456

Bad example:

$ python sync_from_asana -w="Personal Projects"` sync_from_asana: error: unrecognized arguments: Projects

=================== ======================================================
``--workspace, -w`` Restrict work to the specified Asana workspace, by id or name. Can be used
multiple times. By default, all workspaces will used.

Ex: python sync_from_asana -w 1234567890

``--project, -p`` Restrict work to the specified Asana project, by id or name. Can be used
multiple times. By default, all projects will used. If you specify a project
and have multiple workspaces and have not set ASANA_WORKSPACE, also specify the workspace.

Ex: python sync_from_asana -p
python sync_from_asana -w 1234567890 -p

``--model, -m`` Restrict work to the named model. Can be used
multiple times. By default, all models will used.
Capitalization is ignored.

Ex: python sync_from_asana -m Workspace -m Project -m Task

``--archive, -a`` Sync task, attachments, etc. of projects even if those projects are
archived. The default behavior is to skip these, saving a lot of processing
for larger data sets.

``--nocommit`` Connects to Asana and outputs work in debug log but does not commit any
database changes.

``--noinput`` Skip the warning that running this process will make data changes.
=================== ======================================================

See also `python sync_from_asana --help`

Other Settings

To restrict your project to a single workspace, add the setting ASANA_WORKSPACE.

ASANA_WORKSPACE = 'Personal Projects'


django-asana does not support updating user photo data. It will read user photo data from Asana, if available, but only the path to the 128x128 version of the photo.
Release History

Release History

This version
History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


Download Files

Download Files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
django-asana-0.4.5.tar.gz (20.1 kB) Copy SHA256 Checksum SHA256 Source Aug 10, 2017

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS 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