summaryrefslogtreecommitdiff
path: root/wsme/rest/json.py
diff options
context:
space:
mode:
Diffstat (limited to 'wsme/rest/json.py')
-rw-r--r--wsme/rest/json.py7
1 files changed, 5 insertions, 2 deletions
diff --git a/wsme/rest/json.py b/wsme/rest/json.py
index 42a9559..9adfd6b 100644
--- a/wsme/rest/json.py
+++ b/wsme/rest/json.py
@@ -135,8 +135,11 @@ def fromjson(datatype, value):
obj = datatype()
for attrdef in wsme.types.list_attributes(datatype):
if attrdef.name in value:
- setattr(obj, attrdef.key,
- fromjson(attrdef.datatype, value[attrdef.name]))
+ val_fromjson = fromjson(attrdef.datatype, value[attrdef.name])
+ if getattr(attrdef, 'readonly', False):
+ raise InvalidInput(attrdef.name, val_fromjson,
+ "Cannot set read only field.")
+ setattr(obj, attrdef.key, val_fromjson)
elif attrdef.mandatory:
raise InvalidInput(attrdef.name, None,
"Mandatory field missing.")