Files
cmdasana/data.py

90 lines
3.2 KiB
Python

import asana
# id of the personal projects domain
PERSONAL = 498346170860
class Data:
def __init__(self, client):
self.client = client
self.me = self.client.users.me()
def me(self):
return self.me
def myWorkspaces(self):
return self.me['workspaces']
def myTasks(self, workspace_id):
return self.client.tasks.find_all(params={
'assignee': self.me['id'],
'workspace': workspace_id,
'completed_since': 'now'
})
def allMyProjects(self):
if self.workspace_id != PERSONAL:
return self.client.projects.find_by_workspace(self.workspace_id)
else:
return self.client.projects.find_by_workspace(self.workspace_id,
page_size=None)
def tasksInProject(self, project_id):
return self.client.tasks.find_by_project(project_id, params={
'completed_since': 'now'
})
def getTask(self, task_id):
task = self.client.tasks.find_by_id(task_id, params={
'opt_fields': ['name',
'assignee.name',
'due_date',
'notes',
'parent',
'projects.name',
'subtasks.name'
]
})
stories = self.client.stories.find_by_task(task_id)
return (task, stories, task['subtasks'])
def completeTask(self, task_id):
self.client.tasks.update(task_id, completed=True)
def createTask(self, workspace, opt_projects=[], opt_after=None,
opt_assignee=None, opt_name=None):
task = self.client.tasks.create_in_workspace(workspace,
projects=opt_projects,
assignee=opt_assignee,
name=opt_name)
if opt_after and len(opt_projects) > 0:
self.client.tasks.add_project(task['id'],
project=opt_projects[0],
insert_after=opt_after)
return task
def updateTask(self, task_id, opt_name=None, opt_projects=None,
opt_assignee=None, opt_notes=None):
return self.client.tasks.update(task_id,
name=opt_name,
projects=opt_projects,
assignee=opt_assignee,
notes=opt_notes)
def addComment(self, task_id, comment):
return self.client.stories.create_on_task(task_id, {"text": comment})
def _typeahead(self, workspace, asana_type, query, count=5):
return self.client.workspaces.typeahead(workspace, {
'type': asana_type,
'query': query,
'count': count
})
def userTypeahead(self, workspace, query, count):
return self._typeahead(workspace, 'user', query, count)
def projectTypeahead(self, workspace, query, opt_count):
return self._typeahead(workspace, 'project', query, count=opt_count)