44from bunq .sdk import client
55from bunq .sdk import context
66from bunq .sdk import security
7+ from bunq .sdk .exception import BunqException
78from bunq .sdk .json import converter
89from bunq .sdk .model import core
910from bunq .sdk .model .generated import endpoint
1011from bunq .sdk .model .generated import object_
11- from bunq .sdk .exception import BunqException
1212
1313
1414class AnchoredObjectModelAdapter (converter .JsonAdapter ):
15-
1615 _ERROR_MODEL_NOT_FOUND = '{} is not in endpoint nor object.'
1716
1817 _override_field_map = {
1918 'ScheduledPayment' : 'SchedulePayment' ,
2019 'ScheduledInstance' : 'ScheduleInstance' ,
21- }
20+ }
2221
2322 @classmethod
2423 def deserialize (cls , cls_target , obj_raw ):
@@ -31,16 +30,11 @@ def deserialize(cls, cls_target, obj_raw):
3130
3231 model_ = super ()._deserialize_default (cls_target , obj_raw )
3332
34- if isinstance (model_ , core .AnchoredObjectInterface ) and model_ .is_all_field_none ():
33+ if isinstance (model_ ,
34+ core .AnchoredObjectInterface ) and model_ .is_all_field_none ():
3535 for field in model_ .__dict__ :
36- field_ = None
37- if field in cls ._override_field_map :
38- field_ = cls ._override_field_map [field ]
3936
40- if field_ is None :
41- object_class = cls ._get_object_class (field )
42- else :
43- object_class = cls ._get_object_class (field_ )
37+ object_class = cls ._get_object_class (field )
4438
4539 contents = super ()._deserialize_default (object_class , obj_raw )
4640
@@ -62,6 +56,11 @@ def _get_object_class(cls, class_name):
6256 :rtype: core.BunqModel
6357 """
6458
59+ class_name = class_name .lstrip ('_' )
60+
61+ if class_name in cls ._override_field_map :
62+ class_name = cls ._override_field_map [class_name ]
63+
6564 try :
6665 return getattr (endpoint , class_name )
6766 except AttributeError :
@@ -486,10 +485,12 @@ def serialize(cls, share_detail):
486485 """
487486
488487 return {
489- cls ._FIELD_PAYMENT : converter .serialize (share_detail .payment ),
490- cls ._FIELD_READ_ONLY : converter .serialize (share_detail .read_only ),
488+ cls ._FIELD_PAYMENT : converter .serialize (
489+ share_detail ._payment_field_for_request ),
490+ cls ._FIELD_READ_ONLY : converter .serialize (
491+ share_detail ._read_only_field_for_request ),
491492 cls ._FIELD_DRAFT_PAYMENT : converter .serialize (
492- share_detail .draft_payment
493+ share_detail ._draft_payment
493494 ),
494495 }
495496
@@ -621,4 +622,4 @@ def serialize(cls, pagination):
621622
622623 _ = pagination
623624
624- raise NotImplementedError ()
625+ raise NotImplementedError ()
0 commit comments