Exemplo n.º 1
0
def with_cleanup(aws_creds, request):

    # tear-down: clean up all specially-marked HITs:
    def test_hits_only(hit):
        return TEST_HIT_DESCRIPTION in hit["description"]
        return hit["description"] == TEST_HIT_DESCRIPTION + system_marker()

    params = {"region_name": "us-east-1"}
    params.update(aws_creds)
    service = MTurkService(**params)

    # In tests we do a lot of querying of Qualifications we only just created,
    # so we need a long time-out
    service.max_wait_secs = 60.0
    try:
        yield service
    except Exception as e:
        raise e
    finally:
        try:
            for hit in service.get_hits(test_hits_only):
                service.disable_hit(hit["id"])
        except Exception:
            # Broad exception so we don't leak credentials in Travis CI logs
            pass
Exemplo n.º 2
0
 def __init__(self, config, hit_domain, ad_url):
     self.config = config
     self.ad_url = ad_url
     self.hit_domain = hit_domain
     self.mturkservice = MTurkService(
         self.config.get('aws_access_key_id'),
         self.config.get('aws_secret_access_key'),
         (self.config.get('mode') == "sandbox"))
Exemplo n.º 3
0
 def test_check_credentials_no_creds_set_raises(self, with_mock):
     creds = {
         'aws_access_key_id': '',
         'aws_secret_access_key': '',
         'region_name': 'us-east-1'
     }
     service = MTurkService(**creds)
     with pytest.raises(MTurkServiceException):
         service.check_credentials()
Exemplo n.º 4
0
 def test_check_credentials_no_creds_set_raises(self, with_mock):
     creds = {
         "aws_access_key_id": "",
         "aws_secret_access_key": "",
         "region_name": "us-east-1",
     }
     service = MTurkService(**creds)
     with pytest.raises(MTurkServiceException):
         service.check_credentials()
Exemplo n.º 5
0
def _mturk_service_from_config(sandbox):
    config = get_config()
    config.load()
    return MTurkService(
        aws_access_key_id=config.get("aws_access_key_id"),
        aws_secret_access_key=config.get("aws_secret_access_key"),
        region_name=config.get("aws_region"),
        sandbox=sandbox,
    )
Exemplo n.º 6
0
 def __init__(self):
     super(MTurkRecruiter, self).__init__()
     self.config = get_config()
     self.ad_url = '{}/ad'.format(get_base_url())
     self.hit_domain = os.getenv('HOST')
     self.mturkservice = MTurkService(
         self.config.get('aws_access_key_id'),
         self.config.get('aws_secret_access_key'),
         self.config.get('mode') != u"live"
     )
     self._validate_conifg()
Exemplo n.º 7
0
def check_db_for_missing_notifications():
    """Check the database for missing notifications."""
    config = dallinger.config.get_config()
    mturk = MTurkService(
        aws_access_key_id=config.get('aws_access_key_id'),
        aws_secret_access_key=config.get('aws_secret_access_key'),
        region_name=config.get('aws_region'),
        sandbox=config.get('mode') in ('debug', 'sandbox'))
    # get all participants with status < 100
    participants = Participant.query.filter_by(status="working").all()
    reference_time = datetime.now()

    run_check(config, mturk, participants, session, reference_time)
Exemplo n.º 8
0
def qtype(aws_creds):
    # build
    name = name_with_hostname_prefix()
    service = MTurkService(**aws_creds)
    qtype = service.create_qualification_type(
        name=name,
        description=TEST_QUALIFICATION_DESCRIPTION,
        status='Active',
    )

    yield qtype

    # clean up
    service.dispose_qualification_type(qtype['id'])
Exemplo n.º 9
0
 def __init__(self):
     super(MTurkRecruiter, self).__init__()
     self.config = get_config()
     self.ad_url = "{}/ad?recruiter={}".format(get_base_url(),
                                               self.nickname)
     self.hit_domain = os.getenv("HOST")
     self.mturkservice = MTurkService(
         self.config.get("aws_access_key_id"),
         self.config.get("aws_secret_access_key"),
         self.config.get("aws_region"),
         self.config.get("mode") != "live",
     )
     self.messenger = get_messenger(self.config)
     self._validate_config()
Exemplo n.º 10
0
 def __init__(self):
     super(MTurkRecruiter, self).__init__()
     self.config = get_config()
     base_url = get_base_url()
     self.ad_url = "{}/ad?recruiter={}".format(base_url, self.nickname)
     self.notification_url = "{}/mturk-sns-listener".format(base_url)
     self.hit_domain = os.getenv("HOST")
     self.mturkservice = MTurkService(
         aws_access_key_id=self.config.get("aws_access_key_id"),
         aws_secret_access_key=self.config.get("aws_secret_access_key"),
         region_name=self.config.get("aws_region"),
         sandbox=self.config.get("mode") != "live",
     )
     self.messenger = get_messenger(self.config)
     self._validate_config()
Exemplo n.º 11
0
def with_cleanup(aws_creds, request):

    # tear-down: clean up all specially-marked HITs:
    def test_hits_only(hit):
        return hit['description'] == TEST_HIT_DESCRIPTION + str(os.getpid())

    service = MTurkService(**aws_creds)
    # In tests we do a lot of querying of Qualifications we only just created,
    # so we need a long time-out
    service.max_wait_secs = 60.0
    try:
        yield service
    except Exception as e:
        raise e
    finally:
        try:
            for hit in service.get_hits(test_hits_only):
                service.disable_hit(hit['id'])
        except Exception:
            # Broad exception so we don't leak credentials in Travis CI logs
            pass
Exemplo n.º 12
0
def qualify(workers, qualification, value, by_name, notify, sandbox):
    """Assign a qualification to 1 or more workers"""
    if not (workers and qualification and value):
        raise click.BadParameter(
            'Must specify a qualification ID, value/score, and at least one worker ID'
        )

    config = get_config()
    config.load()
    mturk = MTurkService(
        aws_access_key_id=config.get('aws_access_key_id'),
        aws_secret_access_key=config.get('aws_secret_access_key'),
        sandbox=sandbox,
    )
    if by_name:
        result = mturk.get_qualification_type_by_name(qualification)
        if result is None:
            raise click.BadParameter(
                'No qualification with name "{}" exists.'.format(
                    qualification))

        qid = result['id']
    else:
        qid = qualification

    click.echo(
        "Assigning qualification {} with value {} to {} worker{}...".format(
            qid, value, len(workers), 's' if len(workers) > 1 else ''))
    for worker in workers:
        if mturk.set_qualification_score(qid, worker, value, notify=notify):
            click.echo('{} OK'.format(worker))

    # print out the current set of workers with the qualification
    results = list(mturk.get_workers_with_qualification(qid))

    click.echo("{} workers with qualification {}:".format(len(results), qid))

    for score, count in Counter([r['score'] for r in results]).items():
        click.echo("{} with value {}".format(count, score))
Exemplo n.º 13
0
def with_cleanup(aws_creds, request):

    # tear-down: clean up all specially-marked HITs:
    def test_hits_only(hit):
        return hit['description'] == TEST_HIT_DESCRIPTION + str(os.getpid())

    service = MTurkService(**aws_creds)
    request.instance._qtypes_to_purge = []
    try:
        yield service
    except Exception as e:
        raise e
    finally:
        try:
            for hit in service.get_hits(test_hits_only):
                service.disable_hit(hit['id'])

            # remove QualificationTypes we may have added:
            for qtype_id in request.instance._qtypes_to_purge:
                service.dispose_qualification_type(qtype_id)
        except Exception:
            # Broad exception so we don't leak credentials in Travis CI logs
            pass
Exemplo n.º 14
0
def qualify(qualification, value, worker):
    """Assign a qualification to a worker."""
    config = get_config()
    config.load()
    mturk = MTurkService(
        aws_access_key_id=config.get('aws_access_key_id'),
        aws_secret_access_key=config.get('aws_secret_access_key'),
        sandbox=(config.get('mode') == "sandbox"),
    )

    click.echo("Assigning qualification {} with value {} to worker {}".format(
        qualification, value, worker))

    if mturk.set_qualification_score(qualification, worker, value):
        click.echo('OK')

    # print out the current set of workers with the qualification
    results = list(mturk.get_workers_with_qualification(qualification))

    click.echo("{} workers with qualification {}:".format(
        len(results), qualification))

    for score, count in Counter([r['score'] for r in results]).items():
        click.echo("{} with value {}".format(count, score))
Exemplo n.º 15
0
def mturk(aws_creds):
    params = {'region_name': 'us-east-1'}
    params.update(aws_creds)
    service = MTurkService(**params)

    return service
Exemplo n.º 16
0
def mturk(aws_creds):
    service = MTurkService(**aws_creds)
    return service
Exemplo n.º 17
0
def mturk(aws_creds):
    params = {"region_name": "us-east-1"}
    params.update(aws_creds)
    service = MTurkService(**params)

    return service
Exemplo n.º 18
0
def with_mock():
    creds = {'aws_access_key_id': '', 'aws_secret_access_key': ''}
    service = MTurkService(**creds)
    service.mturk = mock.Mock(spec=MTurkConnection)
    return service