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
예제 #2
0
    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)
예제 #3
0
                    "--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 = []
예제 #4
0
    # 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 = []