Esempio n. 1
0
    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)
Esempio n. 2
0
 def get(self):
     if self.ensure_is_logged_in() and self.ensure_has_display_name():
         self.render_tmpl(
             'friends.html',
             active_menu='profile',
             data=EnkiModelFriends.get_friends_user_id_display_name_url(
                 self.user_id))