def test_csv_reader(self): values, i = [('David', 'Vélo'), ('Michaël', 'Tennis de table'), ('Loïc', 'Piano')], 0 for name, hobby in csv_reader(os.path.join(here, 'unicode.csv')): self.tuple_equal((name, hobby), values[i]) i += 1
def init_api(api_core_or_client, api_init_csv_directory, flush=False, add_users=True, add_profiles=True, add_medias=True, add_tasks=False, backup_medias_in_remote=True, wait_started=False, timeout=0, min_polling_delay=10): u""" Initialize an instance of ``OrchestraAPICore`` or use provided instance of ``OrchestraAPIClient`` to initialize a remote orchestration unit. """ is_core = isinstance(api_core_or_client, OrchestraAPICore) orchestra = api_core_or_client if is_core else None api_client = api_core_or_client if not is_core else None is_standalone = orchestra.is_standalone if is_core else api_client.api_local_config.is_standalone if api_client and wait_started: time_start = time.time() print(u'wait for API to be accessible, timeout {0}'.format(timeout)) while (timeout == 0) or (time.time() - time_start < timeout): time_zero = time.time() try: print(api_client.about) # wait for orchestra to answer to HTTP requests break except Exception as e: print(repr(e)) elapsed = time.time() - time_start print('\telapsed: {0}:{1}:{2}'.format(int(elapsed // 3600), # hours int(elapsed % 3600 // 60), # minutes int(elapsed % 3600 % 60))) # seconds time.sleep(max(0, min_polling_delay - (time.time() - time_zero))) if flush: if is_core: orchestra.flush_db() # FIXME remove media files else: api_client.flush() api_client.remove_medias() user_name = None if not is_standalone: add_users = False # ensure that no user is added when the user API is disabled user_name = u'root' # trick to bypass the user.name and display 'root' in the various calls to print() users, reader = [], csv_reader(os.path.join(api_init_csv_directory, u'users.csv')) for first_name, last_name, email, secret, admin_platform in reader: user = User(first_name, last_name, email, secret, admin_platform) users.append(user) if not add_users: continue print(u'Adding user {0}'.format(user.name)) if is_core: orchestra.save_user(user, hash_secret=True) else: api_client.users.add(user) users = orchestra.get_users() if is_core and is_standalone else users # api_client.users.list() if add_profiles: i, reader = 0, csv_reader(os.path.join(api_init_csv_directory, u'tprofiles.csv')) for title, description, encoder_name, encoder_string in reader: user = users[i] profile = TransformProfile(title=title, description=description, encoder_name=encoder_name, encoder_string=encoder_string) print(u'Adding transformation profile {0} as user {1}'.format(profile.title, user_name or user.name)) if is_core: orchestra.save_transform_profile(profile) else: if is_standalone: api_client.auth = user api_client.transform_profiles.add(profile) i = (i + 1) % len(users) if add_medias: i, reader = 0, csv_reader(os.path.join(api_init_csv_directory, u'medias.csv')) for local_filename, filename, title in reader: local_filename = os.path.abspath(os.path.expanduser(local_filename)) user = users[i] media = Media(user_id=user._id, filename=filename, metadata={u'title': title}, status=u'READY') if not os.path.exists(local_filename): print(u'Skip media asset {0}, file "{1}" Not found.'.format(media.metadata[u'title'], local_filename)) continue print(u'Adding media asset {0} as user {1}'.format(media.metadata[u'title'], user_name or user.name)) if is_core: #orchestra.config. bla bla -> get media.uri orchestra.save_media(media) else: if is_standalone: api_client.auth = user media.uri = api_client.upload_media(local_filename, backup_in_remote=backup_medias_in_remote) api_client.medias.add(media) i = (i + 1) % len(users) if not is_core: return if add_tasks: reader = csv_reader(os.path.join(api_init_csv_directory, u'ttasks.csv')) for user_email, in_filename, profile_title, out_filename, out_title, send_email, queue in reader: user = orchestra.get_user({u'mail': user_email}) if is_standalone else User(_id=uuid.uuid4()) if not user: raise IndexError(to_bytes(u'No user with e-mail address {0}.'.format(user_email))) for media in orchestra.get_medias(): print(media.filename) media_in = orchestra.get_media({u'filename': in_filename}) if not media_in: raise IndexError(to_bytes(u'No media asset with filename {0}.'.format(in_filename))) profile = orchestra.get_transform_profile({u'title': profile_title}) if not profile: raise IndexError(to_bytes(u'No transformation profile with title {0}.'.format(profile_title))) print(u'Launching transformation task {0} with profile {1} as user {2}.'.format( media_in.metadata[u'title'], profile.title, user.name)) metadata = {u'title': out_title} orchestra.launch_transform_task(user._id, media_in._id, profile._id, out_filename, metadata, send_email, queue, u'/transform/callback')
def test_csv_reader(self): values, i = [(u'David', u'Vélo'), (u'Michaël', u'Tennis de table'), (u'Loïc', u'Piano')], 0 for name, hobby in csv_reader(os.path.join(here, u'unicode.csv')): assert_equal((name, hobby), values[i]) i += 1