def prepare_argument_path( self, argument_noun, raw_arguments, draft_folder, default_path): data_type = get_data_type(argument_noun) # If client sent direct content (x_table_csv), save it for file_format in data_type.formats: raw_argument_name = '%s_%s' % (argument_noun, file_format) if raw_argument_name not in raw_arguments: continue source_text = raw_arguments[raw_argument_name] target_name = '%s.%s' % (argument_noun, file_format) return copy_text(join(draft_folder, target_name), source_text) # Raise KeyError if client did not specify noun (x_table) v = raw_arguments[argument_noun] # If client sent multipart content, save it if hasattr(v, 'file'): target_name = argument_noun + get_file_extension(v.filename) return copy_file(join(draft_folder, target_name), v.file) # If client sent empty content, use default if v == '': if not default_path: raise KeyError target_name = argument_noun + get_file_extension(default_path) return link_path(join(draft_folder, target_name), default_path) # If client sent a relative path (x_table=11/x/y.csv), find it if '/' in v: source_path = self.get_file_path(*parse_result_relative_path(v)) target_name = argument_noun + get_file_extension(source_path) return link_path(join(draft_folder, target_name), source_path) # If client sent an upload id (x_table=x), find it upload = get_upload(self, upload_id=v) source_path = join(upload.folder, data_type.get_file_name()) target_name = argument_noun + get_file_extension(source_path) target_path = move_path(join(draft_folder, target_name), source_path) remove_safely(upload.folder) return target_path
def run(self, args): settings = get_appsettings(args.configuration_path) if args.restart and 'data.folder' in settings: remove_safely(settings['data.folder']) for key, value in settings.items(): if key.endswith('.folder'): make_folder(value)
def prepare_argument_path(self, argument_noun, raw_arguments, draft_folder, default_path): data_type = get_data_type(argument_noun) # If client sent direct content (x_table_csv), save it for file_format in data_type.formats: raw_argument_name = '%s_%s' % (argument_noun, file_format) if raw_argument_name not in raw_arguments: continue source_text = raw_arguments[raw_argument_name] target_name = '%s.%s' % (argument_noun, file_format) return copy_text(join(draft_folder, target_name), source_text) # Raise KeyError if client did not specify noun (x_table) v = raw_arguments[argument_noun] # If client sent multipart content, save it if hasattr(v, 'file'): target_name = argument_noun + get_file_extension(v.filename) return copy_file(join(draft_folder, target_name), v.file) # If client sent empty content, use default if v == '': if not default_path: raise KeyError target_name = argument_noun + get_file_extension(default_path) return link_path(join(draft_folder, target_name), default_path) # If client sent a relative path (x_table=11/x/y.csv), find it if '/' in v: source_path = self.get_file_path(*parse_result_relative_path(v)) target_name = argument_noun + get_file_extension(source_path) return link_path(join(draft_folder, target_name), source_path) # If client sent an upload id (x_table=x), find it upload = get_upload(self, upload_id=v) source_path = realpath(join(upload.folder, data_type.get_file_name())) target_name = argument_noun + get_file_extension(source_path) target_path = move_path(join(draft_folder, target_name), source_path) remove_safely(upload.folder) return target_path
def prepare_arguments(self, tool_definition, raw_arguments): draft_folder = make_unique_folder(join( self.data_folder, 'drafts', Result._plural), length=16) try: result_arguments = self.collect_arguments( tool_definition, raw_arguments, draft_folder) except DataParseError as e: raise HTTPBadRequest(e.message_by_name) result = self.spawn_result() result.arguments = self.migrate_arguments( result_arguments, result.get_source_folder(self.data_folder)) remove_safely(draft_folder) return result
def prepare_arguments(self, tool_definition, raw_arguments): draft_folder = make_unique_folder(join(self.data_folder, 'drafts', Result._plural), length=16) try: result_arguments = self.collect_arguments(tool_definition, raw_arguments, draft_folder) except DataParseError as e: raise HTTPBadRequest(e.message_by_name) result = self.spawn_result() result.arguments = corral_arguments( result.get_source_folder(self.data_folder), result_arguments, move_path) remove_safely(draft_folder) return result
def data_folder(tmpdir): data_folder = str(tmpdir) yield data_folder remove_safely(data_folder)
def wash_total_folder(target_folder): drafts_folder = join(target_folder, 'drafts') remove_safely(drafts_folder) remove_safely(drafts_folder + '.prj')