def loop_time_tracking():
    asana_api = asana.AsanaAPI('2vzk6F5m.kow34uB7cmjXnebCK0NBbYI', debug=False)
    myspaces = asana_api.list_workspaces()
    coneptum_space = [s for s in myspaces if s['name']=='Coneptum'][0]
    #print coneptum_space
    tags= asana_api.get_tags(coneptum_space['id'])
    running_tag=[t for t in tags if t['name']=='running'][0]
    #print running_tag
    running_tasks=asana_api.get_tag_tasks(running_tag['id'])

    db=asana_db.AsanaDB()
    for t in running_tasks:
        tsk=asana_api.get_task(t['id'])
        print t['id'],t['name'],tsk['completed'],(tsk['assignee']['name'] if tsk['assignee'] else '<NO ASSIGNAT>')
        if tsk['assignee']:
            e=db.create_or_get_employee(tsk['assignee'])
            t2=db.create_or_get_task(tsk)
            t2.time_track(e)
        if tsk['completed'] or '[Duplicate]' in tsk['name']:
            print "Removing tag running from:",tsk['name']
            asana_api.rm_tag_task(t['id'],running_tag['id'])

    db.commit()

    print '----------------------TIME TRACKING:-------------------'
    for tr in db.get_tracks():
        print tr
    db.close()
Пример #2
0
class TestAsana(unittest.TestCase):
    dummy_key = "dummy_key"
    asana_api = asana.AsanaAPI(dummy_key, debug=True)

    def test_asana_api_init(self):
        assert self.asana_api.apikey is not None

    def test_get_basic_auth_returns_base64_encode(self):
        encoded_key = self.asana_api.get_basic_auth()

        decoded_key = base64.b64decode(encoded_key)
        assert decoded_key == six.b(self.dummy_key + ":")
Пример #3
0
 def __init__(self, command, args, callback):
     asana_api_key = sublime.active_window().active_view().settings().get(
         'asana_api_key')
     if not asana_api_key:
         sublime.error_message(
             'You have to set asana_api_key in the Preferences.sublime-settings. folllowing { "asana_api_key" : "YOUR_API KEY" }'
         )
         self.AsanaApi = None
     else:
         self.AsanaApi = asana.AsanaAPI(asana_api_key, debug=True)
         self.command = command
         self.args = args
         self.callback = callback
         threading.Thread.__init__(self)
def mark_as_invoiced():
    asana_api = asana.AsanaAPI('2vzk6F5m.kow34uB7cmjXnebCK0NBbYI', debug=False)
    myspaces = asana_api.list_workspaces()
    coneptum_space = [s for s in myspaces if s['name'] == 'Coneptum'][0]
    #print coneptum_space
    tags = asana_api.get_tags(coneptum_space['id'])
    to_invoice_tag = [t for t in tags if t['name'] == 'to_invoice'][0]
    invoiced_tag = [t for t in tags if t['name'] == 'invoiced'][0]
    #print to_invoice_tag
    to_invoice_tasks = asana_api.get_tag_tasks(to_invoice_tag['id'])
    for t in to_invoice_tasks:
        if t['name'] != 'Fluxe Movil':
            print t
            #asana_api.add_tag_task(t['id'],invoiced_tag['id'])
            asana_api.rm_tag_task(t['id'], to_invoice_tag['id'])
Пример #5
0
    def get(self):
        root_task_tree = []

        asana_api = asana.AsanaAPI(asana_appkey, debug=True)
        myspaces = asana_api.list_workspaces()

        workspaces = dict((work["name"], work["id"]) for work in myspaces)
        workspace_id = workspaces["Personal"]

        users = asana_api.list_users()
        users = dict((u["name"], u["id"]) for u in users)

        user_name = "Stupid ET"
        user_id = users[user_name]

        # 列出项目
        projects = asana_api.list_projects(workspace_id)
        for proj in projects:
            proj_dict = {"name": proj["name"], "children": []}
            root_task_tree.append(proj_dict)

            # 列出项目的task
            tasks = asana_api.get_project_tasks(proj["id"], True)

            # 列出task的子task
            for task in tasks:
                task_dict = {"name": task["name"], "children": []}
                proj_dict["children"].append(task_dict)
                self.fill_subtasks(asana_api, task["id"], task_dict)

        redis_db["asana_tree"] = redis_encode({
            "name": "ET",
            "children": root_task_tree
        })

        self.write({"name": "ET", "children": root_task_tree})
Пример #6
0
from asana import asana
import choice
from pprint import pprint
import requests
import json

asana_api = asana.AsanaAPI('', debug=True)

# tasks =

# for task in asana_api.get_project_tasks(17412748309135):
# 	resp = requests.post("http://localhost:5000/tasks",
# 		data=json.dumps({'title': task['name'],
# 			             'project': "54c4e110d54df36a33fb1f72",
# 			             'external_id': {'asana_id': task['id']}}),
# 		headers={'content-type': 'application/json'}
# 	)
# 	if resp.ok:
# 		print task['name'], resp.status_code
# 	else:
# 		import pdb; pdb.set_trace()

# import pdb; pdb.set_trace()
choices = [(item['id'], item['name']) for item in asana_api.list_workspaces()]

workspace = choice.Menu(choices).ask()

for project in asana_api.list_projects(workspace, include_archived=False):
    # {u'id': 20786005245857, u'name': u'API 0.4'}
    # import pdb; pdb.set_trace()
    extended_project = asana_api.get_project(project['id'])
Пример #7
0
def get_all_users():
    asana_api = asana.AsanaAPI('2vzk6F5m.kow34uB7cmjXnebCK0NBbYI', debug=False)
    myspaces = asana_api.list_workspaces()
    coneptum_space = [s for s in myspaces if s['name'] == 'Coneptum'][0]
    print asana_api.list_users(coneptum_space['id'])
Пример #8
0
    def __init__(self):
        """

        """
        self.__asana_api = asana.AsanaAPI('6muBM1Ce.T7a9CNPAjqLScdNgknQOdL6',
                                          debug=True)
Пример #9
0
from pylabs.InitBase import *
import sys

q.application.appname = "asana"
q.application.start()

q.jshellconfig.interactive = True

from asana import asana

asana_api = asana.AsanaAPI('16292ivi.YZCO5tfu0S16OimpyunknzJ', debug=True)

myspaces = asana_api.list_workspaces()

incubaidid = 3864381820193L
awinguid = 5244288044012L
incubaid_despiegk = 3864381820188L

users_incubaid = asana_api.list_users(incubaidid)
users_awingu = asana_api.list_users(awinguid)

out = "tasks"
outtxt = ""
for task in asana_api.list_tasks(incubaidid, incubaid_despiegk):
    task_id = task["id"]
    task = asana_api.get_task(task_id)
    print task

    if task["completed"] == False:
        status = task["assignee_status"].encode("ascii")
        notes = task["notes"]
Пример #10
0
def main():
    options = parse()
    asana_api = asana.AsanaAPI(options.asana_api_key, debug=options.verbose)
    github_api = Github(options.username, options.password)
    git_repo = github_api.get_repo(options.repo)
    migrate_asana_to_github(asana_api, options.projectid, git_repo, options)
Пример #11
0
def test_list_generator():
    asana_api = asana.AsanaAPI('2vzk6F5m.kow34uB7cmjXnebCK0NBbYI', debug=False)
    coneptum_asana=ConeptumAsanaAPI('',debug=True)
    #ListProcessor(asana_api,'list_workspaces').out(Printer().process()
    #import pdb
    #pdb.set_trace()
    EvId=Ev("elem['id']")
    ListProcessor(asana_api,'list_workspaces').out(
        ElementProcessor(coneptum_asana,'_asana_put',(Ev("'workspaces/'+str(elem['id'])"),Ev("elem")))
    ).process()
    
    ListProcessor(asana_api,'list_workspaces').out(
        Printer('-Workspace:'),
        ElementFilter(Ev("elem['name']=='Coneptum'")).out(
            ListProcessor(asana_api,'list_users',[],{'workspace':EvId}).out(
                   Printer("--User"),
                   ElementProcessor(asana_api,'user_info',[EvId],{}).out(
                         Printer(),
                         TxIdWorkspaces().out(
                            Printer("---User transformed"),
                            ElementProcessor(coneptum_asana,'_asana_put',(Ev("'users/'+str(elem['id'])"),Ev("elem"))),
                            )
                    )
                )
        )
    ).process()

    ListProcessor(asana_api,'list_workspaces').out(
        Printer('-Workspace:'),
        ElementFilter(Ev("elem['name']=='Coneptum'")).out(
            ListProcessor(asana_api,'get_tags',[],{'workspace':EvId}).out(
                   Printer("--Tags"),
                   ElementProcessor(asana_api,'get_tag',[EvId],{}).out(  
                       Printer('----Tag detail'),
                       TxIdWorkspace().out(
                            Printer("Tag transformed"),
                            ElementProcessor(coneptum_asana,'_asana_put',(Ev("'tags/'+str(elem['id'])"),Ev("elem"))),
                            )
                   )                
                )
        )
    ).process()

    ListProcessor(asana_api,'list_workspaces').out(
        Printer('-Workspace:'),
        ElementFilter(Ev("elem['name']=='Coneptum'")).out(
            ListProcessor(asana_api,'list_projects',[],{'workspace':EvId,'include_archived':False}).out(
                   Printer("--Projects"),
                   ElementProcessor(asana_api,'get_project',[EvId],{}).out(  
                       Printer('----Project detail'),
                       TxProject().out(
                            Printer('-----Project transformed'),
                            ElementProcessor(coneptum_asana,'_asana_put',(Ev("'projects/'+str(elem['id'])"),Ev("elem"))),
                            )
                   )                
                )
        )
    ).process()


    ListProcessor(asana_api,'list_workspaces').out(
        Printer('-Workspace:'),
        ElementFilter(Ev("elem['name']=='Coneptum'")).out(
            ListProcessor(asana_api,'list_projects',[],{'workspace':EvId,'include_archived':False}).out(
                   Printer("--Projects"),
                   ListProcessor(asana_api,'get_project_tasks',[EvId],{}).out(
                        Printer("----Tasks"),
                        ElementProcessor(asana_api,'get_task',[EvId],{}).out(
                            Printer("----Task detail"),
                            TxTask().out(
                                Printer('-----Task transformed'),
                                ElementProcessor(coneptum_asana,'_asana_put',(Ev("'tasks/'+str(elem['id'])"),Ev("elem")))
                            ),
                        ),
                    )             
                )
        )
    ).process()