コード例 #1
0
def pay_oracle_bonus(conn, player):
    r = conn.execute(text("SELECT o_ass_id, o_approved FROM worker WHERE id = :worker_id"),
                     worker_id=player.worker_id)
    if r.rowcount > 0:
        ass_id, o_approved = r.first()

        sandbox = False
        amt_services = MTurkServices('AKIAJO3RIMIRNSW3NZAA',
                                     'SGweeGX+EMF7sUWGiJEwRt2gIytVuXY1iOBjOMa3',
                                     sandbox)
        amt_services.connect_to_turk()

        if not o_approved:
            try:
                amt_services.mtc.approve_assignment(ass_id)
                conn.execute(text('UPDATE worker SET o_approved = :o_approved WHERE id = :worker_id'),
                             o_approved=True, worker_id=player.worker_id)
            except Exception as e:
                print e
                return False

        reward = get_oracle_reward(conn, player.assignment_id)
        if reward > 0.0:
            bonus = MTurkConnection.get_price_as_price(reward)
            amt_services.mtc.grant_bonus(player.worker_id, ass_id,
                                         bonus, "Bonus for assignment " + str(player.assignment_id))
            conn.execute(text('UPDATE assignment SET bonus = :bonus, bonus_paid = :bonus_paid'
                              ' WHERE assignment_id = :ass_id AND worker_id = :worker_id'),
                         bonus=reward, ass_id=player.assignment_id,
                         bonus_paid=True, worker_id=player.worker_id)