Mercurial > p > roundup > code
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 |
