comparison roundup/rest.py @ 5579:2814d95cfec2 REST-rebased

Improve props_from_args .. to skip initializing invalid property of the class. committer: Ralf Schlatterbeck <rsc@runtux.com>
author Chau Nguyen <dangchau1991@yahoo.com>
date Wed, 30 Jan 2019 10:26:34 +0100
parents c2214d0c9df8
children d5a54b1851aa
comparison
equal deleted inserted replaced
5578:c2214d0c9df8 5579:2814d95cfec2
16 from roundup.exceptions import * 16 from roundup.exceptions import *
17 from roundup import xmlrpc 17 from roundup import xmlrpc
18 18
19 19
20 def props_from_args(db, cl, args, itemid=None): 20 def props_from_args(db, cl, args, itemid=None):
21 class_props = cl.properties.keys()
21 props = {} 22 props = {}
23 # props = dict.fromkeys(class_props, None)
24
22 for arg in args: 25 for arg in args:
23 try: 26 key = arg.name
24 key = arg.name 27 value = arg.value
25 value = arg.value 28 if key not in class_props:
26 except ValueError: 29 continue
27 raise UsageError('argument "%s" not propname=value' % arg)
28 if isinstance(key, unicode): 30 if isinstance(key, unicode):
29 try: 31 try:
30 key = key.encode('ascii') 32 key = key.encode('ascii')
31 except UnicodeEncodeError: 33 except UnicodeEncodeError:
32 raise UsageError('argument %r is no valid ascii keyword' % key) 34 raise UsageError('argument %r is no valid ascii keyword' % key)
33 if isinstance(value, unicode): 35 if isinstance(value, unicode):
34 value = value.encode('utf-8') 36 value = value.encode('utf-8')
35 if value: 37 if value:
36 try: 38 try:
37 props[key] = hyperdb.rawToHyperdb(db, cl, itemid, key, value) 39 props[key] = hyperdb.rawToHyperdb(db, cl, itemid, key, value)
38 except hyperdb.HyperdbValueError: 40 except hyperdb.HyperdbValueError, msg:
39 pass # pass if a parameter is not a property of the class 41 raise UsageError(msg)
40 else: 42 else:
41 props[key] = None 43 props[key] = None
42 44
43 return props 45 return props
44 46

Roundup Issue Tracker: http://roundup-tracker.org/