예제 #1
0
파일: test_action.py 프로젝트: ryde/EDMAN
    def test_files_read(self):

        # 単一ファイルの場合
        with tempfile.NamedTemporaryFile() as fp:
            filename = fp.name
            actual = Action.files_read(filename)
        expected = (Path(filename),)
        self.assertTupleEqual(actual, expected)

        # 複数ファイル(json+その他)の場合
        tmpdir = tempfile.TemporaryDirectory()
        jsons = 4
        texts = 1
        for i in range(jsons):
            with tempfile.NamedTemporaryFile(suffix='.json') as fp:
                shutil.copy(fp.name, tmpdir.name)

        for i in range(texts):
            with tempfile.NamedTemporaryFile(suffix='.txt') as fp:
                shutil.copy(fp.name, tmpdir.name)

        actual = Action.files_read(tmpdir.name, suffix='json')
        expected = jsons
        tmpdir.cleanup()
        self.assertEqual(len(actual), expected)

        # 指定した拡張子のファイルがディレクトリ内に存在しない場合
        # 単一ファイルの場合
        with tempfile.NamedTemporaryFile() as fp:
            with self.assertRaises(SystemExit):
                _ = Action.files_read(fp.name, suffix='jpg')

        # ディレクトリにファイルがない場合
        with tempfile.TemporaryDirectory() as tmpdir_name:
            with self.assertRaises(SystemExit):
                _ = Action.files_read(tmpdir_name)

        # パスオブジェクトでない場合
        with self.assertRaises(SystemExit):
            _ = Action.files_read('test')
예제 #2
0
                    help='Ref is ObjectId or Emb is query list strings.')
parser.add_argument('-c',
                    '--compress',
                    action='store_true',
                    help='gzip compress.Default is not compressed.')
args = parser.parse_args()

# iniファイル読み込み
settings = configparser.ConfigParser()
settings.read(Path.cwd() / 'ini' / 'db.ini')
con = dict([i for i in settings['DB'].items()])

db = DB(con)
file = File(db.get_db)

# 対象oidの所属コレクションを自動的に取得 ※動作が遅い場合は使用しないこと
collection = db.find_collection_from_objectid(args.objectid)

# ドキュメント構造の取得
structure = db.get_structure(collection, args.objectid)

# クエリの変換
query = Action.file_query_eval(args.query, structure)

if file.add_file_reference(collection, args.objectid,
                           Action.files_read(args.path), structure, query,
                           args.compress):
    print('更新しました')
else:
    print('更新に失敗しました')
예제 #3
0
파일: entry.py 프로젝트: ryde/EDMAN
# 結果を記録する場合はパスの存在を調べる
if args.result_dir is not None:
    p = Path(args.result_dir)
    if not p.exists() and not p.is_dir():
        sys.exit('パスが不正です')

# iniファイル読み込み
settings = configparser.ConfigParser()
settings.read(Path.cwd() / 'ini' / 'db.ini')
con = dict([i for i in settings['DB'].items()])

db = DB(con)
jm = JsonManager()
convert = Convert()
json_files = Action.files_read(args.path, 'json')

for file in Action.file_gen(json_files):
    # Ednman用にjsonをコンバート
    converted_edman = convert.dict_to_edman(file, mode=args.structure)
    # コンバート結果を保存する場合
    # jm.save({'converted_edman': converted_edman}, args.result_dir,
    #         name='edman_json_list', date=True)

    # DBへインサート
    inserted_report = db.insert(converted_edman)

    if args.result_dir is not None:
        jm.save({'inserted_report': inserted_report},
                args.result_dir,
                name='inserted',