def get_results(app): more_results = len(pbclient.get_taskruns(app_id=app.id, limit=1, offset=0)) > 0 limit = 300 offset = 0 task_runs = [] while more_results: response = pbclient.get_taskruns(app_id=app.id, limit=limit, offset=offset) if len(response) > 0: task_runs += response offset += limit else: more_results = False return task_runs
def GET(self, app_name): app = _get_app(app_name) taskruns = pbclient.get_taskruns(app.id, limit=3000) taskruns_by_id = {} self.sdsd = '' for taskrun in taskruns: if taskrun.task_id not in taskruns_by_id: taskruns_by_id[taskrun.task_id] = 0 taskruns_by_id[taskrun.task_id] += 1 tasks = pbclient.get_tasks(app.id, limit=1000) task_status = {} taskruns_needed = 0 taskruns_finished = 0 for task in tasks: num_taskruns = 0 if task.id in taskruns_by_id: num_taskruns = taskruns_by_id[task.id] task_status[task.id] = (num_taskruns, task.info['n_answers']) taskruns_needed += task.info['n_answers'] taskruns_finished += min(task.info['n_answers'], num_taskruns) result = { 'num_tasks': len(tasks), 'task_status': task_status, 'taskruns_needed': taskruns_needed, 'taskruns_finished': taskruns_finished } return json.dumps(result)
"--server", help="PyBossa URL http://domain.com/", default="http://crowdcrafting.org") args = parser.parse_args() pbclient.set('api_key', args.api_key) pbclient.set('endpoint', args.server) response = pbclient.find_app(short_name='RuralGeolocator') # Check errors: if type(response) == dict and (response.get('status') == 'failed'): print "Error" print response exit(0) # Get the app app = response[0] data = pbclient.get_taskruns(app_id=app.id, limit=1000, offset=0) limit = 100 offset = 0 task_runs = [] while len(data) > 0: response = pbclient.get_taskruns(app_id=app.id, limit=limit, offset=offset) if type(response) != dict: # Add the new task runs task_runs += response data = response offset += 100 else: # Break the while data = []
# Get all the task runs offset = 0 for app_short_name in list_names: app = pbclient.find_app(short_name=app_short_name.rstrip()) list_apps.append(app) for app in list_apps: print "Generating stats for %s" % unicode(app[0].name).encode('utf-8') if (len(app) > 0): app = app[0] users = [] anon_users = [] auth_users =[] task_runs = pbclient.get_taskruns(app.id) dates = {} dates_anon = {} dates_auth = {} dates_n_tasks = {} dates_estimate = {} hours = {} hours_anon = {} hours_auth = {} max_hours = 0 max_hours_anon = 0 max_hours_auth = 0 # initialize hours keys for i in range(0,24): hours[u'%s' % i]=0
parser = ArgumentParser() parser.add_argument("-k", "--api-key", help="PyBossa User API-KEY to interact with PyBossa", required=True) parser.add_argument("-s", "--server", help="PyBossa URL http://domain.com/", default="http://crowdcrafting.org") args = parser.parse_args() pbclient.set('api_key', args.api_key) pbclient.set('endpoint', args.server) response = pbclient.find_app(short_name='RuralGeolocator') # Check errors: if type(response) == dict and (response.get('status') == 'failed'): print "Error" print response exit(0) # Get the app app = response[0] data = pbclient.get_taskruns(app_id=app.id, limit=1000, offset=0) limit = 100 offset = 0 task_runs = [] while len(data) > 0: response = pbclient.get_taskruns(app_id=app.id, limit=limit, offset=offset) if type(response) != dict: # Add the new task runs task_runs += response data = response offset += 100 else: # Break the while data = []