plugin schema: when publishing a schema, check that values of list are allowed, else use default value

This commit is contained in:
Goffi 2017-10-20 08:40:54 +02:00
commit a8f192a2e4

View file

@ -285,6 +285,13 @@ class PubsubSchema(object):
values_list = [C.bool(v) for v in values_list]
elif 'jid' in field.fieldType:
values_list = [jid.JID(v) for v in values_list]
if 'list' in field.fieldType:
# for lists, we check that given values are allowed in form
allowed_values = [o.value for o in field.options]
values_list = [v for v in values_list if v in allowed_values]
if not values_list:
# if values don't map to allowed values, we use default ones
values_list = field.values
field.values = values_list
yield self._p.sendItem(client, service, nodeIdentifier, form.toElement(), item_id, extra)