in api/wheel_participant.py [0:0]
def create_participant(event):
"""
Create a participant
:param event: Lambda event containing the API Gateway request body including a name and a url and the
path parameter wheel_id
{
"pathParameters":
{
"wheel_id": string ID of the wheel (DDB Hash Key)
},
"body":
{
"name": participant name string,
"url: Valid URL for the participant,
}
}
:return: response dictionary containing new participant object if successful
{
"body":
{
"id": string ID of the participant (DDB Hash Key),
"wheel_id": string ID of the wheel (DDB Hash Key),
"name": string name of the wheel,
"url: URL for the participant,
"created_at": creation timestamp,
"updated_at": updated timestamp,
}
}
"""
wheel_id = event['pathParameters']['wheel_id']
body = event['body']
if not check_string(body.get('name', None)) or not check_string(body.get('url', None)):
raise base.BadRequestError("Participants require a name and url which must be at least 1 character in length")
wheel = Wheel.get_existing_item(Key={'id': wheel_id})
create_timestamp = get_utc_timestamp()
participant = {
'wheel_id': wheel_id,
'id': get_uuid(),
'name': body['name'],
'url': body['url'],
'created_at': create_timestamp,
'updated_at': create_timestamp,
}
with choice_algorithm.wrap_participant_creation(wheel, participant):
WheelParticipant.put_item(Item=participant)
return participant