Esempio n. 1
0
def show():
    fmt_str = "{:<20}{:>50}\n"
    conf = config.get()
    t_id = conf['state']['task']
    uri = '/tasks/{}'.format(t_id)
    task = client.get(uri)
    projects = map(lambda x: x['name'], task['projects'])

    sys.stdout.write(fmt_str.format('Name:', task['name']))
    sys.stdout.write(
        fmt_str.format('Parent:', task['parent'] if task['parent'] else ''))
    sys.stdout.write(fmt_str.format('Created:', task['created_at']))
    sys.stdout.write(fmt_str.format('Modified:', task['modified_at']))
    sys.stdout.write(
        fmt_str.format('Due:', task['due_on'] if task['due_on'] else ''))
    sys.stdout.write(fmt_str.format('Workspace:', task['workspace']['name']))
    sys.stdout.write(fmt_str.format('Projects:', ', '.join(projects)))
    sys.stdout.write(fmt_str.format('Notes:', task['notes']))
    sys.stdout.write('Comments:\n\n')

    uri = '/tasks/{}/stories'.format(t_id)
    stories = client.get(uri)
    for story in stories:
        if story['type'] == 'comment':
            sys.stdout.write('{:<80}'.format(story['text']))
            sys.stdout.write('\n' + '-' * 40 + '\n')
Esempio n. 2
0
def set():
    conf = config.get()
    if 'state' not in conf:
        conf['state'] = {}
    ec, workspaces = list()
    ws_id = 0 
    while ws_id > len(workspaces) or ws_id <= 0:
        ws_id = input('Active workspace: ')
        if ws_id > len(workspaces) or ws_id <= 0:
            sys.stderr.write('Unknown workspace, valid options are 1 - {}\n'.format(len(workspaces)))
    conf['state']['workspace'] = workspaces[int(ws_id) - 1]['id']
    config.write(conf)
Esempio n. 3
0
def task_set():
    conf = config.get()
    if 'state' not in conf:
        conf['state'] = {}
    ec, ts = tasks()
    t_id = 0 
    while t_id > len(ts) or t_id <= 0:
        t_id = input('Active task: ')
        if t_id > len(ts) or t_id <= 0:
            sys.stderr.write('Unknown task, valid options are 1 - {}\n'.format(len(ts)))
    conf['state']['task'] = ts[int(t_id) - 1]['id']
    config.write(conf)
Esempio n. 4
0
def list():
    fmt_str = "{:<5}{:<20}{:<20}\n"
    sys.stdout.write(fmt_str.format('', 'ID','Name'))

    conf = config.get()
    ws_id = conf['state']['workspace']
    uri = '/workspaces/{}/projects'.format(ws_id)
    projs = client.get(uri)

    for i, p in enumerate(projs):
        sys.stdout.write(fmt_str.format('[%s]' % (i+1), p['id'], p['name']))
    return 0, projs
Esempio n. 5
0
def list():
    fmt_str = "{:<5}{:<20}{:<20}\n"
    sys.stdout.write(fmt_str.format('', 'ID', 'Name'))

    conf = config.get()
    ws_id = conf['state']['workspace']
    uri = '/workspaces/{}/projects'.format(ws_id)
    projs = client.get(uri)

    for i, p in enumerate(projs):
        sys.stdout.write(fmt_str.format('[%s]' % (i + 1), p['id'], p['name']))
    return 0, projs
Esempio n. 6
0
def tasks():
    fmt_str = "{:<5}{:<20}{:<20}\n"
    sys.stdout.write(fmt_str.format('', 'ID', 'Name'))

    conf = config.get()
    p_id = conf['state']['project']
    uri = '/projects/{}/tasks'.format(p_id)
    params = {'assignee': conf['state']['user_id'], 'completed_since': 'now'}
    tasks = client.get(uri, params=params)

    for i, t in enumerate(tasks):
        sys.stdout.write(fmt_str.format('[%s]' % (i + 1), t['id'], t['name']))
    return 0, tasks
Esempio n. 7
0
def task_set():
    conf = config.get()
    if 'state' not in conf:
        conf['state'] = {}
    ec, ts = tasks()
    t_id = 0
    while t_id > len(ts) or t_id <= 0:
        t_id = input('Active task: ')
        if t_id > len(ts) or t_id <= 0:
            sys.stderr.write('Unknown task, valid options are 1 - {}\n'.format(
                len(ts)))
    conf['state']['task'] = ts[int(t_id) - 1]['id']
    config.write(conf)
Esempio n. 8
0
def set():
    conf = config.get()
    if 'state' not in conf:
        conf['state'] = {}
    ec, projs = list()
    p_id = 0 
    while p_id > len(projs) or p_id <= 0:
        p_id = input('Active project: ')
        if p_id > len(projs) or p_id <= 0:
            sys.stderr.write('Unknown project, valid options are 1 - {}\n'.format(len(projs)))
    conf['state']['project'] = projs[int(p_id) - 1]['id']
    config.write(conf)
    return 0
Esempio n. 9
0
def set():
    conf = config.get()
    if 'state' not in conf:
        conf['state'] = {}
    ec, workspaces = list()
    ws_id = 0
    while ws_id > len(workspaces) or ws_id <= 0:
        ws_id = input('Active workspace: ')
        if ws_id > len(workspaces) or ws_id <= 0:
            sys.stderr.write(
                'Unknown workspace, valid options are 1 - {}\n'.format(
                    len(workspaces)))
    conf['state']['workspace'] = workspaces[int(ws_id) - 1]['id']
    config.write(conf)
Esempio n. 10
0
def set():
    conf = config.get()
    if 'state' not in conf:
        conf['state'] = {}
    ec, projs = list()
    p_id = 0
    while p_id > len(projs) or p_id <= 0:
        p_id = input('Active project: ')
        if p_id > len(projs) or p_id <= 0:
            sys.stderr.write(
                'Unknown project, valid options are 1 - {}\n'.format(
                    len(projs)))
    conf['state']['project'] = projs[int(p_id) - 1]['id']
    config.write(conf)
    return 0
Esempio n. 11
0
def _do_requst(method, uri, params=None, data=None):
    func = getattr(requests, method)

    if params is not None:
        func = partial(func, params=params)

    if data is not None:
        func = partial(func, data=data)

    conf = config.get()
    url = make_url(uri)
    resp = func(url, headers={'Authorization': 'Bearer {}'.format(conf['api_token'])})
    data = resp.json()
    data = data['data'] if 'data' in data else data
    return data
Esempio n. 12
0
def list():
    fmt_str = "{:<5}{:<20}{:<20}\n"
    sys.stdout.write(fmt_str.format('', 'ID','Name'))

    conf = config.get()
    ws_id = conf['state']['workspace']
    uri = '/workspaces/{}/tasks'.format(ws_id)
    params = {
        'assignee': conf['state']['user_id'],
        'completed_since': 'now'
    }
    tasks = client.get(uri, params=params)

    for i, t in enumerate(tasks):
        sys.stdout.write(fmt_str.format('[%s]' % (i+1), t['id'], t['name']))
    return 0, tasks
Esempio n. 13
0
def _do_requst(method, uri, params=None, data=None):
    func = getattr(requests, method)

    if params is not None:
        func = partial(func, params=params)

    if data is not None:
        func = partial(func, data=data)

    conf = config.get()
    url = make_url(uri)
    resp = func(
        url, headers={'Authorization': 'Bearer {}'.format(conf['api_token'])})
    data = resp.json()
    data = data['data'] if 'data' in data else data
    return data
Esempio n. 14
0
def main():
    from . import __version__
    args = docopt(__doc__, version='asa {}'.format(__version__))

    if args['conf']:
        if args['me']:
            ec = config._set_me()
        else:
            ec = config.init()
        sys.exit(ec)

    conf = config.get()
    if not conf:
        sys.stderr.write("Please run 'asa configure' before running for the first time.\n")
        sys.exit(1)

    if args['state']:
      ec = config.show()
    elif args['ws']:
        if args['t']:
            if args['set']:
                ec = workspace.task_set()
            else:
                ec, _ = workspace.tasks()
        elif args['set']:
            ec = workspace.set()
        elif args['<workspace_id>'] is not None:
            ec = workspace.show(args['<workspace_id>'])
        else:
            ec, _ = workspace.list()
    elif args['p']:
        if args['t']:
            if args['set']:
                ec = project.task_set()
            else:
                ec, _ = project.tasks()
        elif args['set']:
            ec = project.set()
        else:
            ec, _ = project.list()
    elif args['t']:
        ec = task.show()

    sys.exit(ec)
Esempio n. 15
0
def show():
    fmt_str = "{:<20}{:>50}\n"
    conf = config.get()
    t_id = conf['state']['task']
    uri = '/tasks/{}'.format(t_id)
    task = client.get(uri)
    projects = map(lambda x: x['name'], task['projects'])

    sys.stdout.write(fmt_str.format('Name:', task['name'])) 
    sys.stdout.write(fmt_str.format('Parent:', task['parent'] if task['parent'] else ''))
    sys.stdout.write(fmt_str.format('Created:', task['created_at']))
    sys.stdout.write(fmt_str.format('Modified:', task['modified_at']))
    sys.stdout.write(fmt_str.format('Due:', task['due_on'] if task['due_on'] else ''))
    sys.stdout.write(fmt_str.format('Workspace:', task['workspace']['name']))
    sys.stdout.write(fmt_str.format('Projects:', ', '.join(projects)))
    sys.stdout.write(fmt_str.format('Notes:', task['notes']))
    sys.stdout.write('Comments:\n\n')

    uri = '/tasks/{}/stories'.format(t_id)
    stories = client.get(uri)
    for story in stories:
        if story['type'] == 'comment':
            sys.stdout.write('{:<80}'.format(story['text'])) 
            sys.stdout.write('\n' + '-' * 40 + '\n')
Esempio n. 16
0
def make_url(uri):
    conf = config.get()
    return 'https://{}/api/1.0/{}'.format(conf['api_host'], uri.lstrip('/'))
Esempio n. 17
0
def make_url(uri):
    conf = config.get()
    return 'https://{}/api/1.0/{}'.format(conf['api_host'], uri.lstrip('/'))