def change_listing_mode(self, session_key, listing_mode): ''' 로그인한 user의 listing mode (글 목록 정렬 방식) 를 변경한다. @type session_key: string @param session_key: 사용자 Login Session (must be SYSOP) @type listing_mode: int @param listing_mode: 글 목록 정렬 방식 (ArticleManager 참고) @return: 1. 성공했을 경우: void 2. 실패했을 경우 : Invalid Operation ''' if listing_mode < 0 or 1 < listing_mode: raise InvalidOperation('wrong listing mode') session = model.Session() user = self._get_user_by_session(session, session_key) user_id = user.id try: user.listing_mode = listing_mode session.commit() session.close() except InvalidRequestError: session.close() raise InvalidOperation('database error') # Cache update ara_memcached.clear_memcached(self.get_listing_mode, user_id)
def modify_user(self, session_key, user_modification): ''' password를 제외한 회원 정보 수정 @type session_key: string @param session_key: 사용자 Login Session @type user_reg_infot: ttypes.UserModification @param user_reg_infot: 변경할 사용자 정보 @rtype: void @return: 1. modify 성공: void 2. modify 실패: 1. 로그인되지 않은 유저: InvalidOperation('NOT_LOGGEDIN' 2. 데이터베이스 오류: InvalidOperation('DATABASE_ERROR' 3. 양식이 맞지 않음(부적절한 NULL값 등): 'WRONG_DICTIONARY' ''' session_info = self.engine.login_manager.get_session(session_key) username = smart_unicode(session_info.username) if not is_keys_in_dict(user_modification.__dict__, USER_PUBLIC_MODIFIABLE_WHITELIST): raise InvalidOperation('wrong input') session = model.Session() user = self._get_user(session, username) for key, value in user_modification.__dict__.items(): # 문자열에 한하여 smart_unicode 로 변환하여 저장한다 if type(value) in [str, unicode]: setattr(user, key, smart_unicode(value)) else: setattr(user, key, value) session.commit() session.close() # Member Manager Cache ara_memcached.clear_memcached(self.get_listing_mode, session_info.id)
boards = [session.query(model.Board).filter_by(id=x).one() for x in board_ids] except NoResultFound, MultipleResultsFound: session.close() raise InvalidOperation("Not a valid board id") session.query(model.SelectedBoards).filter_by(user_id=user.id).delete() session.flush() for board in boards: selected_board = model.SelectedBoards(user, board) session.add(selected_board) session.commit() session.close() # Cache update ara_memcached.clear_memcached(self.get_selected_boards, session_key) __public__ = [ authenticate, register_, backdoor_confirm, confirm, cancel_confirm, is_registered, is_registered_nickname, is_registered_email, get_info, modify_password, modify_password_sysop, modify_password_with_token, modify_user,
def _clear_cache(self, board=False, category=False): if category: ara_memcached.clear_memcached(self.get_category_list) ara_memcached.clear_memcached(self.get_category_dict) if board: ara_memcached.clear_memcached(self.get_board_list) ara_memcached.clear_memcached(self.get_board_dict) if category or board: ara_memcached.clear_memcached(self.get_category_and_board_list) ara_memcached.clear_memcached(self.get_category_and_board_dict)
boards = [ session.query(model.Board).filter_by(id=x).one() for x in board_ids ] except NoResultFound, MultipleResultsFound: session.close() raise InvalidOperation("Not a valid board id") session.query(model.SelectedBoards).filter_by(user_id=user.id).delete() session.flush() for board in boards: selected_board = model.SelectedBoards(user, board) session.add(selected_board) session.commit() session.close() # Cache update ara_memcached.clear_memcached(self.get_selected_boards, session_key) __public__ = [ authenticate, register_, backdoor_confirm, confirm, cancel_confirm, is_registered, is_registered_nickname, is_registered_email, get_info, modify_password, modify_password_sysop, modify_password_with_token, modify_user, modify_authentication_email, query_by_username, query_by_nick, remove_user, search_user, send_id_recovery_email, send_password_recovery_email, is_sysop, logout_process, get_activated_users, set_selected_boards, get_selected_boards, update_last_logout_time, get_listing_mode, get_listing_mode_by_key ]