Пример #1
0
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
Пример #2
0
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)
Пример #3
0
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))
Пример #4
0
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))
Пример #5
0
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))
Пример #6
0
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))