def post(self): if self.ensure_is_logged_in() and self.ensure_has_display_name(): self.check_CSRF() user_id = self.user_id friend_id_invite = self.request.get('invite') friend_id_remove = self.request.get('remove') friend_name_search = self.request.get('search').strip()[:( EnkiModelDisplayName.DISPLAY_NAME_LENGTH_MAX + 4)] # 4 allows for some leading and trailing characters already_friends = '' has_friends = EnkiModelFriends.exist_by_user_id(user_id) error_message = '' result = '' if friend_id_invite: # send invitation to user to become friend outcome = EnkiModelFriends.send_friend_request( user_id, int(friend_id_invite)) if outcome == EnkiModelFriends.INFO_FRIENDS: self.add_infomessage( MSG.SUCCESS(), MSG.FRIEND_ADDED( EnkiModelDisplayName.get_display_name( int(friend_id_invite)))) elif outcome == enki.libutil.ENKILIB_OK: self.add_infomessage( MSG.SUCCESS(), MSG.FRIEND_INVITATION_SENT( EnkiModelDisplayName.get_display_name( int(friend_id_invite)))) elif friend_id_remove: # unfriend EnkiModelFriends.remove_friend(user_id, int(friend_id_remove)) has_friends = EnkiModelFriends.exist_by_user_id(user_id) self.add_infomessage( MSG.SUCCESS(), MSG.FRIEND_REMOVED( EnkiModelDisplayName.get_display_name( int(friend_id_remove)))) elif friend_name_search: # search for user to invite users_ids_to_ignore = [user_id] if has_friends: users_ids_to_ignore += EnkiModelFriends.get_friends_user_id( user_id) result = EnkiModelDisplayName.find_users_by_display_name( friend_name_search, users_ids_to_ignore) if result.error == EnkiModelDisplayName.ERROR_DISPLAY_NAME_INVALID: error_message = MSG.DISPLAY_NAME_INVALID() elif result.error == EnkiModelDisplayName.ERROR_DISPLAY_NAME_NOT_EXIST: error_message = MSG.DISPLAY_NAME_NOT_EXIST() else: error_message = MSG.DISPLAY_NAME_NEEDED() if has_friends: already_friends = EnkiModelFriends.get_friends_user_id_display_name_url( user_id) self.render_tmpl('friends.html', data=already_friends, error=error_message, result=result, friend_name=friend_name_search)