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
17+ __STRING_FORMAT_UNDERSCORE = '_'
18+
1819 _override_field_map = {
1920 'ScheduledPayment' : 'SchedulePayment' ,
2021 'ScheduledInstance' : 'ScheduleInstance' ,
21- }
22+ }
2223
2324 @classmethod
2425 def deserialize (cls , cls_target , obj_raw ):
@@ -31,17 +32,12 @@ def deserialize(cls, cls_target, obj_raw):
3132
3233 model_ = super ()._deserialize_default (cls_target , obj_raw )
3334
34- if isinstance (model_ , core .AnchoredObjectInterface ) and model_ .is_all_field_none ():
35+ if isinstance (
36+ model_ ,
37+ core .AnchoredObjectInterface
38+ ) and model_ .is_all_field_none ():
3539 for field in model_ .__dict__ :
36- field_ = None
37- if field in cls ._override_field_map :
38- field_ = cls ._override_field_map [field ]
39-
40- if field_ is None :
41- object_class = cls ._get_object_class (field )
42- else :
43- object_class = cls ._get_object_class (field_ )
44-
40+ object_class = cls ._get_object_class (field )
4541 contents = super ()._deserialize_default (object_class , obj_raw )
4642
4743 if contents .is_all_field_none ():
@@ -62,6 +58,11 @@ def _get_object_class(cls, class_name):
6258 :rtype: core.BunqModel
6359 """
6460
61+ class_name = class_name .lstrip (cls .__STRING_FORMAT_UNDERSCORE )
62+
63+ if class_name in cls ._override_field_map :
64+ class_name = cls ._override_field_map [class_name ]
65+
6566 try :
6667 return getattr (endpoint , class_name )
6768 except AttributeError :
@@ -486,10 +487,12 @@ def serialize(cls, share_detail):
486487 """
487488
488489 return {
489- cls ._FIELD_PAYMENT : converter .serialize (share_detail .payment ),
490- cls ._FIELD_READ_ONLY : converter .serialize (share_detail .read_only ),
490+ cls ._FIELD_PAYMENT : converter .serialize (
491+ share_detail ._payment_field_for_request ),
492+ cls ._FIELD_READ_ONLY : converter .serialize (
493+ share_detail ._read_only_field_for_request ),
491494 cls ._FIELD_DRAFT_PAYMENT : converter .serialize (
492- share_detail .draft_payment
495+ share_detail ._draft_payment
493496 ),
494497 }
495498
@@ -621,4 +624,4 @@ def serialize(cls, pagination):
621624
622625 _ = pagination
623626
624- raise NotImplementedError ()
627+ raise NotImplementedError ()
0 commit comments