def test_is_keys_in_dict(self): self.assertEqual( True, libs.is_keys_in_dict({ 'user_id': 1, 'dummy': 'garbages' }, ['user_id'])) self.assertEqual( False, libs.is_keys_in_dict({ 'user_id': 1, 'dummy': 'garbages' }, ['username']))
def add_welcome(self, session_key, notice_reg_dic): ''' 관리자용 welcome 추가 함수 >>> notice_reg_dic = { 'content':'hahahah', 'due_date':'2008,7,14', 'weight':'1' } >>> notice.add_welcome(SYSOP_session_key, notice_reg_dic) >>> notice.add_welcome(user_session_key, notice_reg_dic) Traceback (most recent calls top): ... InvalidOperation @type session_key: string @param session_key: 사용자 Login Session @type notice_reg_dic: dictionary @param notice_reg_dic: Notice Dictionary @rtype: void @return: 1. welcome 페이지 추가에 성공하였을 때: void 2. welcome 페이지 추가에 실패하였을 때: 1. 시삽이 아닐 때: InvalidOperation Exception 2. 데이터베이스 오류: InternalError Exception ''' notice_reg_dic = notice_reg_dic.__dict__ notice_reg_dic['due_date'] = timestamp2datetime( notice_reg_dic['due_date']) if not is_keys_in_dict(notice_reg_dic, NOTICE_ADD_WHITELIST): raise InvalidOperation('wrong dictionary') if not self.engine.member_manager.is_sysop(session_key): raise InvalidOperation('not sysop') session = model.Session() try: # Register welcome to db welcome= model.Welcome(**notice_reg_dic) session.save(welcome) session.commit() session.close() return except Exception, e: session.rollback() session.close() raise InternalError('database error')
def add_banner(self, session_key, notice_reg_dic): ''' 관리자용 배너 추가 함수 이 아래의 doctest 는 작동하지 않으니 무시할 것. >>> notice_reg_dic = { 'content':'hahahah', 'due_date':'2008,7,14', 'weight':'1' } >>> notice.add_banner(SYSOP_session_key, WrittenNotice(**notice_reg_dic)) >>> notice.add_banner(user_session_key, notice_reg_dic) Traceback (most recent calls top): ... InvalidOperation @type session_key: string @param session_key: 사용자 Login Session @type notice_reg_dic: ttypes.WrittenNotice @param notice_reg_dic: Notice Dictionary @rtype: int @return: 1. 배너 페이지 추가에 성공하였을 때: 추가된 배너의 id 2. 배너 페이지 추가에 실패하였을 때: 1. 시삽이 아닐 때: InvalidOperation Exception 2. 데이터베이스 오류: InternalError Exception ''' notice_reg_dic = notice_reg_dic.__dict__ notice_reg_dic['due_date'] = timestamp2datetime( notice_reg_dic['due_date']) if not is_keys_in_dict(notice_reg_dic, NOTICE_ADD_WHITELIST): raise InvalidOperation('wrong dictionary') if not self.engine.member_manager.is_sysop(session_key): raise InvalidOperation('not sysop') session = model.Session() try: # Register welcome to db banner = model.Banner(**notice_reg_dic) session.add(banner) session.commit() banner_id = banner.id session.close() return banner_id except Exception, e: session.rollback() session.close() raise InternalError('database error')
def add_welcome(self, session_key, notice_reg_dic): ''' 관리자용 welcome 추가 함수 >>> notice_reg_dic = { 'content':'hahahah', 'due_date':'2008,7,14', 'weight':'1' } >>> notice.add_welcome(SYSOP_session_key, notice_reg_dic) >>> notice.add_welcome(user_session_key, notice_reg_dic) Traceback (most recent calls top): ... InvalidOperation @type session_key: string @param session_key: 사용자 Login Session @type notice_reg_dic: dictionary @param notice_reg_dic: Notice Dictionary @rtype: void @return: 1. welcome 페이지 추가에 성공하였을 때: void 2. welcome 페이지 추가에 실패하였을 때: 1. 시삽이 아닐 때: InvalidOperation Exception 2. 데이터베이스 오류: InternalError Exception ''' notice_reg_dic = notice_reg_dic.__dict__ notice_reg_dic['due_date'] = timestamp2datetime( notice_reg_dic['due_date']) if not is_keys_in_dict(notice_reg_dic, NOTICE_ADD_WHITELIST): raise InvalidOperation('wrong dictionary') if not self.engine.member_manager.is_sysop(session_key): raise InvalidOperation('not sysop') session = model.Session() try: # Register welcome to db welcome = model.Welcome(**notice_reg_dic) session.save(welcome) session.commit() session.close() return except Exception, e: session.rollback() session.close() raise InternalError('database error')
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)
def test_is_keys_in_dict(self): self.assertEqual(True, libs.is_keys_in_dict({'user_id': 1, 'dummy': 'garbages'}, ['user_id'])) self.assertEqual(False, libs.is_keys_in_dict({'user_id': 1, 'dummy': 'garbages'}, ['username']))