@@ -9,17 +9,21 @@ def to_json(self):
99class FromJsonMixin (object ):
1010 class_dict = {}
1111
12- def from_json (self , json_data ):
12+ @classmethod
13+ def from_json (cls , json_data ):
14+ obj = cls ()
1315 for key in json_data :
14- if key in self .class_dict :
15- obj = self .class_dict [key ]()
16- obj .from_json (json_data [key ])
17- setattr (self , key , obj )
16+ if key in obj .class_dict :
17+ sub_obj = obj .class_dict [key ]()
18+ sub_obj .from_json (json_data [key ])
19+ setattr (obj , key , sub_obj )
1820 else :
19- setattr (self , key , json_data [key ])
21+ setattr (obj , key , json_data [key ])
22+
23+ return obj
2024
2125
22- class ReadMixin :
26+ class ReadMixin ( object ) :
2327 qbo_object_name = ""
2428
2529 @classmethod
@@ -28,13 +32,10 @@ def get(cls, id):
2832 qb = QuickBooks ()
2933
3034 json_data = qb .get_single_object (cls .qbo_object_name , pk = id )
31- obj = cls ()
32- obj .from_json (json_data [cls .qbo_object_name ])
33-
34- return obj
35+ return cls .from_json (json_data [cls .qbo_object_name ])
3536
3637
37- class CreateMixin :
38+ class CreateMixin ( object ) :
3839 qbo_object_name = ""
3940
4041 @classmethod
@@ -43,14 +44,10 @@ def create(cls):
4344 qb = QuickBooks ()
4445
4546 json_data = qb .create_object (cls .qbo_object_name , cls .to_json ())
46-
47- obj = cls ()
48- obj .from_json (json_data [cls .qbo_object_name ])
49-
50- return obj
47+ return cls .from_json (json_data [cls .qbo_object_name ])
5148
5249
53- class UpdateMixin :
50+ class UpdateMixin ( object ) :
5451 qbo_object_name = ""
5552
5653 def update (self ):
@@ -61,7 +58,7 @@ def update(self):
6158 return self
6259
6360
64- class ListMixin :
61+ class ListMixin ( object ) :
6562 qbo_object_name = ""
6663
6764 @classmethod
@@ -73,11 +70,8 @@ def all(cls):
7370 json_data = qb .get_all (cls .qbo_object_name )
7471
7572 obj_list = []
76-
7773 for item_json in json_data ["QueryResponse" ][cls .qbo_object_name ]:
78- obj = cls ()
79- obj .from_json (item_json )
80- obj_list .append (obj )
74+ obj_list .append (cls .from_json (item_json ))
8175
8276 return obj_list
8377
@@ -90,8 +84,6 @@ def filter(cls, **kwargs):
9084
9185 obj_list = []
9286 for item_json in json_data ["QueryResponse" ][cls .qbo_object_name ]:
93- obj = cls ()
94- obj .from_json (item_json )
95- obj_list .append (obj )
87+ obj_list .append (cls .from_json (item_json ))
9688
9789 return obj_list
0 commit comments