def check_battery_view(battery, worker_id): missing_batteries, blocking_batteries = check_battery_dependencies(battery, worker_id) if missing_batteries or blocking_batteries: return render_to_response( "turk/battery_requirements_not_met.html", context={'missing_batteries': missing_batteries, 'blocking_batteries': blocking_batteries} ) else: return None
def serve_battery(request, bid, userid=None): '''prepare for local serve of battery''' next_page = None battery = get_battery(bid, request) # No robots allowed! if request.user_agent.is_bot: return render_to_response("turk/robot_sorry.html") # Is userid not defined, redirect them to preview if userid is None: return preview_battery(request, bid) worker = get_worker(userid, create=False) if isinstance(worker, list): # no id means returning [] return render_to_response("turk/invalid_id_sorry.html") missing_batteries, blocking_batteries = check_battery_dependencies( battery, userid) if missing_batteries or blocking_batteries: return render_to_response("turk/battery_requirements_not_met.html", context={ 'missing_batteries': missing_batteries, 'blocking_batteries': blocking_batteries }) # Try to get some info about browser, language, etc. browser = "%s,%s" % (request.user_agent.browser.family, request.user_agent.browser.version_string) platform = "%s,%s" % (request.user_agent.os.family, request.user_agent.os.version_string) deployment = "docker-local" # Does the worker have experiments remaining? uncompleted_experiments = get_worker_experiments(worker, battery) experiments_left = len(uncompleted_experiments) if experiments_left == 0: # Thank you for your participation - no more experiments! return render_to_response("turk/worker_sorry.html") task_list = select_experiments(battery, uncompleted_experiments) experimentTemplate = ExperimentTemplate.objects.filter( exp_id=task_list[0].template.exp_id)[0] experiment_type = get_experiment_type(experimentTemplate) task_list = battery.experiments.filter(template=experimentTemplate) # Generate a new results object for the worker, assignment, experiment result, _ = Result.objects.update_or_create(worker=worker, experiment=experimentTemplate, battery=battery, defaults={ "browser": browser, "platform": platform }) result.save() context = {"worker_id": worker.id, "uniqueId": result.id} # If this is the last experiment, the finish button will link to a thank # you page. if experiments_left == 1: next_page = "/finished" # Determine template name based on template_type template = "%s/serve_battery.html" % (experiment_type) return deploy_battery(deployment="docker-local", battery=battery, experiment_type=experiment_type, context=context, task_list=task_list, template=template, next_page=next_page, result=result, experiments_left=experiments_left - 1)
def serve_battery(request,bid,userid=None): '''prepare for local serve of battery''' next_page = None battery = get_battery(bid,request) # No robots allowed! if request.user_agent.is_bot: return render_to_response("turk/robot_sorry.html") # Is userid not defined, redirect them to preview if userid == None: return preview_battery(request,bid) worker = get_worker(userid,create=False) if isinstance(worker,list): # no id means returning [] return render_to_response("turk/invalid_id_sorry.html") missing_batteries, blocking_batteries = check_battery_dependencies(battery, userid) if missing_batteries or blocking_batteries: return render_to_response( "turk/battery_requirements_not_met.html", context={'missing_batteries': missing_batteries, 'blocking_batteries': blocking_batteries} ) # Try to get some info about browser, language, etc. browser = "%s,%s" %(request.user_agent.browser.family,request.user_agent.browser.version_string) platform = "%s,%s" %(request.user_agent.os.family,request.user_agent.os.version_string) deployment = "docker-local" # Does the worker have experiments remaining? uncompleted_experiments = get_worker_experiments(worker,battery) experiments_left = len(uncompleted_experiments) if experiments_left == 0: # Thank you for your participation - no more experiments! return render_to_response("turk/worker_sorry.html") task_list = select_experiments(battery,uncompleted_experiments) experimentTemplate = ExperimentTemplate.objects.filter(exp_id=task_list[0].template.exp_id)[0] experiment_type = get_experiment_type(experimentTemplate) task_list = battery.experiments.filter(template=experimentTemplate) # Generate a new results object for the worker, assignment, experiment result,_ = Result.objects.update_or_create(worker=worker, experiment=experimentTemplate, battery=battery, defaults={"browser":browser,"platform":platform}) result.save() context = {"worker_id": worker.id, "uniqueId":result.id} # If this is the last experiment, the finish button will link to a thank you page. if experiments_left == 1: next_page = "/finished" # Determine template name based on template_type template = "%s/serve_battery.html" %(experiment_type) return deploy_battery( deployment="docker-local", battery=battery, experiment_type=experiment_type, context=context, task_list=task_list, template=template, next_page=next_page, result=result, experiments_left=experiments_left-1 )