def JSONDecoder(dct): if '__HIT__' in dct: return HIT(dct) if '__Assignment__' in dct: return Assignment(dct) if '__Box__' in dct: return Box(dct) return dct
def get_hit(hit_id, mturk_client=None): """ Retrieve HIT data for the id :param hit_id: ID to retrieve :param mturk_client: The MTurk client to use for this request instead of the default client :return: A dict containing HIT attributes """ hit, prod = _get_hit(hit_id, mturk_client) return HIT(hit, mturk_client=mturk_client, production=prod)
def get_assignment(assignment_id, mturk_client=None): """ Retrieves the Assignment and HIT data for a given AssignmentID. The Assignment data is updated to replace the Answer XML with a dict object. :param assignment_id: The assignment to retrieve :param mturk_client: The MTurk client to use for this request instead of the default client :return: A tuple of assignment and hit dicts """ a, h = _get_assignment(assignment_id, mturk_client) return Assignment(a), HIT(h, mturk_client, mturk_client_environment(mturk_client))
def create_hit(title, description, reward=None, reward_cents=None, lifetime=86400, assignment_duration=3600, max_assignments=None, auto_approval_delay=None, keywords=None, question=None, annotation=None, qualification_requirements=None, request_token=None, assignment_review_policy=None, hit_review_policy=None, hit_layout_id=None, hit_layout_parameters=None, mturk_client=None): mturk_client = mturk_client if mturk_client else client params = utils.map_parameters( locals(), { 'title': 'Title', 'description': 'Description', 'reward': 'Reward', 'lifetime': 'LifetimeInSeconds', 'assignment_duration': 'AssignmentDurationInSeconds', 'max_assignments': 'MaxAssignments', 'auto_approval_delay': 'AutoApprovalDelayInSeconds', 'keywords': 'Keywords', 'question': 'Question', 'annotation': 'RequesterAnnotation', 'qualification_requirements': 'QualificationRequirements', 'request_token': 'UniqueRequestToken', 'assignment_review_policy': 'AssignmentReviewPolicy', 'hit_review_policy': 'HITReviewPolicy', 'hit_layout_id': 'HITLayoutId', 'hit_layout_parameters': 'HITLayoutParameters' }) if reward_cents: params['reward'] = str(reward_cents / 100) return HIT(mturk_client.create_hit(**params).get('HIT'), mturk_client=mturk_client, production=mturk_client_environment(mturk_client))
def list_hits(mturk_client=None): """ Retrieves all of the HITs in your account with the exception of those that have been deleted (automatically or by request). :param mturk_client: The MTurk client to use for this request instead of the default client :return: A generator containing the HITs """ if mturk_client is None: mturk_client = client pages_to_get = True next_token = None while pages_to_get: if next_token: response = mturk_client.list_hits(NextToken=next_token) else: response = mturk_client.list_hits() if response.get('NextToken'): next_token = response['NextToken'] else: pages_to_get = False for hit in response.get('HITs', []): yield HIT(hit, mturk_client, mturk_client_environment(mturk_client))
def create_hit(title=None, description=None, reward=None, reward_cents=None, lifetime=86400, assignment_duration=3600, max_assignments=None, auto_approval_delay=None, keywords=None, hit_type_id=None, question=None, html_question=None, external_question=None, question_template=None, question_template_uri=None, template_context=None, annotation=None, qualification_requirements=None, request_token=None, assignment_review_policy=None, hit_review_policy=None, hit_layout_id=None, hit_layout_parameters=None, mturk_client=None): mturk_client = mturk_client if mturk_client else client if hit_type_id: params = utils.map_parameters(locals(), { 'hit_type_id': 'HITTypeId', 'lifetime': 'LifetimeInSeconds', 'max_assignments': 'MaxAssignments', 'question': 'Question', 'request_token': 'UniqueRequestToken', 'assignment_review_policy': 'AssignmentReviewPolicy', 'hit_review_policy': 'HITReviewPolicy', 'hit_layout_id': 'HITLayoutId', 'hit_layout_parameters': 'HITLayoutParameters' }) else: params = utils.map_parameters(locals(), { 'title': 'Title', 'description': 'Description', 'reward': 'Reward', 'lifetime': 'LifetimeInSeconds', 'assignment_duration': 'AssignmentDurationInSeconds', 'max_assignments': 'MaxAssignments', 'auto_approval_delay': 'AutoApprovalDelayInSeconds', 'keywords': 'Keywords', 'question': 'Question', 'qualification_requirements': 'QualificationRequirements', 'request_token': 'UniqueRequestToken', 'assignment_review_policy': 'AssignmentReviewPolicy', 'hit_review_policy': 'HITReviewPolicy', 'hit_layout_id': 'HITLayoutId', 'hit_layout_parameters': 'HITLayoutParameters' }) if reward_cents: params['Reward'] = str(reward_cents / 100) if html_question: params['Question'] = render_html_question(html_question) if external_question: params['Question'] = render_external_question(external_question) if annotation: params['RequesterAnnotation'] = prepare_requester_annotation(annotation) if question_template: params['Question'] = render_jinja_template_question(template_context, template=question_template) if question_template_uri: params['Question'] = render_jinja_template_question(template_context, template_uri=question_template_uri) if hit_type_id: return HIT(mturk_client.create_hit_with_hit_type(**params).get('HIT'), mturk_client=mturk_client, production=mturk_client_environment(mturk_client)) else: return HIT(mturk_client.create_hit(**params).get('HIT'), mturk_client=mturk_client, production=mturk_client_environment(mturk_client))