Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions pywps/inout/inputs.py
Original file line number Diff line number Diff line change
Expand Up @@ -288,6 +288,7 @@ def json(self):
'data_type': self.data_type,
'workdir': self.workdir,
'allowed_values': [value.json for value in self.allowed_values],
'any_value': self.any_value,
'mode': self.valid_mode,
'min_occurs': self.min_occurs,
'max_occurs': self.max_occurs,
Expand Down Expand Up @@ -329,6 +330,7 @@ def from_json(cls, json_input):
uom = json_input.pop('uom', None)
metadata = json_input.pop('metadata', [])
json_input.pop('type')
json_input.pop('any_value', None)

instance = cls(**json_input)

Expand Down
18 changes: 7 additions & 11 deletions pywps/inout/literaltypes.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,8 +83,6 @@ def __init__(self, allowed_type=ALLOWEDVALUETYPE.VALUE, value=None,
minval=None, maxval=None, spacing=None,
range_closure=RANGECLOSURETYPE.CLOSED):

AnyValue.__init__(self)

self.allowed_type = allowed_type
self.value = value
self.minval = minval
Expand All @@ -93,14 +91,7 @@ def __init__(self, allowed_type=ALLOWEDVALUETYPE.VALUE, value=None,
self.range_closure = range_closure

def __eq__(self, other):
return all([
self.allowed_type == other.allowed_type,
self.value == other.value,
self.minval == other.minval,
self.maxval == other.maxval,
self.spacing == other.spacing,
self.range_closure == other.range_closure,
])
return isinstance(other, AllowedValue) and self.json == other.json

@property
def json(self):
Expand All @@ -118,6 +109,9 @@ def json(self):
}


ALLOWED_VALUES_TYPES = (AllowedValue, AnyValue, NoValue, ValuesReference)


def get_converter(convertor):
"""function for decoration of convert
"""
Expand Down Expand Up @@ -341,7 +335,9 @@ def make_allowedvalues(allowed_values):

for value in allowed_values:

if isinstance(value, (AllowedValue, AnyValue, NoValue, ValuesReference)):
if value in ALLOWED_VALUES_TYPES:
new_allowedvalues.append(value())
elif isinstance(value, ALLOWED_VALUES_TYPES):
new_allowedvalues.append(value)

elif type(value) == tuple or type(value) == list:
Expand Down
16 changes: 8 additions & 8 deletions pywps/templates/1.0.0/describe/literal.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,24 +11,24 @@
</Supported>
</UOMs>
{% endif %}
{% if put.allowed_values %}
{% if put.any_value %}
<ows:AnyValue />
{% elif put.allowed_values %}
<ows:AllowedValues>
{% for value in put.allowed_values %}
{% if value.allowed_type == "value" %}
{% for value in put.allowed_values %}
{% if value.allowed_type == "value" %}
<ows:Value>{{ value.value }}</ows:Value>
{% else %}
{% else %}
<ows:Range ows:rangeClosure="{{ value.range_closure }}">
<ows:MinimumValue>{{ value.minval }}</ows:MinimumValue>
<ows:MaximumValue>{{ value.maxval }}</ows:MaximumValue>
{% if value.spacing %}
<ows:Spacing>{{ value.spacing }}</ows:Spacing>
{% endif %}
</ows:Range>
{% endif %}
{% endfor %}
{% endif %}
{% endfor %}
</ows:AllowedValues>
{% elif put.any_value %}
<ows:AnyValue />
{% endif %}
{% if put.data %}
<DefaultValue>{{ put.data }}</DefaultValue>
Expand Down
6 changes: 4 additions & 2 deletions tests/test_inout.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
from pywps.validator import get_validator
from pywps.inout.basic import IOHandler, SOURCE_TYPE, SimpleHandler, BBoxInput, BBoxOutput, \
ComplexInput, ComplexOutput, LiteralOutput, LiteralInput, _is_textfile
from pywps.inout.literaltypes import convert, AllowedValue
from pywps.inout.literaltypes import convert, AllowedValue, AnyValue
from pywps._compat import StringIO, text_type, urlparse
from pywps.validator.base import emptyvalidator
from pywps.exceptions import InvalidParameterValue
Expand Down Expand Up @@ -327,7 +327,7 @@ def make_literal_input(self):
min_occurs=2,
max_occurs=5,
mode=MODE.STRICT,
allowed_values=[AllowedValue(value='something'), AllowedValue(value='something else')],
allowed_values=[AllowedValue(value='something'), AllowedValue(value='something else'), AnyValue()],
default="something else",
default_type=SOURCE_TYPE.DATA,
)
Expand All @@ -349,6 +349,8 @@ def assert_literal_equals(self, literal_1, literal_2):
self.assertEqual(literal_1.max_occurs, literal_2.max_occurs)
self.assertEqual(literal_1.valid_mode, literal_2.valid_mode)
self.assertEqual(literal_1.allowed_values, literal_2.allowed_values)
self.assertEqual(literal_1.any_value, literal_2.any_value)
self.assertTrue(literal_1.any_value)
self.assertEqual(literal_1.as_reference, literal_2.as_reference)

self.assertEqual(literal_1.data, literal_2.data)
Expand Down