Source code for emu.processes.wps_multiple_outputs

import os
from pywps import Process, LiteralInput, ComplexOutput
from pywps import FORMATS
from pywps.inout.literaltypes import AllowedValue
from pywps.ext_autodoc import MetadataUrl
from pywps.inout.outputs import MetaLink, MetaLink4, MetaFile
import json

import logging
LOGGER = logging.getLogger("PYWPS")


[docs] class MultipleOutputs(Process): def __init__(self): inputs = [ LiteralInput('count', 'Number of output files', abstract='The number of generated output files.', data_type='integer', default=2, allowed_values=[AllowedValue(minval=1, maxval=10)])] outputs = [ ComplexOutput('output', 'METALINK v3 output', abstract='Testing metalink v3 output', as_reference=True, supported_formats=[FORMATS.METALINK]), ComplexOutput('output_meta4', 'METALINK v4 output', abstract='Testing metalink v4 output', as_reference=True, supported_formats=[FORMATS.META4]) ] super(MultipleOutputs, self).__init__( self._handler, identifier='multiple_outputs', title='Multiple Outputs', abstract='Produces multiple files and returns a document' ' with references to these files.', metadata=[ MetadataUrl('User Guide', 'https://emu.readthedocs.io/en/latest/processes.html', anonymous=True), ], version='1.1', inputs=inputs, outputs=outputs, store_supported=True, status_supported=True ) def _handler(self, request, response): response.update_status('PyWPS Process started.', 0) LOGGER.info("starting ...") max_outputs = request.inputs['count'][0].data # generate MetaLink v3 output ml3 = MetaLink('test-ml-1', 'Testing MetaLink with text files.', workdir=self.workdir) for i in range(max_outputs): mf = MetaFile('output_{}'.format(i), 'Test output', fmt=FORMATS.TEXT) mf.data = 'output: {}'.format(i) ml3.append(mf) response.outputs['output'].data = ml3.xml # ... OR generate MetaLink v4 output (recommended) ml4 = MetaLink4('test-ml-1', 'Testing MetaLink with text files.', workdir=self.workdir) for i in range(max_outputs): mf = MetaFile('output_{}'.format(i), 'Test output', fmt=FORMATS.TEXT) mf.data = 'output: {}'.format(i) ml4.append(mf) response.outputs['output_meta4'].data = ml4.xml response.update_status('PyWPS Process completed.', 100) return response