Skip to content

Commit bbca1e4

Browse files
authored
Merge pull request #579 from gschwind/pywps-4.4
Fix issue with stored request
2 parents 4148091 + 5139763 commit bbca1e4

2 files changed

Lines changed: 33 additions & 28 deletions

File tree

pywps/app/Process.py

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,11 @@
2020
from pywps.inout.outputs import output_from_json
2121
import pywps.configuration as config
2222
from pywps.exceptions import (StorageNotSupported, OperationNotSupported,
23-
ServerBusy, NoApplicableCode)
23+
ServerBusy, NoApplicableCode,
24+
InvalidParameterValue)
2425
from pywps.app.exceptions import ProcessError
2526
from pywps.inout.storage.builder import StorageBuilder
27+
from pywps.inout.outputs import ComplexOutput
2628
import importlib
2729

2830

@@ -311,6 +313,7 @@ def launch_next_process(self):
311313
process._set_uuid(uuid)
312314
process._setup_status_storage()
313315
process.async_ = True
316+
process.setup_outputs_from_wps_request(new_wps_request)
314317
new_wps_response = ExecuteResponse(new_wps_request, process=process, uuid=uuid)
315318
new_wps_response.store_status_file = True
316319
process._run_async(new_wps_request, new_wps_response)
@@ -446,3 +449,31 @@ def _set_grass(self, wps_request):
446449
LOGGER.debug('GISRC {}, GISBASE {}, GISDBASE {}, LOCATION {}, MAPSET {}'.format(
447450
os.environ.get('GISRC'), os.environ.get('GISBASE'),
448451
dbase, location, os.path.basename(mapset_name)))
452+
453+
def setup_outputs_from_wps_request(self, wps_request):
454+
# set as_reference to True for all the outputs specified as reference
455+
# if the output is not required to be raw
456+
if not wps_request.raw:
457+
for wps_outpt in wps_request.outputs:
458+
459+
is_reference = wps_request.outputs[wps_outpt].get('asReference', 'false')
460+
mimetype = wps_request.outputs[wps_outpt].get('mimetype', '')
461+
if is_reference.lower() == 'true':
462+
# check if store is supported
463+
if self.store_supported == 'false':
464+
raise StorageNotSupported(
465+
'The storage of data is not supported for this process.')
466+
467+
is_reference = True
468+
else:
469+
is_reference = False
470+
471+
for outpt in self.outputs:
472+
if outpt.identifier == wps_outpt:
473+
outpt.as_reference = is_reference
474+
if isinstance(outpt, ComplexOutput) and mimetype != '':
475+
data_format = [f for f in outpt.supported_formats if f.mime_type == mimetype]
476+
if len(data_format) == 0:
477+
raise InvalidParameterValue(
478+
'MimeType ' + mimetype + ' not valid')
479+
outpt.data_format = data_format[0]

pywps/app/Service.py

Lines changed: 1 addition & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
from pywps.exceptions import MissingParameterValue, NoApplicableCode, InvalidParameterValue, FileSizeExceeded, \
1414
StorageNotSupported, FileURLNotSupported
1515
from pywps.inout.inputs import ComplexInput, LiteralInput, BoundingBoxInput
16-
from pywps.inout.outputs import ComplexOutput
1716
from pywps.dblog import log_request, store_status
1817
from pywps import response
1918
from pywps.response.status import WPS_STATUS
@@ -138,32 +137,7 @@ def _parse_and_execute(self, process, wps_request, uuid):
138137

139138
wps_request.inputs = data_inputs
140139

141-
# set as_reference to True for all the outputs specified as reference
142-
# if the output is not required to be raw
143-
if not wps_request.raw:
144-
for wps_outpt in wps_request.outputs:
145-
146-
is_reference = wps_request.outputs[wps_outpt].get('asReference', 'false')
147-
mimetype = wps_request.outputs[wps_outpt].get('mimetype', '')
148-
if is_reference.lower() == 'true':
149-
# check if store is supported
150-
if process.store_supported == 'false':
151-
raise StorageNotSupported(
152-
'The storage of data is not supported for this process.')
153-
154-
is_reference = True
155-
else:
156-
is_reference = False
157-
158-
for outpt in process.outputs:
159-
if outpt.identifier == wps_outpt:
160-
outpt.as_reference = is_reference
161-
if isinstance(outpt, ComplexOutput) and mimetype != '':
162-
data_format = [f for f in outpt.supported_formats if f.mime_type == mimetype]
163-
if len(data_format) == 0:
164-
raise InvalidParameterValue(
165-
'MimeType ' + mimetype + ' not valid')
166-
outpt.data_format = data_format[0]
140+
process.setup_outputs_from_wps_request(wps_request)
167141

168142
wps_response = process.execute(wps_request, uuid)
169143
return wps_response

0 commit comments

Comments
 (0)