def assign_character(request, caller_context, container_user): ''' data only call, json response ''' characterController = CharacterController() logging.info('request is: %s' % request) if container_user.character: json = '{ "success" : true, "message" : "character already assign to this user" }' return HttpResponse(json) if not 'character_name' in request.REQUEST: json = '{ "success" : false, "message" : "Missing required field \'character_name\'" }' return HttpResponse(json) character_name = request.REQUEST['character_name'].strip() character_name = characterController.unquote_u(character_name) character_name = re.sub(r'[\'\"<>`]', ' ', character_name) character = Character.get_by_key_name(character_name) if character: container_users = characterController.get_character_users(character) if len(container_users): # no other container_user has this character, was probably an error in assignment for this user, so assign it now container_user.character = character json = '{ "success" : true, "message" : "Found existing character and assigned it to user" }' return HttpResponse(json) json = '{ "success" : false, "message" : "Character name is already in use" }' return HttpResponse(json) character = characterController.create_character(caller_context.config, character_name, container_user.profile_image_url, is_fake=False) container_user.character = character container_user.put() response = { "success" : True, "message" : "Successfully associated character to container user" } return json_response(caller_context, container_user, response, False)