Creating Data in AsanaΒΆ
To create data in Asana, use the client provided by django-asana but beyond that use python-asana directly.
from dateutil.parser import parse
from django.db import IntegrityError
from djasana.connect import client_connect
from djasana.models import Task
def create_task():
client = client_connect()
workspace_id # A djasana.models.Workspace.remote_id
task = {} # A dict of values you want to create
task_response = client.tasks.create(workspace=workspace_id, **task)
task_response['remote_id'] = task_response.pop('id', None)
task_response.pop('gid', None)
task_response.pop('resource_type', None)
task_response.pop('resource_subtype', None)
task_response['assignee_id'] = task_response.pop('assignee')['id']
if 'due_on' in task_response and isinstance(task_response['due_on'], str):
task_response['due_on'] = parse(task_response['due_on'])
if 'parent' in task_response and task_response['parent']:
task_response['parent_id'] = task_response.pop('parent')['id']
for key in (
'followers', 'hearts', 'liked', 'likes', 'num_likes', 'num_hearts',
'memberships', 'projects', 'tags', 'workspace'):
task_response.pop(key, None)
try:
task_ = Task.objects.create(**task_response)
except IntegrityError:
# This task already got created by webhook!
pass