diff --git a/repos/59fd9019f415fe8dd8f802c456be2b13/pybossa.py b/repos/59fd9019f415fe8dd8f802c456be2b13/pybossa.py new file mode 100644 index 0000000..9ccbda6 --- /dev/null +++ b/repos/59fd9019f415fe8dd8f802c456be2b13/pybossa.py @@ -0,0 +1,72 @@ +# coding: utf-8 + +import requests +import sys + +HOST = 'http://localhost' + + +def get_count_all(user_name, host=HOST): + user = get_user(user_name, host) + user_id = user['id'] + + page = 0 + total = 0 + + while True: + r = requests.get(host+'/api/taskrun', + params={'user_id': 2, + 'limit': 100, + 'offset': total}, + headers={'content-type': 'application/json'}) + if r.status_code != 200: + raise Exception('Error in call') + delta = len(r.json()) + if not delta: + break + total += delta + return total + + +def get_user_name(user_id, host=HOST): + r = requests.get('{}/api/user/{}'.format(host, user_id), + headers={'content-type': 'application/json'}) + if r.status_code != 200: + raise Exception(r) + return r.json()['name'] + + +def get_user(user_name, host=HOST): + r = requests.get('{}/account/{}/'.format(host, user_name), + headers={'content-type': 'application/json'}) + if r.status_code != 200: + raise Exception(r) + return r.json()['user'] + +def get_all_users(host=HOST): + r = requests.get('{}/account/'.format(host), + headers={'content-type': 'application/json'}) + if r.status_code != 200: + raise Exception(r) + return [u['name'] for u in r.json()['accounts']] + +def get_count(user_name, host=HOST): + user = get_user(user_name) + return user['n_answers'] + + +if __name__ == '__main__': + import argparse + + parser = argparse.ArgumentParser(description='Get the number of responses.') + parser.add_argument('--host', type=str, + default=HOST, help='Pybossa hostname') + parser.add_argument('user_name', type=str, nargs='?', + help='User name') + + args = parser.parse_args() + if args.user_name: + print(get_count(args.user_name, host=args.host)) + else: + for user in get_all_users(args.host): + print(user, get_count(user, args.host)) \ No newline at end of file