def handle(self, *args, **options): """Register processes.""" schemas = options.get('schemas') force = options.get('force') paths = options.get('path') verbosity = int(options.get('verbosity')) if not isinstance(paths, list): raise ValueError("Argument paths must be of type list") if schemas is not None and not isinstance(schemas, list): raise ValueError("Argument schemas must be of type list or None") users = get_user_model().objects.filter( is_superuser=True).order_by('date_joined') if not users.exists(): self.stderr.write("Admin does not exist: create a superuser") exit(1) user_admin = users.first() processes_paths = paths[:] descriptors_paths = paths[:] if not paths: for finder in get_finders(): processes_paths.extend(finder.find_processes()) descriptors_paths.extend(finder.find_descriptors()) process_schemas = [] for proc_path in processes_paths: process_schemas.extend( self.find_schemas(proc_path, filters=schemas, schema_type='process', verbosity=verbosity)) self.register_processes(process_schemas, user_admin, force, verbosity=verbosity) descriptor_schemas = [] for desc_path in descriptors_paths: descriptor_schemas.extend( self.find_schemas(desc_path, filters=schemas, schema_type='descriptor', verbosity=verbosity)) self.register_descriptors(descriptor_schemas, user_admin, force, verbosity=verbosity) if verbosity > 0: self.stdout.write("Running executor post-registration hook...") manager.get_executor().post_register_hook(verbosity=verbosity)
def handle(self, *args, **options): """Register processes.""" force = options.get("force") retire = options.get("retire") verbosity = int(options.get("verbosity")) users = (get_user_model().objects.filter( is_superuser=True).order_by("date_joined")) if not users.exists(): self.stderr.write("Admin does not exist: create a superuser") exit(1) process_paths, descriptor_paths = [], [] process_schemas, descriptor_schemas = [], [] for finder in get_finders(): process_paths.extend(finder.find_processes()) descriptor_paths.extend(finder.find_descriptors()) for proc_path in process_paths: process_schemas.extend( self.find_schemas(proc_path, schema_type=SCHEMA_TYPE_PROCESS, verbosity=verbosity)) for desc_path in descriptor_paths: descriptor_schemas.extend( self.find_schemas(desc_path, schema_type=SCHEMA_TYPE_DESCRIPTOR, verbosity=verbosity)) user_admin = users.first() self.register_descriptors(descriptor_schemas, user_admin, force, verbosity=verbosity) # NOTE: Descriptor schemas must be registered first, so # processes can validate 'entity_descriptor_schema' field. self.register_processes(process_schemas, user_admin, force, verbosity=verbosity) if retire: self.retire(process_schemas) if verbosity > 0: self.stdout.write("Running executor post-registration hook...") manager.get_executor().post_register_hook(verbosity=verbosity)
def handle(self, *args, **options): """Register processes.""" force = options.get('force') retire = options.get('retire') verbosity = int(options.get('verbosity')) users = get_user_model().objects.filter( is_superuser=True).order_by('date_joined') if not users.exists(): self.stderr.write("Admin does not exist: create a superuser") exit(1) process_paths, descriptor_paths = [], [] process_schemas, descriptor_schemas = [], [] for finder in get_finders(): process_paths.extend(finder.find_processes()) descriptor_paths.extend(finder.find_descriptors()) for proc_path in process_paths: process_schemas.extend( self.find_schemas(proc_path, schema_type='process', verbosity=verbosity)) for desc_path in descriptor_paths: descriptor_schemas.extend( self.find_schemas(desc_path, schema_type='descriptor', verbosity=verbosity)) user_admin = users.first() self.register_processes(process_schemas, user_admin, force, verbosity=verbosity) self.register_descriptors(descriptor_schemas, user_admin, force, verbosity=verbosity) if retire: self.retire(process_schemas) if verbosity > 0: self.stdout.write("Running executor post-registration hook...") manager.get_executor().post_register_hook(verbosity=verbosity)
def hydrate_input_uploads(input_, input_schema, hydrate_values=True): """Hydrate input basic:upload types with upload location. Find basic:upload fields in input. Add the upload location for relative paths. """ from resolwe.flow.managers import manager files = [] for field_schema, fields in iterate_fields(input_, input_schema): name = field_schema["name"] value = fields[name] if "type" in field_schema: if field_schema["type"] == "basic:file:": files.append(value) elif field_schema["type"] == "list:basic:file:": files.extend(value) urlregex = re.compile( r"^(https?|ftp)://[-A-Za-z0-9\+&@#/%?=~_|!:,.;]*[-A-Za-z0-9\+&@#/%=~_|]" ) for value in files: if "file_temp" in value: if isinstance(value["file_temp"], str): # If file_temp not url, hydrate path. if not urlregex.search(value["file_temp"]): value["file_temp"] = manager.get_executor().resolve_upload_path( value["file_temp"] ) else: # Something very strange happened. value["file_temp"] = "Invalid value for file_temp in DB"
def hydrate_input_uploads(input_, input_schema, hydrate_values=True): """Hydrate input basic:upload types with upload location. Find basic:upload fields in input. Add the upload location for relative paths. """ from resolwe.flow.managers import manager files = [] for field_schema, fields in iterate_fields(input_, input_schema): name = field_schema['name'] value = fields[name] if 'type' in field_schema: if field_schema['type'] == 'basic:file:': files.append(value) elif field_schema['type'] == 'list:basic:file:': files.extend(value) urlregex = re.compile(r'^(https?|ftp)://[-A-Za-z0-9\+&@#/%?=~_|!:,.;]*[-A-Za-z0-9\+&@#/%=~_|]') for value in files: if 'file_temp' in value: if isinstance(value['file_temp'], str): # If file_temp not url, hydrate path. if not urlregex.search(value['file_temp']): value['file_temp'] = manager.get_executor().resolve_upload_path(value['file_temp']) else: # Something very strange happened. value['file_temp'] = 'Invalid value for file_temp in DB'
def wrapper(wrapped_method, instance, args, kwargs): from resolwe.flow.managers import manager # To prevent circular imports. executor_settings = settings.FLOW_EXECUTOR.copy() executor_settings.update(custom_executor_settings) try: with override_settings(FLOW_EXECUTOR=executor_settings): manager.discover_engines() # Re-run the post_register_hook manager.get_executor().post_register_hook(verbosity=0) # Run the actual unit test method. return wrapped_method(*args, **kwargs) finally: # Re-run engine discovery as the settings have changed. manager.discover_engines()
def wrapper(wrapped_method, instance, args, kwargs): executor_settings = settings.FLOW_EXECUTOR.copy() executor_settings.update(custom_executor_settings) try: with override_settings(FLOW_EXECUTOR=executor_settings): with manager.override_settings( FLOW_EXECUTOR=executor_settings): # Re-run engine discovery as the settings have changed. manager.discover_engines() # Re-run the post_register_hook manager.get_executor().post_register_hook() # Run the actual unit test method. return wrapped_method(*args, **kwargs) finally: # Re-run engine discovery as the settings have changed. manager.discover_engines()
def wrapper(wrapped_method, instance, args, kwargs): from resolwe.flow.managers import manager # To prevent circular imports. executor_settings = settings.FLOW_EXECUTOR.copy() executor_settings.update(custom_executor_settings) try: with override_settings(FLOW_EXECUTOR=executor_settings): with manager.override_settings(FLOW_EXECUTOR=executor_settings): # Re-run engine discovery as the settings have changed. manager.discover_engines() # Re-run the post_register_hook manager.get_executor().post_register_hook(verbosity=0) # Run the actual unit test method. return wrapped_method(*args, **kwargs) finally: # Re-run engine discovery as the settings have changed. manager.discover_engines()
def handle(self, *args, **options): """Register processes.""" force = options.get('force') retire = options.get('retire') verbosity = int(options.get('verbosity')) users = get_user_model().objects.filter(is_superuser=True).order_by('date_joined') if not users.exists(): self.stderr.write("Admin does not exist: create a superuser") exit(1) process_paths, descriptor_paths = [], [] process_schemas, descriptor_schemas = [], [] for finder in get_finders(): process_paths.extend(finder.find_processes()) descriptor_paths.extend(finder.find_descriptors()) for proc_path in process_paths: process_schemas.extend( self.find_schemas(proc_path, schema_type=SCHEMA_TYPE_PROCESS, verbosity=verbosity)) for desc_path in descriptor_paths: descriptor_schemas.extend( self.find_schemas(desc_path, schema_type=SCHEMA_TYPE_DESCRIPTOR, verbosity=verbosity)) user_admin = users.first() self.register_descriptors(descriptor_schemas, user_admin, force, verbosity=verbosity) # NOTE: Descriptor schemas must be registered first, so # processes can validate 'entity_descriptor_schema' field. self.register_processes(process_schemas, user_admin, force, verbosity=verbosity) if retire: self.retire(process_schemas) if verbosity > 0: self.stdout.write("Running executor post-registration hook...") manager.get_executor().post_register_hook(verbosity=verbosity)
def hydrate_path(file_name): """Hydrate file paths.""" from resolwe.flow.managers import manager class HydratedPath(str): """String wrapper, which also stores the original filename.""" __slots__ = ("data_id", "file_name") def __new__(cls, value=""): """Initialize hydrated path.""" hydrated = str.__new__(cls, value) hydrated.data_id = data.id hydrated.file_name = file_name return hydrated return HydratedPath(manager.get_executor().resolve_data_path(data, file_name))
def hydrate_path(file_name): """Hydrate file paths.""" from resolwe.flow.managers import manager class HydratedPath(str): """String wrapper, which also stores the original filename.""" __slots__ = ('data_id', 'file_name') def __new__(cls, value=''): """Initialize hydrated path.""" hydrated = str.__new__(cls, value) hydrated.data_id = data.id hydrated.file_name = file_name return hydrated return HydratedPath(manager.get_executor().resolve_data_path(data, file_name))