Changeset 4913
- Timestamp:
- 07/09/08 14:34:37 (6 months ago)
- Files:
-
- projects/TurboJson/trunk/setup.cfg (modified) (1 diff)
- projects/TurboJson/trunk/setup.py (modified) (1 diff)
- projects/TurboJson/trunk/turbojson/jsonify.py (modified) (7 diffs)
- projects/TurboJson/trunk/turbojson/tests/test_sqlalchemy.py (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
projects/TurboJson/trunk/setup.cfg
r4744 r4913 1 [aliases] 2 release = egg_info -RDb "" sdist bdist_egg register upload 3 1 4 [egg_info] 2 5 tag_build = .dev projects/TurboJson/trunk/setup.py
r4891 r4913 20 20 install_requires = [ 21 21 'PEAK-Rules >= 0.5a1.dev-r2555', 22 'simplejson >= 1.9.1' 22 'simplejson >= 1.9.1', 23 'prioritized_methods >= 0.1.3dev_20080709, ==dev' 23 24 ], 24 25 zip_safe = True, projects/TurboJson/trunk/turbojson/jsonify.py
r4795 r4913 4 4 import decimal 5 5 6 from peak.rules import abstract, when 6 from peak.rules import abstract 7 from prioritized_methods import prioritized_when 7 8 8 9 from simplejson import JSONEncoder … … 32 33 33 34 # This is for easier usage and backward compatibility: 34 jsonify.when = lambda *args, **kwargs: when(jsonify, *args, **kwargs)35 jsonify.when = prioritized_when.__get__(jsonify) 35 36 36 37 37 @jsonify.when("isinstance(obj, (datetime.date, datetime.datetime))" )38 @jsonify.when("isinstance(obj, (datetime.date, datetime.datetime))",-1) 38 39 def jsonify_datetime(obj): 39 40 """JSONify datetime and date objects.""" 40 41 return str(obj) 41 42 42 @jsonify.when("isinstance(obj, decimal.Decimal)" )43 @jsonify.when("isinstance(obj, decimal.Decimal)",-1) 43 44 def jsonify_decimal(obj): 44 45 """JSONify decimal objects.""" 45 46 return float(obj) 46 47 47 @jsonify.when("hasattr(obj, '__json__')" )48 @jsonify.when("hasattr(obj, '__json__')",-1) 48 49 def jsonify_explicit(obj): 49 50 """JSONify objects with explicit JSONification method.""" … … 76 77 and hasattr(obj.__class__, 'sqlmeta')) 77 78 78 @jsonify.when("is_sqlobject(obj)" 79 " and not hasattr(obj, '__json__')") 79 @jsonify.when("is_sqlobject(obj)" " and not hasattr(obj, '__json__')", -1) 80 80 def jsonify_sqlobject(obj): 81 81 """JSONify SQLObjects.""" … … 91 91 else: 92 92 93 @jsonify.when("isinstance(obj, SelectResultsClass)" )93 @jsonify.when("isinstance(obj, SelectResultsClass)",-1) 94 94 def jsonify_select_results(obj): 95 95 """JSONify SQLObject.SelectResults.""" … … 112 112 return hasattr(obj, '_sa_class_manager') 113 113 114 @jsonify.when("is_saobject(obj)" 115 " and not hasattr(obj, '__json__')") 114 @jsonify.when("is_saobject(obj) and not hasattr(obj, '__json__')",-1) 116 115 def jsonify_saobject(obj): 117 116 """JSONify SQLAlchemy objects.""" … … 128 127 and isinstance(obj.c, OrderedProperties)) 129 128 130 @jsonify.when("is_saobject(obj)" 131 " and not hasattr(obj, '__json__')") 129 @jsonify.when("is_saobject(obj) and not hasattr(obj, '__json__')",-1) 132 130 def jsonify_saobject(obj): 133 131 """JSONify SQLAlchemy objects.""" … … 144 142 else: # SQLAlchemy < 0.4 145 143 146 @jsonify.when("isinstance(obj, InstrumentedList)" )144 @jsonify.when("isinstance(obj, InstrumentedList)",-1) 147 145 def jsonify_instrumented_list(obj): 148 146 """JSONify SQLAlchemy instrumented lists.""" projects/TurboJson/trunk/turbojson/tests/test_sqlalchemy.py
r4580 r4913 23 23 Column('id', Integer, primary_key=True), 24 24 Column('val', String(8))) 25 test4 = Table('test4', metadata, 26 Column('id', Integer, primary_key=True), 27 Column('val', String(8))) 25 28 metadata.create_all() 26 29 … … 39 42 mapper(Test3, test3) 40 43 44 class Test4(object): 45 pass 46 mapper(Test4, test4) 47 41 48 test1.insert().execute({'id':1, 'val':'bob'}) 42 49 test2.insert().execute({'id':1, 'test1id':1, 'val':'fred'}) 43 50 test2.insert().execute({'id':2, 'test1id':1, 'val':'alice'}) 44 51 test3.insert().execute({'id':1, 'val':'bob'}) 52 test4.insert().execute({'id':1, 'val':'alberto'}) 45 53 46 54 except ImportError: … … 68 76 encoded = jsonify.encode(t) 69 77 assert encoded == '{"id": 1, "val": "bob", "customized": true}' 78 79 def test_priority_override(): 80 s = create_session() 81 t = s.query(Test4).get(1) 82 encoded = jsonify.encode(t) 83 assert encoded == '{"id": 1, "val": "alberto"}' 84 85 @jsonify.jsonify.when((Test4,)) 86 def jsonify_test4(obj): 87 return {'val':obj.val} 88 89 encoded = jsonify.encode(t) 90 assert encoded == '{"val": "alberto"}' 91