22
33
44class Model (object ):
5-
6- fields = [ ]
5+ fields = [] # field list
6+ repr_field = None # field to use for repr(), default is fields[0 ]
77
88 def __init__ (self , values , sub_types = None , dependant_types = None ):
99 if sub_types is None :
1010 sub_types = {}
1111 if dependant_types is None :
1212 dependant_types = {}
13-
13+
1414 self .values = values
1515 self .sub_types = sub_types
1616 self .dependant_types = dependant_types
1717 for field in self .fields :
1818 setattr (self , field , None )
1919
20+ def __repr__ (self ):
21+ repr_field = self .repr_field or self .fields [0 ]
22+ return "<chargebee.{}: {}={}>" .format (self .__class__ .__name__ , repr_field , getattr (self , repr_field ))
23+
2024 def __str__ (self ):
2125 return json .dumps (self .values , indent = 4 )
2226
@@ -40,16 +44,16 @@ def load(self, values):
4044
4145 # Returns null for any attribute that starts with cf_ to access the custom fields.
4246 def __getattr__ (self , name ):
43- if ( name [0 :3 ] == "cf_" ):
47+ if ( name [0 :3 ] == "cf_" ):
4448 return None
45- raise AttributeError ("Attribute %s not found " % name )
49+ raise AttributeError ("Attribute %s not found " % name )
4650
4751 @classmethod
4852 def construct (cls , values , sub_types = None , dependant_types = None ):
4953 obj = cls (values , sub_types , dependant_types )
5054 obj .load (values )
5155 return obj
52-
56+
5357 def init_dependant (self , obj , type , sub_types = {}):
5458 if obj .get (type ) != None :
5559 if isinstance (obj , dict ) and type in self .dependant_types :
@@ -63,4 +67,3 @@ def init_dependant_list(self, obj, type, sub_types={}):
6367 set_val = [self .dependant_types [type ].construct (dt , sub_types ) for dt in obj [type ]]
6468 setattr (self , type , set_val )
6569
66-
0 commit comments