@@ -200,9 +200,19 @@ def make_object(self, data):
200200 return Hub (** data )
201201
202202
203+ class ExternalIdField (fields .Field ):
204+ def _deserialize (self , value , attr , obj , ** kwargs ):
205+ if isinstance (value , six .string_types ):
206+ return value
207+ elif isinstance (value , int ):
208+ return str (value )
209+ else :
210+ raise ValueError ({attr : [u'Not a valid int or string.' ]})
211+
212+
203213class ExtIdHubSchema (Schema ):
204214 hub = fields .Nested (HubSchema , only = ('id' , 'name' ))
205- external_id = fields . Str ()
215+ external_id = ExternalIdField ()
206216
207217 @post_load
208218 def make_object (self , data ):
@@ -490,7 +500,7 @@ def make_object(self, data):
490500class TierAccountSchema (BaseSchema ):
491501 name = fields .Str ()
492502 contact_info = fields .Nested (ContactInfoSchema )
493- external_id = fields . Str ()
503+ external_id = ExternalIdField ()
494504 external_uid = fields .Str ()
495505
496506 @post_load
@@ -525,7 +535,7 @@ def make_object(self, data):
525535
526536class AssetSchema (BaseSchema ):
527537 status = fields .Str ()
528- external_id = fields . Str ()
538+ external_id = ExternalIdField ()
529539 external_uid = fields .Str (allow_none = True )
530540 external_name = fields .Str (allow_none = True )
531541 product = fields .Nested (ProductSchema , only = ('id' , 'name' ))
0 commit comments