def import_(source_file, create_users, force, verbose, yes, category_id): """Imports an event exported from another Indico instance.""" click.echo('Importing event...') event = import_event(source_file, category_id, create_users=create_users, verbose=verbose, force=force) if event is None: click.secho('Import failed.', fg='red') sys.exit(1) if not yes and not click.confirm(click.style('Import finished. Commit the changes?', fg='green'), default=True): db.session.rollback() sys.exit(1) db.session.commit() click.secho(event.external_url, fg='green', bold=True)
def import_(source_file, create_users, force, verbose, yes, category_id): """Import an event exported from another Indico instance.""" click.echo('Importing event...') event = import_event(source_file, category_id, create_users=create_users, verbose=verbose, force=force) if event is None: click.secho('Import failed.', fg='red') sys.exit(1) if not yes and not click.confirm(click.style('Import finished. Commit the changes?', fg='green'), default=True): db.session.rollback() sys.exit(1) db.session.commit() click.secho(event.external_url, fg='green', bold=True)
def test_event_import(db, dummy_user): with open(os.path.join(os.path.dirname(__file__), 'export_test_2.yaml'), 'r') as ref_file: data_yaml_content = ref_file.read().replace('{version}', indico.__version__) data_yaml = BytesIO(data_yaml_content.encode('utf-8')) tar_buffer = BytesIO() # User should be matched by e-mail dummy_user.email = '*****@*****.**' db.session.flush() # create a tar file artificially, using the provided YAML with tarfile.open(mode='w', fileobj=tar_buffer) as tarf: tar_info = tarfile.TarInfo('data.yaml') tar_info.size = len(data_yaml_content) tarf.addfile(tar_info, data_yaml) tar_info = tarfile.TarInfo('00000000-0000-4000-8000-00000000001c') tar_info.size = 11 tarf.addfile(tar_info, BytesIO(b'hello world')) tar_buffer.seek(0) e = import_event(tar_buffer, create_users=False) # Check that event metadata is fine assert e.title == 'dummy#0' assert e.creator == dummy_user assert e.created_dt == as_utc(datetime(2017, 8, 24, 15, 28, 42, 652626)) assert e.start_dt == as_utc(datetime(2017, 8, 24, 10, 0, 0)) assert e.end_dt == as_utc(datetime(2017, 8, 24, 12, 0, 0)) # Check that attachment metadata is fine assert get_attached_items(e)['files'] == [] folder = get_attached_items(e)['folders'][0] assert folder.title == 'dummy_folder' attachment = folder.attachments[0] assert attachment.title == 'dummy_attachment' # Check that the actual file is accessible assert attachment.file.open().read() == 'hello world'
def test_event_import(db, dummy_user): with open(os.path.join(os.path.dirname(__file__), 'export_test_2.yaml'), 'r') as ref_file: data_yaml_content = ref_file.read() data_yaml = BytesIO(data_yaml_content.encode('utf-8')) tar_buffer = BytesIO() # User should be matched by e-mail dummy_user.email = '*****@*****.**' db.session.flush() # create a tar file artificially, using the provided YAML with tarfile.open(mode='w', fileobj=tar_buffer) as tarf: tar_info = tarfile.TarInfo('data.yaml') tar_info.size = len(data_yaml_content) tarf.addfile(tar_info, data_yaml) tar_info = tarfile.TarInfo('00000000-0000-4000-8000-00000000001c') tar_info.size = 11 tarf.addfile(tar_info, BytesIO(b'hello world')) tar_buffer.seek(0) e = import_event(tar_buffer, create_users=False) # Check that event metadata is fine assert e.title == 'dummy#0' assert e.creator == dummy_user assert e.created_dt == as_utc(datetime(2017, 8, 24, 15, 28, 42, 652626)) assert e.start_dt == as_utc(datetime(2017, 8, 24, 10, 0, 0)) assert e.end_dt == as_utc(datetime(2017, 8, 24, 12, 0, 0)) # Check that attachment metadata is fine assert get_attached_items(e)['files'] == [] folder = get_attached_items(e)['folders'][0] assert folder.title == 'dummy_folder' attachment = folder.attachments[0] assert attachment.title == 'dummy_attachment' # Check that the actual file is accessible assert attachment.file.open().read() == 'hello world'