4
4
from bunq .sdk import client
5
5
from bunq .sdk import context
6
6
from bunq .sdk import security
7
+ from bunq .sdk .exception import BunqException
7
8
from bunq .sdk .json import converter
8
9
from bunq .sdk .model import core
9
10
from bunq .sdk .model .generated import endpoint
10
11
from bunq .sdk .model .generated import object_
11
- from bunq .sdk .exception import BunqException
12
12
13
13
14
14
class AnchoredObjectModelAdapter (converter .JsonAdapter ):
15
-
16
15
_ERROR_MODEL_NOT_FOUND = '{} is not in endpoint nor object.'
17
16
17
+ __STRING_FORMAT_UNDERSCORE = '_'
18
+
18
19
_override_field_map = {
19
20
'ScheduledPayment' : 'SchedulePayment' ,
20
21
'ScheduledInstance' : 'ScheduleInstance' ,
21
- }
22
+ }
22
23
23
24
@classmethod
24
25
def deserialize (cls , cls_target , obj_raw ):
@@ -31,17 +32,12 @@ def deserialize(cls, cls_target, obj_raw):
31
32
32
33
model_ = super ()._deserialize_default (cls_target , obj_raw )
33
34
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 ():
35
39
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 )
45
41
contents = super ()._deserialize_default (object_class , obj_raw )
46
42
47
43
if contents .is_all_field_none ():
@@ -62,6 +58,11 @@ def _get_object_class(cls, class_name):
62
58
:rtype: core.BunqModel
63
59
"""
64
60
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
+
65
66
try :
66
67
return getattr (endpoint , class_name )
67
68
except AttributeError :
@@ -486,10 +487,12 @@ def serialize(cls, share_detail):
486
487
"""
487
488
488
489
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 ),
491
494
cls ._FIELD_DRAFT_PAYMENT : converter .serialize (
492
- share_detail .draft_payment
495
+ share_detail ._draft_payment
493
496
),
494
497
}
495
498
@@ -621,4 +624,4 @@ def serialize(cls, pagination):
621
624
622
625
_ = pagination
623
626
624
- raise NotImplementedError ()
627
+ raise NotImplementedError ()
0 commit comments