Skip to content

Commit

Permalink
Added bonus history functionality.
Browse files Browse the repository at this point in the history
  • Loading branch information
evankirkiles committed Jan 5, 2022
1 parent bad1e5c commit b672b99
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 0 deletions.
30 changes: 30 additions & 0 deletions psiturk/amt_services.py
Original file line number Diff line number Diff line change
Expand Up @@ -220,6 +220,36 @@ def get_assignment(self, assignment_id):
'status': assignment['AssignmentStatus'],
}
return worker_data

@amt_service_response
def get_bonuses(self, hit_id=None, assignment_ids=None):
"""Get a list of paid bonuses."""
bonuses = []
if hit_id:
paginator = self.mtc.get_paginator('list_bonus_payments')
args = dict(
HITId=hit_id
)
for page in paginator.paginate(**args):
bonuses.extend(page['BonusPayments'])
elif assignment_ids:
if not isinstance(assignment_ids, list):
assignment_ids = [assignment_ids]
for assignment_id in assignment_ids:
paginator = self.mtc.get_paginator('list_bonus_payments')
args = dict(
AssignmentId=assignment_id,
)
for page in paginator.paginate(**args):
bonuses.extend(page['BonusPayments'])
bonus_data = [{
'workerId': bonus['WorkerId'],
'bonusAmount': bonus['BonusAmount'],
'assignmentId': bonus['AssignmentId'],
'reason': bonus['Reason'],
'grantTime': bonus['GrantTime']
} for bonus in bonuses]
return bonus_data

@amt_service_response
def bonus_assignment(self, assignment_id, worker_id, amount, reason=""):
Expand Down
11 changes: 11 additions & 0 deletions psiturk/api/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -278,6 +278,15 @@ def post(self):
raise APIException(message='task name `{}` not recognized!'.format(data['name']))


class BonusList(Resource):
def post(self):
data = request.json
hit_id = data['hit_id'] if 'hit_id' in data else None
assignment_ids = data['assignment_ids'] if 'assignment_ids' in data else None
bonuses = services_manager.amt_services_wrapper.get_bonuses(
hit_id=hit_id, assignment_ids=assignment_ids).data
return bonuses, 201

api.add_resource(ServicesManager, '/services_manager', '/services_manager/')

api.add_resource(AssignmentList, '/assignments', '/assignments/')
Expand All @@ -293,4 +302,6 @@ def post(self):
api.add_resource(TaskList, '/tasks', '/tasks/')
api.add_resource(Tasks, '/tasks/<task_id>')

api.add_resource(BonusList, '/bonuses', '/bonuses/')

api.init_app(api_blueprint)

0 comments on commit b672b99

Please sign in to comment.