def input_to_file( inp: ComplexInput, param: QgsProcessingParameterFile, context: ProcessingContext ) -> str: """ Save input data to file """ # Handle file reference outputfile = (Path(context.workdir)/param.name()).with_suffix(param.extension()) inp.download_ref(outputfile) # Save data LOGGER.debug("Saving input data as %s", outputfile.as_posix()) with outputfile.open('wb') as f: data = inp.data if isinstance(data,str): data = data.encode() f.write(data) # Return base name as input file in located in workdir return outputfile.name
def test_file_input( outputdir ): """ Test file parameter """ param = QgsProcessingParameterFile("FILE", extension=".txt") inp = parse_input_definition(param) assert isinstance(inp,ComplexInput) assert inp.as_reference == False inp.data = "Hello world" context = QgsProcessingContext() context.workdir = str(outputdir) value = filesio.get_processing_value( param, [inp], context) outputpath = (Path(context.workdir)/param.name()).with_suffix(param.extension()) assert value == outputpath.name assert outputpath.exists() with outputpath.open('r') as f: assert f.read() == inp.data