1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 """
17 Mapper classes
18 """
19
20 import base64
21 import json
22 from datetime import datetime
23 import dateutil.parser
27 for attr, json_attr, _mapper in source:
28 if isinstance(attr, str):
29 if attr not in to_json:
30 to_json[attr] = {
31 'json_attr': json_attr,
32 'mapper': _mapper,
33 }
34 if isinstance(json_attr, str):
35 to_attr[json_attr] = {
36 'attr': attr,
37 'mapper': _mapper,
38 }
39
42
43 @staticmethod
44 - def to_attr(manager_class, attr, do_raise=False):
46
47 @staticmethod
50
53
54 @staticmethod
55 - def to_attr(manager_class, attr, do_raise=False):
57
58 @staticmethod
61
64
65 @staticmethod
66 - def to_attr(manager_class, attr, do_raise=False):
68
69 @staticmethod
72
75
76 @staticmethod
77 - def to_attr(manager_class, attr, do_raise=False):
79
80 @staticmethod
83
86
87 @staticmethod
88 - def to_attr(manager_class, attr, do_raise=False):
89 if attr.lower() == 'true':
90 return True
91 if attr.lower() == 'false':
92 return False
93 return None
94
95 @staticmethod
97 if attr is True:
98 return 'true'
99 if attr is False:
100 return 'false'
101 return None
102
105
106 @staticmethod
107 - def to_attr(manager_class, attr, do_raise=False):
108 return json.loads(attr)
109
110 @staticmethod
112 return json.dumps(attr)
113
116
117 @staticmethod
118 - def to_attr(manager_class, attr, do_raise=False):
119 return base64.b64decode(attr)
120
121 @staticmethod
123 return base64.b64encode(attr)
124
127
128 @staticmethod
129 - def to_attr(manager_class, attr, do_raise=False):
130 try:
131 return dateutil.parser.parse(attr)
132 except:
133 return None
134
135 @staticmethod
137 try:
138 return datetime.isoformat(attr)
139 except:
140 return None
141
144
147
148 - def to_attr(self, manager_class, value, do_raise=False):
149 for obj_value, json_value in self.mapping:
150 if json_value == value:
151 return obj_value
152
153 - def to_json(self, manager_class, value):
154 for obj_value, json_value in self.mapping:
155 if obj_value == value:
156 return json_value
157
160
161 manager_class = None
162
164 self.manager_path = manager_path
165
173
174 - def to_attr(self, manager_class, id, do_raise=False):
179
180 - def to_json(self, manager_class, obj):
185
186
187 -class List(object):
188
189 mapper = None
190
193
194 - def to_attr(self, manager_class, attr, do_raise=False):
196
197 - def to_json(self, manager_class, attr):
199
200
201 -class Dict(object):
202
203 mappers = None
204
210
211 - def to_attr(self, manager_class, attr, do_raise=False):
219
220 - def to_json(self, manager_class, attr):
221 if attr is None:
222 return {}
223 converted = []
224 ret = {}
225 for _attr, _json, mapper in self.mappers:
226 if _attr in attr and _attr not in converted:
227 converted.append(_attr)
228 ret[_json] = mapper.to_json(manager_class, attr[_attr])
229 return ret
230
231
232 Noop = NoopClass()
233 IntStr = IntStrClass()
234 StrInt = StrIntClass()
235 FloatStr = FloatStrClass()
236 BoolStr = BoolStrClass()
237 JSON = JSONClass()
238 DateTime = DateTimeClass()
239