def optimize_ctx(self, app): try: # データベースオブジェクトを取得する db_list = CmsDb.getCmsDbList() if db_list is None: return False row_num = str(StrUtil.get_safe_config(app, 'CTX_MAX_OBJECT_CNT')) for db_info in db_list: StrUtil.print_debug("optimize_ctx db_id=[{}] begin.".format( str(db_info.db_id))) cms_object = CmsObject() for object_info in cms_object.getCtxObjectList( db_info.db_id, row_num): cmsCtxData = CmsCtxData() # cms_ctx_dataからレコード削除 (updateされた場合の対応) cmsCtxData.delCmsCtxData(object_info.object_id, db_info.db_id) # タイトルテキスト 例:<#IDX_TEXT_001#> : <#IDX_TEXT_002#> ctx_title_rst = { 'CTX_TITLE': '', 'CTX_TEXT': '', 'CTX_ERROR_FLG': 0, 'CTX_ERROR_LOG': '' } cms_object.getCtxTitle(object_info.object_type_id, object_info.object_id, None, object_info.ctx_title_format, ctx_title_rst) # cms_ctx_dataに登録する情報を設定する cmsCtxData.db_id = db_info.db_id cmsCtxData.object_id = object_info.object_id cmsCtxData.object_updated_at = object_info.updated_at cmsCtxData.ctx_title = ctx_title_rst['CTX_TITLE'] cmsCtxData.ctx_text = ctx_title_rst['CTX_TEXT'] cmsCtxData.ctx_error_log = ctx_title_rst['CTX_ERROR_LOG'] cmsCtxData.data_type = Const.DATA_TYPE_OBJECT url = Const.URL_FORMAT.format( str(StrUtil.get_safe_config( app, 'CMS_SYS_URL')).strip('/') + '/property', 'func={}&db_id={}&id={}&object_id={}'.format( 'show_property', db_info.db_id, object_info.parent_folder_id, object_info.object_id)) cmsCtxData.ctx_url = url cmsCtxData.ctx_error_flg = ctx_title_rst['CTX_ERROR_FLG'] # cms_ctx_dataに登録する cmsCtxData.addCmsCtxData(cmsCtxData) # INDEXに登録したら、 cms_object.ctx_indexed_flg=1にする cms_object.ctxUpdObject(object_info.object_id, 1) # cms_object_property, cms_file_typeからINDEX対象の属性やファイルを特定 cms_file = CmsFile() for file_info in cms_file.get_ctx_file_list( object_info.object_id): if not ctx_allowed_file(file_info.file_name): continue cmsCtxData = CmsCtxData() # ctx_text = ctx_text_format.format(ctx_text, # file_info.file_name + ":" # + os.path.join(file_info.dir_name, # file_info.c_file_name)) StrUtil.print_debug( 'ctx_file file_info=[file_name={}; file_path={}]'. format( file_info.file_name, os.path.join(file_info.dir_name, file_info.c_file_name))) # CTX_TITLE_FOTMATの取得 cmsFileType = CmsFileType() fileTypeInfo = cmsFileType.getFileTypeInfo( file_info.file_type_id) # タイトルテキスト 例:<#IDX_TEXT_001#> : <#IDX_TEXT_002#> (<#FILE_NAME#>) ctx_title_rst = { 'CTX_TITLE': '', 'CTX_TEXT': '', 'CTX_ERROR_FLG': 0, 'CTX_ERROR_LOG': '' } cms_object.getCtxTitle(object_info.object_type_id, object_info.object_id, file_info.file_id, fileTypeInfo.ctx_title_format, ctx_title_rst) ctx_text_rst = { 'CTX_TEXT': '', 'CTX_ERROR_FLG·': 0, 'CTX_ERROR_LOG': '' } CtxUtil._get_ctx_text(app, file_info, ctx_text_rst) # URL url = '' # テキスト ctx_text = Const.CONTACT_FORMAT.format( ctx_title_rst['CTX_TEXT'], ctx_text_rst['CTX_TEXT']) # エラーメッセージ ctx_error_log = ctx_title_rst['CTX_ERROR_LOG'] if len(ctx_error_log) != 0: ctx_error_log += '\n' ctx_error_log += ctx_text_rst['CTX_ERROR_LOG'] # cms_ctx_dataに登録する情報を設定する cmsCtxData.db_id = db_info.db_id cmsCtxData.object_id = object_info.object_id cmsCtxData.object_updated_at = object_info.updated_at cmsCtxData.ctx_title = ctx_title_rst['CTX_TITLE'] cmsCtxData.ctx_text = ctx_text cmsCtxData.ctx_error_log = StrUtil.truncate( ctx_error_log, 4000) cmsCtxData.data_type = Const.DATA_TYPE_FILE if ctx_text_rst['CTX_ERROR_FLG'] == 0: url = Const.URL_FORMAT.format( str(StrUtil.get_safe_config( app, 'CMS_SYS_URL')).strip('/') + '/download_file', 'db_id={}&file_id={}'.format( db_info.db_id, file_info.file_id)) cmsCtxData.ctx_url = url cmsCtxData.ctx_error_flg = ctx_text_rst[ 'CTX_ERROR_FLG'] # cms_ctx_dataに登録する cmsCtxData.addCmsCtxData(cmsCtxData) cms_file = CmsFile(object_info.object_id) # INDEXに登録したら、 cms_file.ctx_indexed_flg=1にする cms_file.setCtxIndexedFlg(file_info.file_id, 1) # DBごと処理後にtmpフォルダを空にする CtxUtil._tmp_file_remove(app) StrUtil.print_debug('optimize_ctx db_id=[{}] end.'.format( str(db_info.db_id))) db.session.commit() except Exception as e: db.session.rollback() tb = sys.exc_info()[2] StrUtil.print_error('optimize_ctx error_msg:{}'.format( str(e.with_traceback(tb)))) CtxUtil._tmp_file_remove(app)
# coding:utf-8 import os import sys from app.lib.cms_lib.date_util import DateUtil from app.lib.cms_lib.num_util import NumUtil from app.lib.cms_lib.str_util import StrUtil sys.path.append('/home03/cms/flask/cms/') os.environ['NLS_LANG'] = 'JAPANESE_JAPAN.AL32UTF8' from app import create_app app = create_app() app.app_context().push() # 日付チェック rst = DateUtil.check_date_format('2020/02/18', 'YYYY/MM/DD') StrUtil.print_debug(rst) # 日付チェック rst = NumUtil.is_number_data('aa') StrUtil.print_debug(rst) rst = NumUtil.is_integer_data('10.22') StrUtil.print_debug(rst) num_prop = {'sign_ref': '', 'i_ref': '', 'f_ref': ''} rst = NumUtil.split_number('10.22', num_prop) StrUtil.print_debug(rst) rst = StrUtil.truncate('ああああああああああああああああああああああああああああああああああああああああああ', 20) StrUtil.print_debug(rst)