karrio-tnt 2025.5rc1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- karrio/mappers/tnt/__init__.py +3 -0
- karrio/mappers/tnt/mapper.py +40 -0
- karrio/mappers/tnt/proxy.py +97 -0
- karrio/mappers/tnt/settings.py +22 -0
- karrio/plugins/tnt/__init__.py +24 -0
- karrio/providers/tnt/__init__.py +10 -0
- karrio/providers/tnt/error.py +129 -0
- karrio/providers/tnt/rate.py +184 -0
- karrio/providers/tnt/shipment/__init__.py +4 -0
- karrio/providers/tnt/shipment/create.py +226 -0
- karrio/providers/tnt/tracking.py +71 -0
- karrio/providers/tnt/units.py +166 -0
- karrio/providers/tnt/utils.py +162 -0
- karrio/schemas/tnt/__init__.py +0 -0
- karrio/schemas/tnt/label_common_definitions.py +3499 -0
- karrio/schemas/tnt/label_request.py +4409 -0
- karrio/schemas/tnt/label_response.py +5744 -0
- karrio/schemas/tnt/rating_common_definitions.py +1610 -0
- karrio/schemas/tnt/rating_request.py +2886 -0
- karrio/schemas/tnt/rating_response.py +3077 -0
- karrio/schemas/tnt/shipping_common_definitions.py +1216 -0
- karrio/schemas/tnt/shipping_request.py +6114 -0
- karrio/schemas/tnt/shipping_response.py +3404 -0
- karrio/schemas/tnt/tracking_request.py +2742 -0
- karrio/schemas/tnt/tracking_response.py +3729 -0
- karrio_tnt-2025.5rc1.dist-info/METADATA +44 -0
- karrio_tnt-2025.5rc1.dist-info/RECORD +30 -0
- karrio_tnt-2025.5rc1.dist-info/WHEEL +5 -0
- karrio_tnt-2025.5rc1.dist-info/entry_points.txt +2 -0
- karrio_tnt-2025.5rc1.dist-info/top_level.txt +3 -0
@@ -0,0 +1,2886 @@
|
|
1
|
+
#!/usr/bin/env python
|
2
|
+
# -*- coding: utf-8 -*-
|
3
|
+
|
4
|
+
#
|
5
|
+
# Generated Sun Oct 22 20:42:03 2023 by generateDS.py version 2.43.2.
|
6
|
+
# Python 3.10.12 (main, Jun 11 2023, 05:26:28) [GCC 11.4.0]
|
7
|
+
#
|
8
|
+
# Command line options:
|
9
|
+
# ('--no-namespace-defs', '')
|
10
|
+
# ('-o', './karrio/schemas/tnt/rating_request.py')
|
11
|
+
#
|
12
|
+
# Command line arguments:
|
13
|
+
# ./schemas/rating_request.xsd
|
14
|
+
#
|
15
|
+
# Command line:
|
16
|
+
# /home/kserver/Workspace/karrio/.venv/karrio/bin/generateDS --no-namespace-defs -o "./karrio/schemas/tnt/rating_request.py" ./schemas/rating_request.xsd
|
17
|
+
#
|
18
|
+
# Current working directory (os.getcwd()):
|
19
|
+
# tnt
|
20
|
+
#
|
21
|
+
|
22
|
+
import sys
|
23
|
+
try:
|
24
|
+
ModulenotfoundExp_ = ModuleNotFoundError
|
25
|
+
except NameError:
|
26
|
+
ModulenotfoundExp_ = ImportError
|
27
|
+
from six.moves import zip_longest
|
28
|
+
import os
|
29
|
+
import re as re_
|
30
|
+
import base64
|
31
|
+
import datetime as datetime_
|
32
|
+
import decimal as decimal_
|
33
|
+
from lxml import etree as etree_
|
34
|
+
|
35
|
+
|
36
|
+
Validate_simpletypes_ = True
|
37
|
+
SaveElementTreeNode = True
|
38
|
+
TagNamePrefix = ""
|
39
|
+
if sys.version_info.major == 2:
|
40
|
+
BaseStrType_ = basestring
|
41
|
+
else:
|
42
|
+
BaseStrType_ = str
|
43
|
+
|
44
|
+
|
45
|
+
def parsexml_(infile, parser=None, **kwargs):
|
46
|
+
if parser is None:
|
47
|
+
# Use the lxml ElementTree compatible parser so that, e.g.,
|
48
|
+
# we ignore comments.
|
49
|
+
try:
|
50
|
+
parser = etree_.ETCompatXMLParser()
|
51
|
+
except AttributeError:
|
52
|
+
# fallback to xml.etree
|
53
|
+
parser = etree_.XMLParser()
|
54
|
+
try:
|
55
|
+
if isinstance(infile, os.PathLike):
|
56
|
+
infile = os.path.join(infile)
|
57
|
+
except AttributeError:
|
58
|
+
pass
|
59
|
+
doc = etree_.parse(infile, parser=parser, **kwargs)
|
60
|
+
return doc
|
61
|
+
|
62
|
+
def parsexmlstring_(instring, parser=None, **kwargs):
|
63
|
+
if parser is None:
|
64
|
+
# Use the lxml ElementTree compatible parser so that, e.g.,
|
65
|
+
# we ignore comments.
|
66
|
+
try:
|
67
|
+
parser = etree_.ETCompatXMLParser()
|
68
|
+
except AttributeError:
|
69
|
+
# fallback to xml.etree
|
70
|
+
parser = etree_.XMLParser()
|
71
|
+
element = etree_.fromstring(instring, parser=parser, **kwargs)
|
72
|
+
return element
|
73
|
+
|
74
|
+
#
|
75
|
+
# Namespace prefix definition table (and other attributes, too)
|
76
|
+
#
|
77
|
+
# The module generatedsnamespaces, if it is importable, must contain
|
78
|
+
# a dictionary named GeneratedsNamespaceDefs. This Python dictionary
|
79
|
+
# should map element type names (strings) to XML schema namespace prefix
|
80
|
+
# definitions. The export method for any class for which there is
|
81
|
+
# a namespace prefix definition, will export that definition in the
|
82
|
+
# XML representation of that element. See the export method of
|
83
|
+
# any generated element type class for an example of the use of this
|
84
|
+
# table.
|
85
|
+
# A sample table is:
|
86
|
+
#
|
87
|
+
# # File: generatedsnamespaces.py
|
88
|
+
#
|
89
|
+
# GenerateDSNamespaceDefs = {
|
90
|
+
# "ElementtypeA": "http://www.xxx.com/namespaceA",
|
91
|
+
# "ElementtypeB": "http://www.xxx.com/namespaceB",
|
92
|
+
# }
|
93
|
+
#
|
94
|
+
# Additionally, the generatedsnamespaces module can contain a python
|
95
|
+
# dictionary named GenerateDSNamespaceTypePrefixes that associates element
|
96
|
+
# types with the namespace prefixes that are to be added to the
|
97
|
+
# "xsi:type" attribute value. See the _exportAttributes method of
|
98
|
+
# any generated element type and the generation of "xsi:type" for an
|
99
|
+
# example of the use of this table.
|
100
|
+
# An example table:
|
101
|
+
#
|
102
|
+
# # File: generatedsnamespaces.py
|
103
|
+
#
|
104
|
+
# GenerateDSNamespaceTypePrefixes = {
|
105
|
+
# "ElementtypeC": "aaa:",
|
106
|
+
# "ElementtypeD": "bbb:",
|
107
|
+
# }
|
108
|
+
#
|
109
|
+
|
110
|
+
try:
|
111
|
+
from generatedsnamespaces import GenerateDSNamespaceDefs as GenerateDSNamespaceDefs_
|
112
|
+
except ModulenotfoundExp_ :
|
113
|
+
GenerateDSNamespaceDefs_ = {}
|
114
|
+
try:
|
115
|
+
from generatedsnamespaces import GenerateDSNamespaceTypePrefixes as GenerateDSNamespaceTypePrefixes_
|
116
|
+
except ModulenotfoundExp_ :
|
117
|
+
GenerateDSNamespaceTypePrefixes_ = {}
|
118
|
+
|
119
|
+
#
|
120
|
+
# You can replace the following class definition by defining an
|
121
|
+
# importable module named "generatedscollector" containing a class
|
122
|
+
# named "GdsCollector". See the default class definition below for
|
123
|
+
# clues about the possible content of that class.
|
124
|
+
#
|
125
|
+
try:
|
126
|
+
from generatedscollector import GdsCollector as GdsCollector_
|
127
|
+
except ModulenotfoundExp_ :
|
128
|
+
|
129
|
+
class GdsCollector_(object):
|
130
|
+
|
131
|
+
def __init__(self, messages=None):
|
132
|
+
if messages is None:
|
133
|
+
self.messages = []
|
134
|
+
else:
|
135
|
+
self.messages = messages
|
136
|
+
|
137
|
+
def add_message(self, msg):
|
138
|
+
self.messages.append(msg)
|
139
|
+
|
140
|
+
def get_messages(self):
|
141
|
+
return self.messages
|
142
|
+
|
143
|
+
def clear_messages(self):
|
144
|
+
self.messages = []
|
145
|
+
|
146
|
+
def print_messages(self):
|
147
|
+
for msg in self.messages:
|
148
|
+
print("Warning: {}".format(msg))
|
149
|
+
|
150
|
+
def write_messages(self, outstream):
|
151
|
+
for msg in self.messages:
|
152
|
+
outstream.write("Warning: {}\n".format(msg))
|
153
|
+
|
154
|
+
|
155
|
+
#
|
156
|
+
# The super-class for enum types
|
157
|
+
#
|
158
|
+
|
159
|
+
try:
|
160
|
+
from enum import Enum
|
161
|
+
except ModulenotfoundExp_ :
|
162
|
+
Enum = object
|
163
|
+
|
164
|
+
#
|
165
|
+
# The root super-class for element type classes
|
166
|
+
#
|
167
|
+
# Calls to the methods in these classes are generated by generateDS.py.
|
168
|
+
# You can replace these methods by re-implementing the following class
|
169
|
+
# in a module named generatedssuper.py.
|
170
|
+
|
171
|
+
try:
|
172
|
+
from generatedssuper import GeneratedsSuper
|
173
|
+
except ModulenotfoundExp_ as exp:
|
174
|
+
try:
|
175
|
+
from generatedssupersuper import GeneratedsSuperSuper
|
176
|
+
except ModulenotfoundExp_ as exp:
|
177
|
+
class GeneratedsSuperSuper(object):
|
178
|
+
pass
|
179
|
+
|
180
|
+
class GeneratedsSuper(GeneratedsSuperSuper):
|
181
|
+
__hash__ = object.__hash__
|
182
|
+
tzoff_pattern = re_.compile(r'(\+|-)((0\d|1[0-3]):[0-5]\d|14:00)$')
|
183
|
+
class _FixedOffsetTZ(datetime_.tzinfo):
|
184
|
+
def __init__(self, offset, name):
|
185
|
+
self.__offset = datetime_.timedelta(minutes=offset)
|
186
|
+
self.__name = name
|
187
|
+
def utcoffset(self, dt):
|
188
|
+
return self.__offset
|
189
|
+
def tzname(self, dt):
|
190
|
+
return self.__name
|
191
|
+
def dst(self, dt):
|
192
|
+
return None
|
193
|
+
def __str__(self):
|
194
|
+
settings = {
|
195
|
+
'str_pretty_print': True,
|
196
|
+
'str_indent_level': 0,
|
197
|
+
'str_namespaceprefix': '',
|
198
|
+
'str_name': self.__class__.__name__,
|
199
|
+
'str_namespacedefs': '',
|
200
|
+
}
|
201
|
+
for n in settings:
|
202
|
+
if hasattr(self, n):
|
203
|
+
settings[n] = getattr(self, n)
|
204
|
+
if sys.version_info.major == 2:
|
205
|
+
from StringIO import StringIO
|
206
|
+
else:
|
207
|
+
from io import StringIO
|
208
|
+
output = StringIO()
|
209
|
+
self.export(
|
210
|
+
output,
|
211
|
+
settings['str_indent_level'],
|
212
|
+
pretty_print=settings['str_pretty_print'],
|
213
|
+
namespaceprefix_=settings['str_namespaceprefix'],
|
214
|
+
name_=settings['str_name'],
|
215
|
+
namespacedef_=settings['str_namespacedefs']
|
216
|
+
)
|
217
|
+
strval = output.getvalue()
|
218
|
+
output.close()
|
219
|
+
return strval
|
220
|
+
def gds_format_string(self, input_data, input_name=''):
|
221
|
+
return input_data
|
222
|
+
def gds_parse_string(self, input_data, node=None, input_name=''):
|
223
|
+
return input_data
|
224
|
+
def gds_validate_string(self, input_data, node=None, input_name=''):
|
225
|
+
if not input_data:
|
226
|
+
return ''
|
227
|
+
else:
|
228
|
+
return input_data
|
229
|
+
def gds_format_base64(self, input_data, input_name=''):
|
230
|
+
return base64.b64encode(input_data).decode('ascii')
|
231
|
+
def gds_validate_base64(self, input_data, node=None, input_name=''):
|
232
|
+
return input_data
|
233
|
+
def gds_format_integer(self, input_data, input_name=''):
|
234
|
+
return '%d' % int(input_data)
|
235
|
+
def gds_parse_integer(self, input_data, node=None, input_name=''):
|
236
|
+
try:
|
237
|
+
ival = int(input_data)
|
238
|
+
except (TypeError, ValueError) as exp:
|
239
|
+
raise_parse_error(node, 'Requires integer value: %s' % exp)
|
240
|
+
return ival
|
241
|
+
def gds_validate_integer(self, input_data, node=None, input_name=''):
|
242
|
+
try:
|
243
|
+
value = int(input_data)
|
244
|
+
except (TypeError, ValueError):
|
245
|
+
raise_parse_error(node, 'Requires integer value')
|
246
|
+
return value
|
247
|
+
def gds_format_integer_list(self, input_data, input_name=''):
|
248
|
+
if len(input_data) > 0 and not isinstance(input_data[0], BaseStrType_):
|
249
|
+
input_data = [str(s) for s in input_data]
|
250
|
+
return '%s' % ' '.join(input_data)
|
251
|
+
def gds_validate_integer_list(
|
252
|
+
self, input_data, node=None, input_name=''):
|
253
|
+
values = input_data.split()
|
254
|
+
for value in values:
|
255
|
+
try:
|
256
|
+
int(value)
|
257
|
+
except (TypeError, ValueError):
|
258
|
+
raise_parse_error(node, 'Requires sequence of integer values')
|
259
|
+
return values
|
260
|
+
def gds_format_float(self, input_data, input_name=''):
|
261
|
+
value = ('%.15f' % float(input_data)).rstrip('0')
|
262
|
+
if value.endswith('.'):
|
263
|
+
value += '0'
|
264
|
+
return value
|
265
|
+
|
266
|
+
def gds_parse_float(self, input_data, node=None, input_name=''):
|
267
|
+
try:
|
268
|
+
fval_ = float(input_data)
|
269
|
+
except (TypeError, ValueError) as exp:
|
270
|
+
raise_parse_error(node, 'Requires float or double value: %s' % exp)
|
271
|
+
return fval_
|
272
|
+
def gds_validate_float(self, input_data, node=None, input_name=''):
|
273
|
+
try:
|
274
|
+
value = float(input_data)
|
275
|
+
except (TypeError, ValueError):
|
276
|
+
raise_parse_error(node, 'Requires float value')
|
277
|
+
return value
|
278
|
+
def gds_format_float_list(self, input_data, input_name=''):
|
279
|
+
if len(input_data) > 0 and not isinstance(input_data[0], BaseStrType_):
|
280
|
+
input_data = [str(s) for s in input_data]
|
281
|
+
return '%s' % ' '.join(input_data)
|
282
|
+
def gds_validate_float_list(
|
283
|
+
self, input_data, node=None, input_name=''):
|
284
|
+
values = input_data.split()
|
285
|
+
for value in values:
|
286
|
+
try:
|
287
|
+
float(value)
|
288
|
+
except (TypeError, ValueError):
|
289
|
+
raise_parse_error(node, 'Requires sequence of float values')
|
290
|
+
return values
|
291
|
+
def gds_format_decimal(self, input_data, input_name=''):
|
292
|
+
return_value = '%s' % input_data
|
293
|
+
if '.' in return_value:
|
294
|
+
return_value = return_value.rstrip('0')
|
295
|
+
if return_value.endswith('.'):
|
296
|
+
return_value = return_value.rstrip('.')
|
297
|
+
return return_value
|
298
|
+
def gds_parse_decimal(self, input_data, node=None, input_name=''):
|
299
|
+
try:
|
300
|
+
decimal_value = decimal_.Decimal(input_data)
|
301
|
+
except (TypeError, ValueError):
|
302
|
+
raise_parse_error(node, 'Requires decimal value')
|
303
|
+
return decimal_value
|
304
|
+
def gds_validate_decimal(self, input_data, node=None, input_name=''):
|
305
|
+
try:
|
306
|
+
value = decimal_.Decimal(input_data)
|
307
|
+
except (TypeError, ValueError):
|
308
|
+
raise_parse_error(node, 'Requires decimal value')
|
309
|
+
return value
|
310
|
+
def gds_format_decimal_list(self, input_data, input_name=''):
|
311
|
+
if len(input_data) > 0 and not isinstance(input_data[0], BaseStrType_):
|
312
|
+
input_data = [str(s) for s in input_data]
|
313
|
+
return ' '.join([self.gds_format_decimal(item) for item in input_data])
|
314
|
+
def gds_validate_decimal_list(
|
315
|
+
self, input_data, node=None, input_name=''):
|
316
|
+
values = input_data.split()
|
317
|
+
for value in values:
|
318
|
+
try:
|
319
|
+
decimal_.Decimal(value)
|
320
|
+
except (TypeError, ValueError):
|
321
|
+
raise_parse_error(node, 'Requires sequence of decimal values')
|
322
|
+
return values
|
323
|
+
def gds_format_double(self, input_data, input_name=''):
|
324
|
+
return '%s' % input_data
|
325
|
+
def gds_parse_double(self, input_data, node=None, input_name=''):
|
326
|
+
try:
|
327
|
+
fval_ = float(input_data)
|
328
|
+
except (TypeError, ValueError) as exp:
|
329
|
+
raise_parse_error(node, 'Requires double or float value: %s' % exp)
|
330
|
+
return fval_
|
331
|
+
def gds_validate_double(self, input_data, node=None, input_name=''):
|
332
|
+
try:
|
333
|
+
value = float(input_data)
|
334
|
+
except (TypeError, ValueError):
|
335
|
+
raise_parse_error(node, 'Requires double or float value')
|
336
|
+
return value
|
337
|
+
def gds_format_double_list(self, input_data, input_name=''):
|
338
|
+
if len(input_data) > 0 and not isinstance(input_data[0], BaseStrType_):
|
339
|
+
input_data = [str(s) for s in input_data]
|
340
|
+
return '%s' % ' '.join(input_data)
|
341
|
+
def gds_validate_double_list(
|
342
|
+
self, input_data, node=None, input_name=''):
|
343
|
+
values = input_data.split()
|
344
|
+
for value in values:
|
345
|
+
try:
|
346
|
+
float(value)
|
347
|
+
except (TypeError, ValueError):
|
348
|
+
raise_parse_error(
|
349
|
+
node, 'Requires sequence of double or float values')
|
350
|
+
return values
|
351
|
+
def gds_format_boolean(self, input_data, input_name=''):
|
352
|
+
return ('%s' % input_data).lower()
|
353
|
+
def gds_parse_boolean(self, input_data, node=None, input_name=''):
|
354
|
+
input_data = input_data.strip()
|
355
|
+
if input_data in ('true', '1'):
|
356
|
+
bval = True
|
357
|
+
elif input_data in ('false', '0'):
|
358
|
+
bval = False
|
359
|
+
else:
|
360
|
+
raise_parse_error(node, 'Requires boolean value')
|
361
|
+
return bval
|
362
|
+
def gds_validate_boolean(self, input_data, node=None, input_name=''):
|
363
|
+
if input_data not in (True, 1, False, 0, ):
|
364
|
+
raise_parse_error(
|
365
|
+
node,
|
366
|
+
'Requires boolean value '
|
367
|
+
'(one of True, 1, False, 0)')
|
368
|
+
return input_data
|
369
|
+
def gds_format_boolean_list(self, input_data, input_name=''):
|
370
|
+
if len(input_data) > 0 and not isinstance(input_data[0], BaseStrType_):
|
371
|
+
input_data = [str(s) for s in input_data]
|
372
|
+
return '%s' % ' '.join(input_data)
|
373
|
+
def gds_validate_boolean_list(
|
374
|
+
self, input_data, node=None, input_name=''):
|
375
|
+
values = input_data.split()
|
376
|
+
for value in values:
|
377
|
+
value = self.gds_parse_boolean(value, node, input_name)
|
378
|
+
if value not in (True, 1, False, 0, ):
|
379
|
+
raise_parse_error(
|
380
|
+
node,
|
381
|
+
'Requires sequence of boolean values '
|
382
|
+
'(one of True, 1, False, 0)')
|
383
|
+
return values
|
384
|
+
def gds_validate_datetime(self, input_data, node=None, input_name=''):
|
385
|
+
return input_data
|
386
|
+
def gds_format_datetime(self, input_data, input_name=''):
|
387
|
+
if input_data.microsecond == 0:
|
388
|
+
_svalue = '%04d-%02d-%02dT%02d:%02d:%02d' % (
|
389
|
+
input_data.year,
|
390
|
+
input_data.month,
|
391
|
+
input_data.day,
|
392
|
+
input_data.hour,
|
393
|
+
input_data.minute,
|
394
|
+
input_data.second,
|
395
|
+
)
|
396
|
+
else:
|
397
|
+
_svalue = '%04d-%02d-%02dT%02d:%02d:%02d.%s' % (
|
398
|
+
input_data.year,
|
399
|
+
input_data.month,
|
400
|
+
input_data.day,
|
401
|
+
input_data.hour,
|
402
|
+
input_data.minute,
|
403
|
+
input_data.second,
|
404
|
+
('%f' % (float(input_data.microsecond) / 1000000))[2:],
|
405
|
+
)
|
406
|
+
if input_data.tzinfo is not None:
|
407
|
+
tzoff = input_data.tzinfo.utcoffset(input_data)
|
408
|
+
if tzoff is not None:
|
409
|
+
total_seconds = tzoff.seconds + (86400 * tzoff.days)
|
410
|
+
if total_seconds == 0:
|
411
|
+
_svalue += 'Z'
|
412
|
+
else:
|
413
|
+
if total_seconds < 0:
|
414
|
+
_svalue += '-'
|
415
|
+
total_seconds *= -1
|
416
|
+
else:
|
417
|
+
_svalue += '+'
|
418
|
+
hours = total_seconds // 3600
|
419
|
+
minutes = (total_seconds - (hours * 3600)) // 60
|
420
|
+
_svalue += '{0:02d}:{1:02d}'.format(hours, minutes)
|
421
|
+
return _svalue
|
422
|
+
@classmethod
|
423
|
+
def gds_parse_datetime(cls, input_data):
|
424
|
+
tz = None
|
425
|
+
if input_data[-1] == 'Z':
|
426
|
+
tz = GeneratedsSuper._FixedOffsetTZ(0, 'UTC')
|
427
|
+
input_data = input_data[:-1]
|
428
|
+
else:
|
429
|
+
results = GeneratedsSuper.tzoff_pattern.search(input_data)
|
430
|
+
if results is not None:
|
431
|
+
tzoff_parts = results.group(2).split(':')
|
432
|
+
tzoff = int(tzoff_parts[0]) * 60 + int(tzoff_parts[1])
|
433
|
+
if results.group(1) == '-':
|
434
|
+
tzoff *= -1
|
435
|
+
tz = GeneratedsSuper._FixedOffsetTZ(
|
436
|
+
tzoff, results.group(0))
|
437
|
+
input_data = input_data[:-6]
|
438
|
+
time_parts = input_data.split('.')
|
439
|
+
if len(time_parts) > 1:
|
440
|
+
micro_seconds = int(float('0.' + time_parts[1]) * 1000000)
|
441
|
+
input_data = '%s.%s' % (
|
442
|
+
time_parts[0], "{}".format(micro_seconds).rjust(6, "0"), )
|
443
|
+
dt = datetime_.datetime.strptime(
|
444
|
+
input_data, '%Y-%m-%dT%H:%M:%S.%f')
|
445
|
+
else:
|
446
|
+
dt = datetime_.datetime.strptime(
|
447
|
+
input_data, '%Y-%m-%dT%H:%M:%S')
|
448
|
+
dt = dt.replace(tzinfo=tz)
|
449
|
+
return dt
|
450
|
+
def gds_validate_date(self, input_data, node=None, input_name=''):
|
451
|
+
return input_data
|
452
|
+
def gds_format_date(self, input_data, input_name=''):
|
453
|
+
_svalue = '%04d-%02d-%02d' % (
|
454
|
+
input_data.year,
|
455
|
+
input_data.month,
|
456
|
+
input_data.day,
|
457
|
+
)
|
458
|
+
try:
|
459
|
+
if input_data.tzinfo is not None:
|
460
|
+
tzoff = input_data.tzinfo.utcoffset(input_data)
|
461
|
+
if tzoff is not None:
|
462
|
+
total_seconds = tzoff.seconds + (86400 * tzoff.days)
|
463
|
+
if total_seconds == 0:
|
464
|
+
_svalue += 'Z'
|
465
|
+
else:
|
466
|
+
if total_seconds < 0:
|
467
|
+
_svalue += '-'
|
468
|
+
total_seconds *= -1
|
469
|
+
else:
|
470
|
+
_svalue += '+'
|
471
|
+
hours = total_seconds // 3600
|
472
|
+
minutes = (total_seconds - (hours * 3600)) // 60
|
473
|
+
_svalue += '{0:02d}:{1:02d}'.format(
|
474
|
+
hours, minutes)
|
475
|
+
except AttributeError:
|
476
|
+
pass
|
477
|
+
return _svalue
|
478
|
+
@classmethod
|
479
|
+
def gds_parse_date(cls, input_data):
|
480
|
+
tz = None
|
481
|
+
if input_data[-1] == 'Z':
|
482
|
+
tz = GeneratedsSuper._FixedOffsetTZ(0, 'UTC')
|
483
|
+
input_data = input_data[:-1]
|
484
|
+
else:
|
485
|
+
results = GeneratedsSuper.tzoff_pattern.search(input_data)
|
486
|
+
if results is not None:
|
487
|
+
tzoff_parts = results.group(2).split(':')
|
488
|
+
tzoff = int(tzoff_parts[0]) * 60 + int(tzoff_parts[1])
|
489
|
+
if results.group(1) == '-':
|
490
|
+
tzoff *= -1
|
491
|
+
tz = GeneratedsSuper._FixedOffsetTZ(
|
492
|
+
tzoff, results.group(0))
|
493
|
+
input_data = input_data[:-6]
|
494
|
+
dt = datetime_.datetime.strptime(input_data, '%Y-%m-%d')
|
495
|
+
dt = dt.replace(tzinfo=tz)
|
496
|
+
return dt.date()
|
497
|
+
def gds_validate_time(self, input_data, node=None, input_name=''):
|
498
|
+
return input_data
|
499
|
+
def gds_format_time(self, input_data, input_name=''):
|
500
|
+
if input_data.microsecond == 0:
|
501
|
+
_svalue = '%02d:%02d:%02d' % (
|
502
|
+
input_data.hour,
|
503
|
+
input_data.minute,
|
504
|
+
input_data.second,
|
505
|
+
)
|
506
|
+
else:
|
507
|
+
_svalue = '%02d:%02d:%02d.%s' % (
|
508
|
+
input_data.hour,
|
509
|
+
input_data.minute,
|
510
|
+
input_data.second,
|
511
|
+
('%f' % (float(input_data.microsecond) / 1000000))[2:],
|
512
|
+
)
|
513
|
+
if input_data.tzinfo is not None:
|
514
|
+
tzoff = input_data.tzinfo.utcoffset(input_data)
|
515
|
+
if tzoff is not None:
|
516
|
+
total_seconds = tzoff.seconds + (86400 * tzoff.days)
|
517
|
+
if total_seconds == 0:
|
518
|
+
_svalue += 'Z'
|
519
|
+
else:
|
520
|
+
if total_seconds < 0:
|
521
|
+
_svalue += '-'
|
522
|
+
total_seconds *= -1
|
523
|
+
else:
|
524
|
+
_svalue += '+'
|
525
|
+
hours = total_seconds // 3600
|
526
|
+
minutes = (total_seconds - (hours * 3600)) // 60
|
527
|
+
_svalue += '{0:02d}:{1:02d}'.format(hours, minutes)
|
528
|
+
return _svalue
|
529
|
+
def gds_validate_simple_patterns(self, patterns, target):
|
530
|
+
# pat is a list of lists of strings/patterns.
|
531
|
+
# The target value must match at least one of the patterns
|
532
|
+
# in order for the test to succeed.
|
533
|
+
found1 = True
|
534
|
+
target = str(target)
|
535
|
+
for patterns1 in patterns:
|
536
|
+
found2 = False
|
537
|
+
for patterns2 in patterns1:
|
538
|
+
mo = re_.search(patterns2, target)
|
539
|
+
if mo is not None and len(mo.group(0)) == len(target):
|
540
|
+
found2 = True
|
541
|
+
break
|
542
|
+
if not found2:
|
543
|
+
found1 = False
|
544
|
+
break
|
545
|
+
return found1
|
546
|
+
@classmethod
|
547
|
+
def gds_parse_time(cls, input_data):
|
548
|
+
tz = None
|
549
|
+
if input_data[-1] == 'Z':
|
550
|
+
tz = GeneratedsSuper._FixedOffsetTZ(0, 'UTC')
|
551
|
+
input_data = input_data[:-1]
|
552
|
+
else:
|
553
|
+
results = GeneratedsSuper.tzoff_pattern.search(input_data)
|
554
|
+
if results is not None:
|
555
|
+
tzoff_parts = results.group(2).split(':')
|
556
|
+
tzoff = int(tzoff_parts[0]) * 60 + int(tzoff_parts[1])
|
557
|
+
if results.group(1) == '-':
|
558
|
+
tzoff *= -1
|
559
|
+
tz = GeneratedsSuper._FixedOffsetTZ(
|
560
|
+
tzoff, results.group(0))
|
561
|
+
input_data = input_data[:-6]
|
562
|
+
if len(input_data.split('.')) > 1:
|
563
|
+
dt = datetime_.datetime.strptime(input_data, '%H:%M:%S.%f')
|
564
|
+
else:
|
565
|
+
dt = datetime_.datetime.strptime(input_data, '%H:%M:%S')
|
566
|
+
dt = dt.replace(tzinfo=tz)
|
567
|
+
return dt.time()
|
568
|
+
def gds_check_cardinality_(
|
569
|
+
self, value, input_name,
|
570
|
+
min_occurs=0, max_occurs=1, required=None):
|
571
|
+
if value is None:
|
572
|
+
length = 0
|
573
|
+
elif isinstance(value, list):
|
574
|
+
length = len(value)
|
575
|
+
else:
|
576
|
+
length = 1
|
577
|
+
if required is not None :
|
578
|
+
if required and length < 1:
|
579
|
+
self.gds_collector_.add_message(
|
580
|
+
"Required value {}{} is missing".format(
|
581
|
+
input_name, self.gds_get_node_lineno_()))
|
582
|
+
if length < min_occurs:
|
583
|
+
self.gds_collector_.add_message(
|
584
|
+
"Number of values for {}{} is below "
|
585
|
+
"the minimum allowed, "
|
586
|
+
"expected at least {}, found {}".format(
|
587
|
+
input_name, self.gds_get_node_lineno_(),
|
588
|
+
min_occurs, length))
|
589
|
+
elif length > max_occurs:
|
590
|
+
self.gds_collector_.add_message(
|
591
|
+
"Number of values for {}{} is above "
|
592
|
+
"the maximum allowed, "
|
593
|
+
"expected at most {}, found {}".format(
|
594
|
+
input_name, self.gds_get_node_lineno_(),
|
595
|
+
max_occurs, length))
|
596
|
+
def gds_validate_builtin_ST_(
|
597
|
+
self, validator, value, input_name,
|
598
|
+
min_occurs=None, max_occurs=None, required=None):
|
599
|
+
if value is not None:
|
600
|
+
try:
|
601
|
+
validator(value, input_name=input_name)
|
602
|
+
except GDSParseError as parse_error:
|
603
|
+
self.gds_collector_.add_message(str(parse_error))
|
604
|
+
def gds_validate_defined_ST_(
|
605
|
+
self, validator, value, input_name,
|
606
|
+
min_occurs=None, max_occurs=None, required=None):
|
607
|
+
if value is not None:
|
608
|
+
try:
|
609
|
+
validator(value)
|
610
|
+
except GDSParseError as parse_error:
|
611
|
+
self.gds_collector_.add_message(str(parse_error))
|
612
|
+
def gds_str_lower(self, instring):
|
613
|
+
return instring.lower()
|
614
|
+
def get_path_(self, node):
|
615
|
+
path_list = []
|
616
|
+
self.get_path_list_(node, path_list)
|
617
|
+
path_list.reverse()
|
618
|
+
path = '/'.join(path_list)
|
619
|
+
return path
|
620
|
+
Tag_strip_pattern_ = re_.compile(r'\{.*\}')
|
621
|
+
def get_path_list_(self, node, path_list):
|
622
|
+
if node is None:
|
623
|
+
return
|
624
|
+
tag = GeneratedsSuper.Tag_strip_pattern_.sub('', node.tag)
|
625
|
+
if tag:
|
626
|
+
path_list.append(tag)
|
627
|
+
self.get_path_list_(node.getparent(), path_list)
|
628
|
+
def get_class_obj_(self, node, default_class=None):
|
629
|
+
class_obj1 = default_class
|
630
|
+
if 'xsi' in node.nsmap:
|
631
|
+
classname = node.get('{%s}type' % node.nsmap['xsi'])
|
632
|
+
if classname is not None:
|
633
|
+
names = classname.split(':')
|
634
|
+
if len(names) == 2:
|
635
|
+
classname = names[1]
|
636
|
+
class_obj2 = globals().get(classname)
|
637
|
+
if class_obj2 is not None:
|
638
|
+
class_obj1 = class_obj2
|
639
|
+
return class_obj1
|
640
|
+
def gds_build_any(self, node, type_name=None):
|
641
|
+
# provide default value in case option --disable-xml is used.
|
642
|
+
content = ""
|
643
|
+
content = etree_.tostring(node, encoding="unicode")
|
644
|
+
return content
|
645
|
+
@classmethod
|
646
|
+
def gds_reverse_node_mapping(cls, mapping):
|
647
|
+
return dict(((v, k) for k, v in mapping.items()))
|
648
|
+
@staticmethod
|
649
|
+
def gds_encode(instring):
|
650
|
+
if sys.version_info.major == 2:
|
651
|
+
if ExternalEncoding:
|
652
|
+
encoding = ExternalEncoding
|
653
|
+
else:
|
654
|
+
encoding = 'utf-8'
|
655
|
+
return instring.encode(encoding)
|
656
|
+
else:
|
657
|
+
return instring
|
658
|
+
@staticmethod
|
659
|
+
def convert_unicode(instring):
|
660
|
+
if isinstance(instring, str):
|
661
|
+
result = quote_xml(instring)
|
662
|
+
elif sys.version_info.major == 2 and isinstance(instring, unicode):
|
663
|
+
result = quote_xml(instring).encode('utf8')
|
664
|
+
else:
|
665
|
+
result = GeneratedsSuper.gds_encode(str(instring))
|
666
|
+
return result
|
667
|
+
def __eq__(self, other):
|
668
|
+
def excl_select_objs_(obj):
|
669
|
+
return (obj[0] != 'parent_object_' and
|
670
|
+
obj[0] != 'gds_collector_')
|
671
|
+
if type(self) != type(other):
|
672
|
+
return False
|
673
|
+
return all(x == y for x, y in zip_longest(
|
674
|
+
filter(excl_select_objs_, self.__dict__.items()),
|
675
|
+
filter(excl_select_objs_, other.__dict__.items())))
|
676
|
+
def __ne__(self, other):
|
677
|
+
return not self.__eq__(other)
|
678
|
+
# Django ETL transform hooks.
|
679
|
+
def gds_djo_etl_transform(self):
|
680
|
+
pass
|
681
|
+
def gds_djo_etl_transform_db_obj(self, dbobj):
|
682
|
+
pass
|
683
|
+
# SQLAlchemy ETL transform hooks.
|
684
|
+
def gds_sqa_etl_transform(self):
|
685
|
+
return 0, None
|
686
|
+
def gds_sqa_etl_transform_db_obj(self, dbobj):
|
687
|
+
pass
|
688
|
+
def gds_get_node_lineno_(self):
|
689
|
+
if (hasattr(self, "gds_elementtree_node_") and
|
690
|
+
self.gds_elementtree_node_ is not None):
|
691
|
+
return ' near line {}'.format(
|
692
|
+
self.gds_elementtree_node_.sourceline)
|
693
|
+
else:
|
694
|
+
return ""
|
695
|
+
|
696
|
+
|
697
|
+
def getSubclassFromModule_(module, class_):
|
698
|
+
'''Get the subclass of a class from a specific module.'''
|
699
|
+
name = class_.__name__ + 'Sub'
|
700
|
+
if hasattr(module, name):
|
701
|
+
return getattr(module, name)
|
702
|
+
else:
|
703
|
+
return None
|
704
|
+
|
705
|
+
|
706
|
+
#
|
707
|
+
# If you have installed IPython you can uncomment and use the following.
|
708
|
+
# IPython is available from http://ipython.scipy.org/.
|
709
|
+
#
|
710
|
+
|
711
|
+
## from IPython.Shell import IPShellEmbed
|
712
|
+
## args = ''
|
713
|
+
## ipshell = IPShellEmbed(args,
|
714
|
+
## banner = 'Dropping into IPython',
|
715
|
+
## exit_msg = 'Leaving Interpreter, back to program.')
|
716
|
+
|
717
|
+
# Then use the following line where and when you want to drop into the
|
718
|
+
# IPython shell:
|
719
|
+
# ipshell('<some message> -- Entering ipshell.\nHit Ctrl-D to exit')
|
720
|
+
|
721
|
+
#
|
722
|
+
# Globals
|
723
|
+
#
|
724
|
+
|
725
|
+
ExternalEncoding = ''
|
726
|
+
# Set this to false in order to deactivate during export, the use of
|
727
|
+
# name space prefixes captured from the input document.
|
728
|
+
UseCapturedNS_ = True
|
729
|
+
CapturedNsmap_ = {}
|
730
|
+
Tag_pattern_ = re_.compile(r'({.*})?(.*)')
|
731
|
+
String_cleanup_pat_ = re_.compile(r"[\n\r\s]+")
|
732
|
+
Namespace_extract_pat_ = re_.compile(r'{(.*)}(.*)')
|
733
|
+
CDATA_pattern_ = re_.compile(r"<!\[CDATA\[.*?\]\]>", re_.DOTALL)
|
734
|
+
|
735
|
+
# Change this to redirect the generated superclass module to use a
|
736
|
+
# specific subclass module.
|
737
|
+
CurrentSubclassModule_ = None
|
738
|
+
|
739
|
+
#
|
740
|
+
# Support/utility functions.
|
741
|
+
#
|
742
|
+
|
743
|
+
|
744
|
+
def showIndent(outfile, level, pretty_print=True):
|
745
|
+
if pretty_print:
|
746
|
+
for idx in range(level):
|
747
|
+
outfile.write(' ')
|
748
|
+
|
749
|
+
|
750
|
+
def quote_xml(inStr):
|
751
|
+
"Escape markup chars, but do not modify CDATA sections."
|
752
|
+
if not inStr:
|
753
|
+
return ''
|
754
|
+
s1 = (isinstance(inStr, BaseStrType_) and inStr or '%s' % inStr)
|
755
|
+
s2 = ''
|
756
|
+
pos = 0
|
757
|
+
matchobjects = CDATA_pattern_.finditer(s1)
|
758
|
+
for mo in matchobjects:
|
759
|
+
s3 = s1[pos:mo.start()]
|
760
|
+
s2 += quote_xml_aux(s3)
|
761
|
+
s2 += s1[mo.start():mo.end()]
|
762
|
+
pos = mo.end()
|
763
|
+
s3 = s1[pos:]
|
764
|
+
s2 += quote_xml_aux(s3)
|
765
|
+
return s2
|
766
|
+
|
767
|
+
|
768
|
+
def quote_xml_aux(inStr):
|
769
|
+
s1 = inStr.replace('&', '&')
|
770
|
+
s1 = s1.replace('<', '<')
|
771
|
+
s1 = s1.replace('>', '>')
|
772
|
+
return s1
|
773
|
+
|
774
|
+
|
775
|
+
def quote_attrib(inStr):
|
776
|
+
s1 = (isinstance(inStr, BaseStrType_) and inStr or '%s' % inStr)
|
777
|
+
s1 = s1.replace('&', '&')
|
778
|
+
s1 = s1.replace('<', '<')
|
779
|
+
s1 = s1.replace('>', '>')
|
780
|
+
s1 = s1.replace('\n', ' ')
|
781
|
+
if '"' in s1:
|
782
|
+
if "'" in s1:
|
783
|
+
s1 = '"%s"' % s1.replace('"', """)
|
784
|
+
else:
|
785
|
+
s1 = "'%s'" % s1
|
786
|
+
else:
|
787
|
+
s1 = '"%s"' % s1
|
788
|
+
return s1
|
789
|
+
|
790
|
+
|
791
|
+
def quote_python(inStr):
|
792
|
+
s1 = inStr
|
793
|
+
if s1.find("'") == -1:
|
794
|
+
if s1.find('\n') == -1:
|
795
|
+
return "'%s'" % s1
|
796
|
+
else:
|
797
|
+
return "'''%s'''" % s1
|
798
|
+
else:
|
799
|
+
if s1.find('"') != -1:
|
800
|
+
s1 = s1.replace('"', '\\"')
|
801
|
+
if s1.find('\n') == -1:
|
802
|
+
return '"%s"' % s1
|
803
|
+
else:
|
804
|
+
return '"""%s"""' % s1
|
805
|
+
|
806
|
+
|
807
|
+
def get_all_text_(node):
|
808
|
+
if node.text is not None:
|
809
|
+
text = node.text
|
810
|
+
else:
|
811
|
+
text = ''
|
812
|
+
for child in node:
|
813
|
+
if child.tail is not None:
|
814
|
+
text += child.tail
|
815
|
+
return text
|
816
|
+
|
817
|
+
|
818
|
+
def find_attr_value_(attr_name, node):
|
819
|
+
attrs = node.attrib
|
820
|
+
attr_parts = attr_name.split(':')
|
821
|
+
value = None
|
822
|
+
if len(attr_parts) == 1:
|
823
|
+
value = attrs.get(attr_name)
|
824
|
+
elif len(attr_parts) == 2:
|
825
|
+
prefix, name = attr_parts
|
826
|
+
if prefix == 'xml':
|
827
|
+
namespace = 'http://www.w3.org/XML/1998/namespace'
|
828
|
+
else:
|
829
|
+
namespace = node.nsmap.get(prefix)
|
830
|
+
if namespace is not None:
|
831
|
+
value = attrs.get('{%s}%s' % (namespace, name, ))
|
832
|
+
return value
|
833
|
+
|
834
|
+
|
835
|
+
def encode_str_2_3(instr):
|
836
|
+
return instr
|
837
|
+
|
838
|
+
|
839
|
+
class GDSParseError(Exception):
|
840
|
+
pass
|
841
|
+
|
842
|
+
|
843
|
+
def raise_parse_error(node, msg):
|
844
|
+
if node is not None:
|
845
|
+
msg = '%s (element %s/line %d)' % (msg, node.tag, node.sourceline, )
|
846
|
+
raise GDSParseError(msg)
|
847
|
+
|
848
|
+
|
849
|
+
class MixedContainer:
|
850
|
+
# Constants for category:
|
851
|
+
CategoryNone = 0
|
852
|
+
CategoryText = 1
|
853
|
+
CategorySimple = 2
|
854
|
+
CategoryComplex = 3
|
855
|
+
# Constants for content_type:
|
856
|
+
TypeNone = 0
|
857
|
+
TypeText = 1
|
858
|
+
TypeString = 2
|
859
|
+
TypeInteger = 3
|
860
|
+
TypeFloat = 4
|
861
|
+
TypeDecimal = 5
|
862
|
+
TypeDouble = 6
|
863
|
+
TypeBoolean = 7
|
864
|
+
TypeBase64 = 8
|
865
|
+
def __init__(self, category, content_type, name, value):
|
866
|
+
self.category = category
|
867
|
+
self.content_type = content_type
|
868
|
+
self.name = name
|
869
|
+
self.value = value
|
870
|
+
def getCategory(self):
|
871
|
+
return self.category
|
872
|
+
def getContenttype(self, content_type):
|
873
|
+
return self.content_type
|
874
|
+
def getValue(self):
|
875
|
+
return self.value
|
876
|
+
def getName(self):
|
877
|
+
return self.name
|
878
|
+
def export(self, outfile, level, name, namespace,
|
879
|
+
pretty_print=True):
|
880
|
+
if self.category == MixedContainer.CategoryText:
|
881
|
+
# Prevent exporting empty content as empty lines.
|
882
|
+
if self.value.strip():
|
883
|
+
outfile.write(self.value)
|
884
|
+
elif self.category == MixedContainer.CategorySimple:
|
885
|
+
self.exportSimple(outfile, level, name)
|
886
|
+
else: # category == MixedContainer.CategoryComplex
|
887
|
+
self.value.export(
|
888
|
+
outfile, level, namespace, name_=name,
|
889
|
+
pretty_print=pretty_print)
|
890
|
+
def exportSimple(self, outfile, level, name):
|
891
|
+
if self.content_type == MixedContainer.TypeString:
|
892
|
+
outfile.write('<%s>%s</%s>' % (
|
893
|
+
self.name, self.value, self.name))
|
894
|
+
elif self.content_type == MixedContainer.TypeInteger or \
|
895
|
+
self.content_type == MixedContainer.TypeBoolean:
|
896
|
+
outfile.write('<%s>%d</%s>' % (
|
897
|
+
self.name, self.value, self.name))
|
898
|
+
elif self.content_type == MixedContainer.TypeFloat or \
|
899
|
+
self.content_type == MixedContainer.TypeDecimal:
|
900
|
+
outfile.write('<%s>%f</%s>' % (
|
901
|
+
self.name, self.value, self.name))
|
902
|
+
elif self.content_type == MixedContainer.TypeDouble:
|
903
|
+
outfile.write('<%s>%g</%s>' % (
|
904
|
+
self.name, self.value, self.name))
|
905
|
+
elif self.content_type == MixedContainer.TypeBase64:
|
906
|
+
outfile.write('<%s>%s</%s>' % (
|
907
|
+
self.name,
|
908
|
+
base64.b64encode(self.value),
|
909
|
+
self.name))
|
910
|
+
def to_etree(self, element, mapping_=None, reverse_mapping_=None, nsmap_=None):
|
911
|
+
if self.category == MixedContainer.CategoryText:
|
912
|
+
# Prevent exporting empty content as empty lines.
|
913
|
+
if self.value.strip():
|
914
|
+
if len(element) > 0:
|
915
|
+
if element[-1].tail is None:
|
916
|
+
element[-1].tail = self.value
|
917
|
+
else:
|
918
|
+
element[-1].tail += self.value
|
919
|
+
else:
|
920
|
+
if element.text is None:
|
921
|
+
element.text = self.value
|
922
|
+
else:
|
923
|
+
element.text += self.value
|
924
|
+
elif self.category == MixedContainer.CategorySimple:
|
925
|
+
subelement = etree_.SubElement(
|
926
|
+
element, '%s' % self.name)
|
927
|
+
subelement.text = self.to_etree_simple()
|
928
|
+
else: # category == MixedContainer.CategoryComplex
|
929
|
+
self.value.to_etree(element)
|
930
|
+
def to_etree_simple(self, mapping_=None, reverse_mapping_=None, nsmap_=None):
|
931
|
+
if self.content_type == MixedContainer.TypeString:
|
932
|
+
text = self.value
|
933
|
+
elif (self.content_type == MixedContainer.TypeInteger or
|
934
|
+
self.content_type == MixedContainer.TypeBoolean):
|
935
|
+
text = '%d' % self.value
|
936
|
+
elif (self.content_type == MixedContainer.TypeFloat or
|
937
|
+
self.content_type == MixedContainer.TypeDecimal):
|
938
|
+
text = '%f' % self.value
|
939
|
+
elif self.content_type == MixedContainer.TypeDouble:
|
940
|
+
text = '%g' % self.value
|
941
|
+
elif self.content_type == MixedContainer.TypeBase64:
|
942
|
+
text = '%s' % base64.b64encode(self.value)
|
943
|
+
return text
|
944
|
+
def exportLiteral(self, outfile, level, name):
|
945
|
+
if self.category == MixedContainer.CategoryText:
|
946
|
+
showIndent(outfile, level)
|
947
|
+
outfile.write(
|
948
|
+
'model_.MixedContainer(%d, %d, "%s", "%s"),\n' % (
|
949
|
+
self.category, self.content_type,
|
950
|
+
self.name, self.value))
|
951
|
+
elif self.category == MixedContainer.CategorySimple:
|
952
|
+
showIndent(outfile, level)
|
953
|
+
outfile.write(
|
954
|
+
'model_.MixedContainer(%d, %d, "%s", "%s"),\n' % (
|
955
|
+
self.category, self.content_type,
|
956
|
+
self.name, self.value))
|
957
|
+
else: # category == MixedContainer.CategoryComplex
|
958
|
+
showIndent(outfile, level)
|
959
|
+
outfile.write(
|
960
|
+
'model_.MixedContainer(%d, %d, "%s",\n' % (
|
961
|
+
self.category, self.content_type, self.name,))
|
962
|
+
self.value.exportLiteral(outfile, level + 1)
|
963
|
+
showIndent(outfile, level)
|
964
|
+
outfile.write(')\n')
|
965
|
+
|
966
|
+
|
967
|
+
class MemberSpec_(object):
|
968
|
+
def __init__(self, name='', data_type='', container=0,
|
969
|
+
optional=0, child_attrs=None, choice=None):
|
970
|
+
self.name = name
|
971
|
+
self.data_type = data_type
|
972
|
+
self.container = container
|
973
|
+
self.child_attrs = child_attrs
|
974
|
+
self.choice = choice
|
975
|
+
self.optional = optional
|
976
|
+
def set_name(self, name): self.name = name
|
977
|
+
def get_name(self): return self.name
|
978
|
+
def set_data_type(self, data_type): self.data_type = data_type
|
979
|
+
def get_data_type_chain(self): return self.data_type
|
980
|
+
def get_data_type(self):
|
981
|
+
if isinstance(self.data_type, list):
|
982
|
+
if len(self.data_type) > 0:
|
983
|
+
return self.data_type[-1]
|
984
|
+
else:
|
985
|
+
return 'xs:string'
|
986
|
+
else:
|
987
|
+
return self.data_type
|
988
|
+
def set_container(self, container): self.container = container
|
989
|
+
def get_container(self): return self.container
|
990
|
+
def set_child_attrs(self, child_attrs): self.child_attrs = child_attrs
|
991
|
+
def get_child_attrs(self): return self.child_attrs
|
992
|
+
def set_choice(self, choice): self.choice = choice
|
993
|
+
def get_choice(self): return self.choice
|
994
|
+
def set_optional(self, optional): self.optional = optional
|
995
|
+
def get_optional(self): return self.optional
|
996
|
+
|
997
|
+
|
998
|
+
def _cast(typ, value):
|
999
|
+
if typ is None or value is None:
|
1000
|
+
return value
|
1001
|
+
return typ(value)
|
1002
|
+
|
1003
|
+
|
1004
|
+
#
|
1005
|
+
# Start enum classes
|
1006
|
+
#
|
1007
|
+
#
|
1008
|
+
# Start data representation classes
|
1009
|
+
#
|
1010
|
+
class priceRequest(GeneratedsSuper):
|
1011
|
+
"""priceRequest -- PriceRequest input XSD. Version 3.0
|
1012
|
+
appId -- This is the application ID and should be set to
|
1013
|
+
‘
|
1014
|
+
PC
|
1015
|
+
’
|
1016
|
+
.
|
1017
|
+
appVersion -- This denotes the version of ExpressConnect Pricing that
|
1018
|
+
will be used. If a value of 3.0 is supplied then the new interface
|
1019
|
+
functionality will be evoked If no appVersion is supplied it will be
|
1020
|
+
assume that the existing interface is used. Only 3.0 will be considered
|
1021
|
+
valid, if any other value is supplied then an error will be returned..
|
1022
|
+
|
1023
|
+
"""
|
1024
|
+
__hash__ = GeneratedsSuper.__hash__
|
1025
|
+
subclass = None
|
1026
|
+
superclass = None
|
1027
|
+
def __init__(self, appId=None, appVersion=None, priceCheck=None, gds_collector_=None, **kwargs_):
|
1028
|
+
self.gds_collector_ = gds_collector_
|
1029
|
+
self.gds_elementtree_node_ = None
|
1030
|
+
self.original_tagname_ = None
|
1031
|
+
self.parent_object_ = kwargs_.get('parent_object_')
|
1032
|
+
self.ns_prefix_ = None
|
1033
|
+
self.appId = appId
|
1034
|
+
self.appId_nsprefix_ = None
|
1035
|
+
self.appVersion = appVersion
|
1036
|
+
self.appVersion_nsprefix_ = None
|
1037
|
+
if priceCheck is None:
|
1038
|
+
self.priceCheck = []
|
1039
|
+
else:
|
1040
|
+
self.priceCheck = priceCheck
|
1041
|
+
self.priceCheck_nsprefix_ = None
|
1042
|
+
def factory(*args_, **kwargs_):
|
1043
|
+
if CurrentSubclassModule_ is not None:
|
1044
|
+
subclass = getSubclassFromModule_(
|
1045
|
+
CurrentSubclassModule_, priceRequest)
|
1046
|
+
if subclass is not None:
|
1047
|
+
return subclass(*args_, **kwargs_)
|
1048
|
+
if priceRequest.subclass:
|
1049
|
+
return priceRequest.subclass(*args_, **kwargs_)
|
1050
|
+
else:
|
1051
|
+
return priceRequest(*args_, **kwargs_)
|
1052
|
+
factory = staticmethod(factory)
|
1053
|
+
def get_ns_prefix_(self):
|
1054
|
+
return self.ns_prefix_
|
1055
|
+
def set_ns_prefix_(self, ns_prefix):
|
1056
|
+
self.ns_prefix_ = ns_prefix
|
1057
|
+
def get_appId(self):
|
1058
|
+
return self.appId
|
1059
|
+
def set_appId(self, appId):
|
1060
|
+
self.appId = appId
|
1061
|
+
def get_appVersion(self):
|
1062
|
+
return self.appVersion
|
1063
|
+
def set_appVersion(self, appVersion):
|
1064
|
+
self.appVersion = appVersion
|
1065
|
+
def get_priceCheck(self):
|
1066
|
+
return self.priceCheck
|
1067
|
+
def set_priceCheck(self, priceCheck):
|
1068
|
+
self.priceCheck = priceCheck
|
1069
|
+
def add_priceCheck(self, value):
|
1070
|
+
self.priceCheck.append(value)
|
1071
|
+
def insert_priceCheck_at(self, index, value):
|
1072
|
+
self.priceCheck.insert(index, value)
|
1073
|
+
def replace_priceCheck_at(self, index, value):
|
1074
|
+
self.priceCheck[index] = value
|
1075
|
+
def has__content(self):
|
1076
|
+
if (
|
1077
|
+
self.appId is not None or
|
1078
|
+
self.appVersion is not None or
|
1079
|
+
self.priceCheck
|
1080
|
+
):
|
1081
|
+
return True
|
1082
|
+
else:
|
1083
|
+
return False
|
1084
|
+
def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='priceRequest', pretty_print=True):
|
1085
|
+
imported_ns_def_ = GenerateDSNamespaceDefs_.get('priceRequest')
|
1086
|
+
if imported_ns_def_ is not None:
|
1087
|
+
namespacedef_ = imported_ns_def_
|
1088
|
+
if pretty_print:
|
1089
|
+
eol_ = '\n'
|
1090
|
+
else:
|
1091
|
+
eol_ = ''
|
1092
|
+
if self.original_tagname_ is not None and name_ == 'priceRequest':
|
1093
|
+
name_ = self.original_tagname_
|
1094
|
+
if UseCapturedNS_ and self.ns_prefix_:
|
1095
|
+
namespaceprefix_ = self.ns_prefix_ + ':'
|
1096
|
+
showIndent(outfile, level, pretty_print)
|
1097
|
+
outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
|
1098
|
+
already_processed = set()
|
1099
|
+
self._exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='priceRequest')
|
1100
|
+
if self.has__content():
|
1101
|
+
outfile.write('>%s' % (eol_, ))
|
1102
|
+
self._exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='priceRequest', pretty_print=pretty_print)
|
1103
|
+
showIndent(outfile, level, pretty_print)
|
1104
|
+
outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
|
1105
|
+
else:
|
1106
|
+
outfile.write('/>%s' % (eol_, ))
|
1107
|
+
def _exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='priceRequest'):
|
1108
|
+
pass
|
1109
|
+
def _exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='priceRequest', fromsubclass_=False, pretty_print=True):
|
1110
|
+
if pretty_print:
|
1111
|
+
eol_ = '\n'
|
1112
|
+
else:
|
1113
|
+
eol_ = ''
|
1114
|
+
if self.appId is not None:
|
1115
|
+
namespaceprefix_ = self.appId_nsprefix_ + ':' if (UseCapturedNS_ and self.appId_nsprefix_) else ''
|
1116
|
+
showIndent(outfile, level, pretty_print)
|
1117
|
+
outfile.write('<%sappId>%s</%sappId>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.appId), input_name='appId')), namespaceprefix_ , eol_))
|
1118
|
+
if self.appVersion is not None:
|
1119
|
+
namespaceprefix_ = self.appVersion_nsprefix_ + ':' if (UseCapturedNS_ and self.appVersion_nsprefix_) else ''
|
1120
|
+
showIndent(outfile, level, pretty_print)
|
1121
|
+
outfile.write('<%sappVersion>%s</%sappVersion>%s' % (namespaceprefix_ , self.gds_format_decimal(self.appVersion, input_name='appVersion'), namespaceprefix_ , eol_))
|
1122
|
+
for priceCheck_ in self.priceCheck:
|
1123
|
+
namespaceprefix_ = self.priceCheck_nsprefix_ + ':' if (UseCapturedNS_ and self.priceCheck_nsprefix_) else ''
|
1124
|
+
priceCheck_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='priceCheck', pretty_print=pretty_print)
|
1125
|
+
def build(self, node, gds_collector_=None):
|
1126
|
+
self.gds_collector_ = gds_collector_
|
1127
|
+
if SaveElementTreeNode:
|
1128
|
+
self.gds_elementtree_node_ = node
|
1129
|
+
already_processed = set()
|
1130
|
+
self.ns_prefix_ = node.prefix
|
1131
|
+
self._buildAttributes(node, node.attrib, already_processed)
|
1132
|
+
for child in node:
|
1133
|
+
nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
|
1134
|
+
self._buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
|
1135
|
+
return self
|
1136
|
+
def _buildAttributes(self, node, attrs, already_processed):
|
1137
|
+
pass
|
1138
|
+
def _buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
|
1139
|
+
if nodeName_ == 'appId':
|
1140
|
+
value_ = child_.text
|
1141
|
+
value_ = self.gds_parse_string(value_, node, 'appId')
|
1142
|
+
value_ = self.gds_validate_string(value_, node, 'appId')
|
1143
|
+
self.appId = value_
|
1144
|
+
self.appId_nsprefix_ = child_.prefix
|
1145
|
+
elif nodeName_ == 'appVersion' and child_.text:
|
1146
|
+
sval_ = child_.text
|
1147
|
+
fval_ = self.gds_parse_decimal(sval_, node, 'appVersion')
|
1148
|
+
fval_ = self.gds_validate_decimal(fval_, node, 'appVersion')
|
1149
|
+
self.appVersion = fval_
|
1150
|
+
self.appVersion_nsprefix_ = child_.prefix
|
1151
|
+
elif nodeName_ == 'priceCheck':
|
1152
|
+
obj_ = priceCheck.factory(parent_object_=self)
|
1153
|
+
obj_.build(child_, gds_collector_=gds_collector_)
|
1154
|
+
self.priceCheck.append(obj_)
|
1155
|
+
obj_.original_tagname_ = 'priceCheck'
|
1156
|
+
# end class priceRequest
|
1157
|
+
|
1158
|
+
|
1159
|
+
class priceCheck(GeneratedsSuper):
|
1160
|
+
"""priceCheck -- The priceCheck container element represents a single request for a
|
1161
|
+
price request. Multiple price requests, each one in a priceCheck element may be
|
1162
|
+
submitted. The information within this element will be used to validate the
|
1163
|
+
addresses, determine the services, and produce the estimate costs for the shipment.
|
1164
|
+
rateId -- It is recommended that the value is unique within the
|
1165
|
+
priceRequest to allow easy identification of results to requests.
|
1166
|
+
sender -- This element provides the origin address details and must
|
1167
|
+
be supplied for each Price request message.
|
1168
|
+
delivery -- This container element provides the destination address
|
1169
|
+
details and must be supplied for each Price request message.
|
1170
|
+
collectionDateTime -- The format of a date time is yyyy-mmddThh:MM:ss
|
1171
|
+
product -- This is a container element for Information relating to
|
1172
|
+
the TNT product chosen for this priceCheck.
|
1173
|
+
account -- This is an optional element but must be supplied to obtain
|
1174
|
+
accurate price estimates.
|
1175
|
+
insurance -- This container element holds the insurance details needed
|
1176
|
+
to retrieve an insurance quote as part of the price response. If an
|
1177
|
+
insurance option such as IN is specified than these elements become
|
1178
|
+
mandatory.
|
1179
|
+
termsOfPayment -- Whether the sender or receiver to paying for the shipment.
|
1180
|
+
Values are "S" for a sender or "R" for receiver. Optional element, which
|
1181
|
+
default to S if not supplied.
|
1182
|
+
currency -- The ISO 4217 Alpha-3 currency codes for the currency of
|
1183
|
+
the price request.
|
1184
|
+
priceBreakDown -- This is an optional element that determines if a full
|
1185
|
+
price breakdown is returned or just the high level rate. The default
|
1186
|
+
value is false.
|
1187
|
+
consignmentDetails -- Container element to hold the summary consignment details
|
1188
|
+
for the pricing request. This element is optional as long as the
|
1189
|
+
pieceLine are specified instead
|
1190
|
+
pieceLine -- The pieceLine container element is used to describe
|
1191
|
+
the individual piece lines which make up the consignment in greater
|
1192
|
+
detail. It is an optional element and can occur multiple times. The
|
1193
|
+
details specified for the pieceLine must be compatible with those
|
1194
|
+
specified in the consignmentDetails. If no pieceLine are specified
|
1195
|
+
then a default one will be created.
|
1196
|
+
|
1197
|
+
"""
|
1198
|
+
__hash__ = GeneratedsSuper.__hash__
|
1199
|
+
subclass = None
|
1200
|
+
superclass = None
|
1201
|
+
def __init__(self, rateId=None, sender=None, delivery=None, collectionDateTime=None, product=None, account=None, insurance=None, termsOfPayment=None, currency=None, priceBreakDown=False, consignmentDetails=None, pieceLine=None, gds_collector_=None, **kwargs_):
|
1202
|
+
self.gds_collector_ = gds_collector_
|
1203
|
+
self.gds_elementtree_node_ = None
|
1204
|
+
self.original_tagname_ = None
|
1205
|
+
self.parent_object_ = kwargs_.get('parent_object_')
|
1206
|
+
self.ns_prefix_ = None
|
1207
|
+
self.rateId = rateId
|
1208
|
+
self.rateId_nsprefix_ = None
|
1209
|
+
self.sender = sender
|
1210
|
+
self.sender_nsprefix_ = None
|
1211
|
+
self.delivery = delivery
|
1212
|
+
self.delivery_nsprefix_ = None
|
1213
|
+
if isinstance(collectionDateTime, BaseStrType_):
|
1214
|
+
initvalue_ = datetime_.datetime.strptime(collectionDateTime, '%Y-%m-%dT%H:%M:%S')
|
1215
|
+
else:
|
1216
|
+
initvalue_ = collectionDateTime
|
1217
|
+
self.collectionDateTime = initvalue_
|
1218
|
+
self.collectionDateTime_nsprefix_ = None
|
1219
|
+
self.product = product
|
1220
|
+
self.product_nsprefix_ = None
|
1221
|
+
self.account = account
|
1222
|
+
self.account_nsprefix_ = None
|
1223
|
+
self.insurance = insurance
|
1224
|
+
self.insurance_nsprefix_ = None
|
1225
|
+
self.termsOfPayment = termsOfPayment
|
1226
|
+
self.termsOfPayment_nsprefix_ = None
|
1227
|
+
self.currency = currency
|
1228
|
+
self.currency_nsprefix_ = None
|
1229
|
+
self.priceBreakDown = priceBreakDown
|
1230
|
+
self.priceBreakDown_nsprefix_ = None
|
1231
|
+
self.consignmentDetails = consignmentDetails
|
1232
|
+
self.consignmentDetails_nsprefix_ = None
|
1233
|
+
if pieceLine is None:
|
1234
|
+
self.pieceLine = []
|
1235
|
+
else:
|
1236
|
+
self.pieceLine = pieceLine
|
1237
|
+
self.pieceLine_nsprefix_ = None
|
1238
|
+
def factory(*args_, **kwargs_):
|
1239
|
+
if CurrentSubclassModule_ is not None:
|
1240
|
+
subclass = getSubclassFromModule_(
|
1241
|
+
CurrentSubclassModule_, priceCheck)
|
1242
|
+
if subclass is not None:
|
1243
|
+
return subclass(*args_, **kwargs_)
|
1244
|
+
if priceCheck.subclass:
|
1245
|
+
return priceCheck.subclass(*args_, **kwargs_)
|
1246
|
+
else:
|
1247
|
+
return priceCheck(*args_, **kwargs_)
|
1248
|
+
factory = staticmethod(factory)
|
1249
|
+
def get_ns_prefix_(self):
|
1250
|
+
return self.ns_prefix_
|
1251
|
+
def set_ns_prefix_(self, ns_prefix):
|
1252
|
+
self.ns_prefix_ = ns_prefix
|
1253
|
+
def get_rateId(self):
|
1254
|
+
return self.rateId
|
1255
|
+
def set_rateId(self, rateId):
|
1256
|
+
self.rateId = rateId
|
1257
|
+
def get_sender(self):
|
1258
|
+
return self.sender
|
1259
|
+
def set_sender(self, sender):
|
1260
|
+
self.sender = sender
|
1261
|
+
def get_delivery(self):
|
1262
|
+
return self.delivery
|
1263
|
+
def set_delivery(self, delivery):
|
1264
|
+
self.delivery = delivery
|
1265
|
+
def get_collectionDateTime(self):
|
1266
|
+
return self.collectionDateTime
|
1267
|
+
def set_collectionDateTime(self, collectionDateTime):
|
1268
|
+
self.collectionDateTime = collectionDateTime
|
1269
|
+
def get_product(self):
|
1270
|
+
return self.product
|
1271
|
+
def set_product(self, product):
|
1272
|
+
self.product = product
|
1273
|
+
def get_account(self):
|
1274
|
+
return self.account
|
1275
|
+
def set_account(self, account):
|
1276
|
+
self.account = account
|
1277
|
+
def get_insurance(self):
|
1278
|
+
return self.insurance
|
1279
|
+
def set_insurance(self, insurance):
|
1280
|
+
self.insurance = insurance
|
1281
|
+
def get_termsOfPayment(self):
|
1282
|
+
return self.termsOfPayment
|
1283
|
+
def set_termsOfPayment(self, termsOfPayment):
|
1284
|
+
self.termsOfPayment = termsOfPayment
|
1285
|
+
def get_currency(self):
|
1286
|
+
return self.currency
|
1287
|
+
def set_currency(self, currency):
|
1288
|
+
self.currency = currency
|
1289
|
+
def get_priceBreakDown(self):
|
1290
|
+
return self.priceBreakDown
|
1291
|
+
def set_priceBreakDown(self, priceBreakDown):
|
1292
|
+
self.priceBreakDown = priceBreakDown
|
1293
|
+
def get_consignmentDetails(self):
|
1294
|
+
return self.consignmentDetails
|
1295
|
+
def set_consignmentDetails(self, consignmentDetails):
|
1296
|
+
self.consignmentDetails = consignmentDetails
|
1297
|
+
def get_pieceLine(self):
|
1298
|
+
return self.pieceLine
|
1299
|
+
def set_pieceLine(self, pieceLine):
|
1300
|
+
self.pieceLine = pieceLine
|
1301
|
+
def add_pieceLine(self, value):
|
1302
|
+
self.pieceLine.append(value)
|
1303
|
+
def insert_pieceLine_at(self, index, value):
|
1304
|
+
self.pieceLine.insert(index, value)
|
1305
|
+
def replace_pieceLine_at(self, index, value):
|
1306
|
+
self.pieceLine[index] = value
|
1307
|
+
def has__content(self):
|
1308
|
+
if (
|
1309
|
+
self.rateId is not None or
|
1310
|
+
self.sender is not None or
|
1311
|
+
self.delivery is not None or
|
1312
|
+
self.collectionDateTime is not None or
|
1313
|
+
self.product is not None or
|
1314
|
+
self.account is not None or
|
1315
|
+
self.insurance is not None or
|
1316
|
+
self.termsOfPayment is not None or
|
1317
|
+
self.currency is not None or
|
1318
|
+
self.priceBreakDown or
|
1319
|
+
self.consignmentDetails is not None or
|
1320
|
+
self.pieceLine
|
1321
|
+
):
|
1322
|
+
return True
|
1323
|
+
else:
|
1324
|
+
return False
|
1325
|
+
def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='priceCheck', pretty_print=True):
|
1326
|
+
imported_ns_def_ = GenerateDSNamespaceDefs_.get('priceCheck')
|
1327
|
+
if imported_ns_def_ is not None:
|
1328
|
+
namespacedef_ = imported_ns_def_
|
1329
|
+
if pretty_print:
|
1330
|
+
eol_ = '\n'
|
1331
|
+
else:
|
1332
|
+
eol_ = ''
|
1333
|
+
if self.original_tagname_ is not None and name_ == 'priceCheck':
|
1334
|
+
name_ = self.original_tagname_
|
1335
|
+
if UseCapturedNS_ and self.ns_prefix_:
|
1336
|
+
namespaceprefix_ = self.ns_prefix_ + ':'
|
1337
|
+
showIndent(outfile, level, pretty_print)
|
1338
|
+
outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
|
1339
|
+
already_processed = set()
|
1340
|
+
self._exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='priceCheck')
|
1341
|
+
if self.has__content():
|
1342
|
+
outfile.write('>%s' % (eol_, ))
|
1343
|
+
self._exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='priceCheck', pretty_print=pretty_print)
|
1344
|
+
showIndent(outfile, level, pretty_print)
|
1345
|
+
outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
|
1346
|
+
else:
|
1347
|
+
outfile.write('/>%s' % (eol_, ))
|
1348
|
+
def _exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='priceCheck'):
|
1349
|
+
pass
|
1350
|
+
def _exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='priceCheck', fromsubclass_=False, pretty_print=True):
|
1351
|
+
if pretty_print:
|
1352
|
+
eol_ = '\n'
|
1353
|
+
else:
|
1354
|
+
eol_ = ''
|
1355
|
+
if self.rateId is not None:
|
1356
|
+
namespaceprefix_ = self.rateId_nsprefix_ + ':' if (UseCapturedNS_ and self.rateId_nsprefix_) else ''
|
1357
|
+
showIndent(outfile, level, pretty_print)
|
1358
|
+
outfile.write('<%srateId>%s</%srateId>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.rateId), input_name='rateId')), namespaceprefix_ , eol_))
|
1359
|
+
if self.sender is not None:
|
1360
|
+
namespaceprefix_ = self.sender_nsprefix_ + ':' if (UseCapturedNS_ and self.sender_nsprefix_) else ''
|
1361
|
+
self.sender.export(outfile, level, namespaceprefix_, namespacedef_='', name_='sender', pretty_print=pretty_print)
|
1362
|
+
if self.delivery is not None:
|
1363
|
+
namespaceprefix_ = self.delivery_nsprefix_ + ':' if (UseCapturedNS_ and self.delivery_nsprefix_) else ''
|
1364
|
+
self.delivery.export(outfile, level, namespaceprefix_, namespacedef_='', name_='delivery', pretty_print=pretty_print)
|
1365
|
+
if self.collectionDateTime is not None:
|
1366
|
+
namespaceprefix_ = self.collectionDateTime_nsprefix_ + ':' if (UseCapturedNS_ and self.collectionDateTime_nsprefix_) else ''
|
1367
|
+
showIndent(outfile, level, pretty_print)
|
1368
|
+
outfile.write('<%scollectionDateTime>%s</%scollectionDateTime>%s' % (namespaceprefix_ , self.gds_format_datetime(self.collectionDateTime, input_name='collectionDateTime'), namespaceprefix_ , eol_))
|
1369
|
+
if self.product is not None:
|
1370
|
+
namespaceprefix_ = self.product_nsprefix_ + ':' if (UseCapturedNS_ and self.product_nsprefix_) else ''
|
1371
|
+
self.product.export(outfile, level, namespaceprefix_, namespacedef_='', name_='product', pretty_print=pretty_print)
|
1372
|
+
if self.account is not None:
|
1373
|
+
namespaceprefix_ = self.account_nsprefix_ + ':' if (UseCapturedNS_ and self.account_nsprefix_) else ''
|
1374
|
+
self.account.export(outfile, level, namespaceprefix_, namespacedef_='', name_='account', pretty_print=pretty_print)
|
1375
|
+
if self.insurance is not None:
|
1376
|
+
namespaceprefix_ = self.insurance_nsprefix_ + ':' if (UseCapturedNS_ and self.insurance_nsprefix_) else ''
|
1377
|
+
self.insurance.export(outfile, level, namespaceprefix_, namespacedef_='', name_='insurance', pretty_print=pretty_print)
|
1378
|
+
if self.termsOfPayment is not None:
|
1379
|
+
namespaceprefix_ = self.termsOfPayment_nsprefix_ + ':' if (UseCapturedNS_ and self.termsOfPayment_nsprefix_) else ''
|
1380
|
+
showIndent(outfile, level, pretty_print)
|
1381
|
+
outfile.write('<%stermsOfPayment>%s</%stermsOfPayment>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.termsOfPayment), input_name='termsOfPayment')), namespaceprefix_ , eol_))
|
1382
|
+
if self.currency is not None:
|
1383
|
+
namespaceprefix_ = self.currency_nsprefix_ + ':' if (UseCapturedNS_ and self.currency_nsprefix_) else ''
|
1384
|
+
showIndent(outfile, level, pretty_print)
|
1385
|
+
outfile.write('<%scurrency>%s</%scurrency>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.currency), input_name='currency')), namespaceprefix_ , eol_))
|
1386
|
+
if self.priceBreakDown:
|
1387
|
+
namespaceprefix_ = self.priceBreakDown_nsprefix_ + ':' if (UseCapturedNS_ and self.priceBreakDown_nsprefix_) else ''
|
1388
|
+
showIndent(outfile, level, pretty_print)
|
1389
|
+
outfile.write('<%spriceBreakDown>%s</%spriceBreakDown>%s' % (namespaceprefix_ , self.gds_format_boolean(self.priceBreakDown, input_name='priceBreakDown'), namespaceprefix_ , eol_))
|
1390
|
+
if self.consignmentDetails is not None:
|
1391
|
+
namespaceprefix_ = self.consignmentDetails_nsprefix_ + ':' if (UseCapturedNS_ and self.consignmentDetails_nsprefix_) else ''
|
1392
|
+
self.consignmentDetails.export(outfile, level, namespaceprefix_, namespacedef_='', name_='consignmentDetails', pretty_print=pretty_print)
|
1393
|
+
for pieceLine_ in self.pieceLine:
|
1394
|
+
namespaceprefix_ = self.pieceLine_nsprefix_ + ':' if (UseCapturedNS_ and self.pieceLine_nsprefix_) else ''
|
1395
|
+
pieceLine_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='pieceLine', pretty_print=pretty_print)
|
1396
|
+
def build(self, node, gds_collector_=None):
|
1397
|
+
self.gds_collector_ = gds_collector_
|
1398
|
+
if SaveElementTreeNode:
|
1399
|
+
self.gds_elementtree_node_ = node
|
1400
|
+
already_processed = set()
|
1401
|
+
self.ns_prefix_ = node.prefix
|
1402
|
+
self._buildAttributes(node, node.attrib, already_processed)
|
1403
|
+
for child in node:
|
1404
|
+
nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
|
1405
|
+
self._buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
|
1406
|
+
return self
|
1407
|
+
def _buildAttributes(self, node, attrs, already_processed):
|
1408
|
+
pass
|
1409
|
+
def _buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
|
1410
|
+
if nodeName_ == 'rateId':
|
1411
|
+
value_ = child_.text
|
1412
|
+
value_ = self.gds_parse_string(value_, node, 'rateId')
|
1413
|
+
value_ = self.gds_validate_string(value_, node, 'rateId')
|
1414
|
+
self.rateId = value_
|
1415
|
+
self.rateId_nsprefix_ = child_.prefix
|
1416
|
+
elif nodeName_ == 'sender':
|
1417
|
+
obj_ = address.factory(parent_object_=self)
|
1418
|
+
obj_.build(child_, gds_collector_=gds_collector_)
|
1419
|
+
self.sender = obj_
|
1420
|
+
obj_.original_tagname_ = 'sender'
|
1421
|
+
elif nodeName_ == 'delivery':
|
1422
|
+
obj_ = address.factory(parent_object_=self)
|
1423
|
+
obj_.build(child_, gds_collector_=gds_collector_)
|
1424
|
+
self.delivery = obj_
|
1425
|
+
obj_.original_tagname_ = 'delivery'
|
1426
|
+
elif nodeName_ == 'collectionDateTime':
|
1427
|
+
sval_ = child_.text
|
1428
|
+
dval_ = self.gds_parse_datetime(sval_)
|
1429
|
+
self.collectionDateTime = dval_
|
1430
|
+
self.collectionDateTime_nsprefix_ = child_.prefix
|
1431
|
+
elif nodeName_ == 'product':
|
1432
|
+
obj_ = product.factory(parent_object_=self)
|
1433
|
+
obj_.build(child_, gds_collector_=gds_collector_)
|
1434
|
+
self.product = obj_
|
1435
|
+
obj_.original_tagname_ = 'product'
|
1436
|
+
elif nodeName_ == 'account':
|
1437
|
+
obj_ = account.factory(parent_object_=self)
|
1438
|
+
obj_.build(child_, gds_collector_=gds_collector_)
|
1439
|
+
self.account = obj_
|
1440
|
+
obj_.original_tagname_ = 'account'
|
1441
|
+
elif nodeName_ == 'insurance':
|
1442
|
+
obj_ = insurance.factory(parent_object_=self)
|
1443
|
+
obj_.build(child_, gds_collector_=gds_collector_)
|
1444
|
+
self.insurance = obj_
|
1445
|
+
obj_.original_tagname_ = 'insurance'
|
1446
|
+
elif nodeName_ == 'termsOfPayment':
|
1447
|
+
value_ = child_.text
|
1448
|
+
value_ = self.gds_parse_string(value_, node, 'termsOfPayment')
|
1449
|
+
value_ = self.gds_validate_string(value_, node, 'termsOfPayment')
|
1450
|
+
self.termsOfPayment = value_
|
1451
|
+
self.termsOfPayment_nsprefix_ = child_.prefix
|
1452
|
+
elif nodeName_ == 'currency':
|
1453
|
+
value_ = child_.text
|
1454
|
+
value_ = self.gds_parse_string(value_, node, 'currency')
|
1455
|
+
value_ = self.gds_validate_string(value_, node, 'currency')
|
1456
|
+
self.currency = value_
|
1457
|
+
self.currency_nsprefix_ = child_.prefix
|
1458
|
+
elif nodeName_ == 'priceBreakDown':
|
1459
|
+
sval_ = child_.text
|
1460
|
+
ival_ = self.gds_parse_boolean(sval_, node, 'priceBreakDown')
|
1461
|
+
ival_ = self.gds_validate_boolean(ival_, node, 'priceBreakDown')
|
1462
|
+
self.priceBreakDown = ival_
|
1463
|
+
self.priceBreakDown_nsprefix_ = child_.prefix
|
1464
|
+
elif nodeName_ == 'consignmentDetails':
|
1465
|
+
obj_ = consignmentDetails.factory(parent_object_=self)
|
1466
|
+
obj_.build(child_, gds_collector_=gds_collector_)
|
1467
|
+
self.consignmentDetails = obj_
|
1468
|
+
obj_.original_tagname_ = 'consignmentDetails'
|
1469
|
+
elif nodeName_ == 'pieceLine':
|
1470
|
+
obj_ = pieceLine.factory(parent_object_=self)
|
1471
|
+
obj_.build(child_, gds_collector_=gds_collector_)
|
1472
|
+
self.pieceLine.append(obj_)
|
1473
|
+
obj_.original_tagname_ = 'pieceLine'
|
1474
|
+
# end class priceCheck
|
1475
|
+
|
1476
|
+
|
1477
|
+
class address(GeneratedsSuper):
|
1478
|
+
"""country -- The ISO 3166-1 Alpha-2 country code for the country of the
|
1479
|
+
given address. This is a mandatory element.
|
1480
|
+
town -- The town name as recognised by TNT.
|
1481
|
+
postcode -- Postcode or zip code
|
1482
|
+
|
1483
|
+
"""
|
1484
|
+
__hash__ = GeneratedsSuper.__hash__
|
1485
|
+
subclass = None
|
1486
|
+
superclass = None
|
1487
|
+
def __init__(self, country=None, town=None, postcode=None, gds_collector_=None, **kwargs_):
|
1488
|
+
self.gds_collector_ = gds_collector_
|
1489
|
+
self.gds_elementtree_node_ = None
|
1490
|
+
self.original_tagname_ = None
|
1491
|
+
self.parent_object_ = kwargs_.get('parent_object_')
|
1492
|
+
self.ns_prefix_ = None
|
1493
|
+
self.country = country
|
1494
|
+
self.country_nsprefix_ = None
|
1495
|
+
self.town = town
|
1496
|
+
self.town_nsprefix_ = None
|
1497
|
+
self.postcode = postcode
|
1498
|
+
self.postcode_nsprefix_ = None
|
1499
|
+
def factory(*args_, **kwargs_):
|
1500
|
+
if CurrentSubclassModule_ is not None:
|
1501
|
+
subclass = getSubclassFromModule_(
|
1502
|
+
CurrentSubclassModule_, address)
|
1503
|
+
if subclass is not None:
|
1504
|
+
return subclass(*args_, **kwargs_)
|
1505
|
+
if address.subclass:
|
1506
|
+
return address.subclass(*args_, **kwargs_)
|
1507
|
+
else:
|
1508
|
+
return address(*args_, **kwargs_)
|
1509
|
+
factory = staticmethod(factory)
|
1510
|
+
def get_ns_prefix_(self):
|
1511
|
+
return self.ns_prefix_
|
1512
|
+
def set_ns_prefix_(self, ns_prefix):
|
1513
|
+
self.ns_prefix_ = ns_prefix
|
1514
|
+
def get_country(self):
|
1515
|
+
return self.country
|
1516
|
+
def set_country(self, country):
|
1517
|
+
self.country = country
|
1518
|
+
def get_town(self):
|
1519
|
+
return self.town
|
1520
|
+
def set_town(self, town):
|
1521
|
+
self.town = town
|
1522
|
+
def get_postcode(self):
|
1523
|
+
return self.postcode
|
1524
|
+
def set_postcode(self, postcode):
|
1525
|
+
self.postcode = postcode
|
1526
|
+
def has__content(self):
|
1527
|
+
if (
|
1528
|
+
self.country is not None or
|
1529
|
+
self.town is not None or
|
1530
|
+
self.postcode is not None
|
1531
|
+
):
|
1532
|
+
return True
|
1533
|
+
else:
|
1534
|
+
return False
|
1535
|
+
def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='address', pretty_print=True):
|
1536
|
+
imported_ns_def_ = GenerateDSNamespaceDefs_.get('address')
|
1537
|
+
if imported_ns_def_ is not None:
|
1538
|
+
namespacedef_ = imported_ns_def_
|
1539
|
+
if pretty_print:
|
1540
|
+
eol_ = '\n'
|
1541
|
+
else:
|
1542
|
+
eol_ = ''
|
1543
|
+
if self.original_tagname_ is not None and name_ == 'address':
|
1544
|
+
name_ = self.original_tagname_
|
1545
|
+
if UseCapturedNS_ and self.ns_prefix_:
|
1546
|
+
namespaceprefix_ = self.ns_prefix_ + ':'
|
1547
|
+
showIndent(outfile, level, pretty_print)
|
1548
|
+
outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
|
1549
|
+
already_processed = set()
|
1550
|
+
self._exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='address')
|
1551
|
+
if self.has__content():
|
1552
|
+
outfile.write('>%s' % (eol_, ))
|
1553
|
+
self._exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='address', pretty_print=pretty_print)
|
1554
|
+
showIndent(outfile, level, pretty_print)
|
1555
|
+
outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
|
1556
|
+
else:
|
1557
|
+
outfile.write('/>%s' % (eol_, ))
|
1558
|
+
def _exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='address'):
|
1559
|
+
pass
|
1560
|
+
def _exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='address', fromsubclass_=False, pretty_print=True):
|
1561
|
+
if pretty_print:
|
1562
|
+
eol_ = '\n'
|
1563
|
+
else:
|
1564
|
+
eol_ = ''
|
1565
|
+
if self.country is not None:
|
1566
|
+
namespaceprefix_ = self.country_nsprefix_ + ':' if (UseCapturedNS_ and self.country_nsprefix_) else ''
|
1567
|
+
showIndent(outfile, level, pretty_print)
|
1568
|
+
outfile.write('<%scountry>%s</%scountry>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.country), input_name='country')), namespaceprefix_ , eol_))
|
1569
|
+
if self.town is not None:
|
1570
|
+
namespaceprefix_ = self.town_nsprefix_ + ':' if (UseCapturedNS_ and self.town_nsprefix_) else ''
|
1571
|
+
showIndent(outfile, level, pretty_print)
|
1572
|
+
outfile.write('<%stown>%s</%stown>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.town), input_name='town')), namespaceprefix_ , eol_))
|
1573
|
+
if self.postcode is not None:
|
1574
|
+
namespaceprefix_ = self.postcode_nsprefix_ + ':' if (UseCapturedNS_ and self.postcode_nsprefix_) else ''
|
1575
|
+
showIndent(outfile, level, pretty_print)
|
1576
|
+
outfile.write('<%spostcode>%s</%spostcode>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.postcode), input_name='postcode')), namespaceprefix_ , eol_))
|
1577
|
+
def build(self, node, gds_collector_=None):
|
1578
|
+
self.gds_collector_ = gds_collector_
|
1579
|
+
if SaveElementTreeNode:
|
1580
|
+
self.gds_elementtree_node_ = node
|
1581
|
+
already_processed = set()
|
1582
|
+
self.ns_prefix_ = node.prefix
|
1583
|
+
self._buildAttributes(node, node.attrib, already_processed)
|
1584
|
+
for child in node:
|
1585
|
+
nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
|
1586
|
+
self._buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
|
1587
|
+
return self
|
1588
|
+
def _buildAttributes(self, node, attrs, already_processed):
|
1589
|
+
pass
|
1590
|
+
def _buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
|
1591
|
+
if nodeName_ == 'country':
|
1592
|
+
value_ = child_.text
|
1593
|
+
value_ = self.gds_parse_string(value_, node, 'country')
|
1594
|
+
value_ = self.gds_validate_string(value_, node, 'country')
|
1595
|
+
self.country = value_
|
1596
|
+
self.country_nsprefix_ = child_.prefix
|
1597
|
+
elif nodeName_ == 'town':
|
1598
|
+
value_ = child_.text
|
1599
|
+
value_ = self.gds_parse_string(value_, node, 'town')
|
1600
|
+
value_ = self.gds_validate_string(value_, node, 'town')
|
1601
|
+
self.town = value_
|
1602
|
+
self.town_nsprefix_ = child_.prefix
|
1603
|
+
elif nodeName_ == 'postcode':
|
1604
|
+
value_ = child_.text
|
1605
|
+
value_ = self.gds_parse_string(value_, node, 'postcode')
|
1606
|
+
value_ = self.gds_validate_string(value_, node, 'postcode')
|
1607
|
+
self.postcode = value_
|
1608
|
+
self.postcode_nsprefix_ = child_.prefix
|
1609
|
+
# end class address
|
1610
|
+
|
1611
|
+
|
1612
|
+
class account(GeneratedsSuper):
|
1613
|
+
"""accountNumber -- TNT account number, which is the 9 or 10 digit number assigned
|
1614
|
+
by the TNT sales person.
|
1615
|
+
accountCountry -- ISO 3166-1 Alpha-2 country code for the country in which the
|
1616
|
+
TNT account is registered.
|
1617
|
+
|
1618
|
+
"""
|
1619
|
+
__hash__ = GeneratedsSuper.__hash__
|
1620
|
+
subclass = None
|
1621
|
+
superclass = None
|
1622
|
+
def __init__(self, accountNumber=None, accountCountry=None, gds_collector_=None, **kwargs_):
|
1623
|
+
self.gds_collector_ = gds_collector_
|
1624
|
+
self.gds_elementtree_node_ = None
|
1625
|
+
self.original_tagname_ = None
|
1626
|
+
self.parent_object_ = kwargs_.get('parent_object_')
|
1627
|
+
self.ns_prefix_ = None
|
1628
|
+
self.accountNumber = accountNumber
|
1629
|
+
self.accountNumber_nsprefix_ = None
|
1630
|
+
self.accountCountry = accountCountry
|
1631
|
+
self.accountCountry_nsprefix_ = None
|
1632
|
+
def factory(*args_, **kwargs_):
|
1633
|
+
if CurrentSubclassModule_ is not None:
|
1634
|
+
subclass = getSubclassFromModule_(
|
1635
|
+
CurrentSubclassModule_, account)
|
1636
|
+
if subclass is not None:
|
1637
|
+
return subclass(*args_, **kwargs_)
|
1638
|
+
if account.subclass:
|
1639
|
+
return account.subclass(*args_, **kwargs_)
|
1640
|
+
else:
|
1641
|
+
return account(*args_, **kwargs_)
|
1642
|
+
factory = staticmethod(factory)
|
1643
|
+
def get_ns_prefix_(self):
|
1644
|
+
return self.ns_prefix_
|
1645
|
+
def set_ns_prefix_(self, ns_prefix):
|
1646
|
+
self.ns_prefix_ = ns_prefix
|
1647
|
+
def get_accountNumber(self):
|
1648
|
+
return self.accountNumber
|
1649
|
+
def set_accountNumber(self, accountNumber):
|
1650
|
+
self.accountNumber = accountNumber
|
1651
|
+
def get_accountCountry(self):
|
1652
|
+
return self.accountCountry
|
1653
|
+
def set_accountCountry(self, accountCountry):
|
1654
|
+
self.accountCountry = accountCountry
|
1655
|
+
def has__content(self):
|
1656
|
+
if (
|
1657
|
+
self.accountNumber is not None or
|
1658
|
+
self.accountCountry is not None
|
1659
|
+
):
|
1660
|
+
return True
|
1661
|
+
else:
|
1662
|
+
return False
|
1663
|
+
def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='account', pretty_print=True):
|
1664
|
+
imported_ns_def_ = GenerateDSNamespaceDefs_.get('account')
|
1665
|
+
if imported_ns_def_ is not None:
|
1666
|
+
namespacedef_ = imported_ns_def_
|
1667
|
+
if pretty_print:
|
1668
|
+
eol_ = '\n'
|
1669
|
+
else:
|
1670
|
+
eol_ = ''
|
1671
|
+
if self.original_tagname_ is not None and name_ == 'account':
|
1672
|
+
name_ = self.original_tagname_
|
1673
|
+
if UseCapturedNS_ and self.ns_prefix_:
|
1674
|
+
namespaceprefix_ = self.ns_prefix_ + ':'
|
1675
|
+
showIndent(outfile, level, pretty_print)
|
1676
|
+
outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
|
1677
|
+
already_processed = set()
|
1678
|
+
self._exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='account')
|
1679
|
+
if self.has__content():
|
1680
|
+
outfile.write('>%s' % (eol_, ))
|
1681
|
+
self._exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='account', pretty_print=pretty_print)
|
1682
|
+
showIndent(outfile, level, pretty_print)
|
1683
|
+
outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
|
1684
|
+
else:
|
1685
|
+
outfile.write('/>%s' % (eol_, ))
|
1686
|
+
def _exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='account'):
|
1687
|
+
pass
|
1688
|
+
def _exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='account', fromsubclass_=False, pretty_print=True):
|
1689
|
+
if pretty_print:
|
1690
|
+
eol_ = '\n'
|
1691
|
+
else:
|
1692
|
+
eol_ = ''
|
1693
|
+
if self.accountNumber is not None:
|
1694
|
+
namespaceprefix_ = self.accountNumber_nsprefix_ + ':' if (UseCapturedNS_ and self.accountNumber_nsprefix_) else ''
|
1695
|
+
showIndent(outfile, level, pretty_print)
|
1696
|
+
outfile.write('<%saccountNumber>%s</%saccountNumber>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.accountNumber), input_name='accountNumber')), namespaceprefix_ , eol_))
|
1697
|
+
if self.accountCountry is not None:
|
1698
|
+
namespaceprefix_ = self.accountCountry_nsprefix_ + ':' if (UseCapturedNS_ and self.accountCountry_nsprefix_) else ''
|
1699
|
+
showIndent(outfile, level, pretty_print)
|
1700
|
+
outfile.write('<%saccountCountry>%s</%saccountCountry>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.accountCountry), input_name='accountCountry')), namespaceprefix_ , eol_))
|
1701
|
+
def build(self, node, gds_collector_=None):
|
1702
|
+
self.gds_collector_ = gds_collector_
|
1703
|
+
if SaveElementTreeNode:
|
1704
|
+
self.gds_elementtree_node_ = node
|
1705
|
+
already_processed = set()
|
1706
|
+
self.ns_prefix_ = node.prefix
|
1707
|
+
self._buildAttributes(node, node.attrib, already_processed)
|
1708
|
+
for child in node:
|
1709
|
+
nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
|
1710
|
+
self._buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
|
1711
|
+
return self
|
1712
|
+
def _buildAttributes(self, node, attrs, already_processed):
|
1713
|
+
pass
|
1714
|
+
def _buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
|
1715
|
+
if nodeName_ == 'accountNumber':
|
1716
|
+
value_ = child_.text
|
1717
|
+
value_ = self.gds_parse_string(value_, node, 'accountNumber')
|
1718
|
+
value_ = self.gds_validate_string(value_, node, 'accountNumber')
|
1719
|
+
self.accountNumber = value_
|
1720
|
+
self.accountNumber_nsprefix_ = child_.prefix
|
1721
|
+
elif nodeName_ == 'accountCountry':
|
1722
|
+
value_ = child_.text
|
1723
|
+
value_ = self.gds_parse_string(value_, node, 'accountCountry')
|
1724
|
+
value_ = self.gds_validate_string(value_, node, 'accountCountry')
|
1725
|
+
self.accountCountry = value_
|
1726
|
+
self.accountCountry_nsprefix_ = child_.prefix
|
1727
|
+
# end class account
|
1728
|
+
|
1729
|
+
|
1730
|
+
class insurance(GeneratedsSuper):
|
1731
|
+
"""insuranceValue -- The value of the insurance required to cover the goodsValue
|
1732
|
+
specified in the request. This is limited to a maximum of 110% of the
|
1733
|
+
goodsValue
|
1734
|
+
goodsValue -- The value of the goods in the currency specified in the
|
1735
|
+
request
|
1736
|
+
|
1737
|
+
"""
|
1738
|
+
__hash__ = GeneratedsSuper.__hash__
|
1739
|
+
subclass = None
|
1740
|
+
superclass = None
|
1741
|
+
def __init__(self, insuranceValue=None, goodsValue=None, gds_collector_=None, **kwargs_):
|
1742
|
+
self.gds_collector_ = gds_collector_
|
1743
|
+
self.gds_elementtree_node_ = None
|
1744
|
+
self.original_tagname_ = None
|
1745
|
+
self.parent_object_ = kwargs_.get('parent_object_')
|
1746
|
+
self.ns_prefix_ = None
|
1747
|
+
self.insuranceValue = insuranceValue
|
1748
|
+
self.insuranceValue_nsprefix_ = None
|
1749
|
+
self.goodsValue = goodsValue
|
1750
|
+
self.goodsValue_nsprefix_ = None
|
1751
|
+
def factory(*args_, **kwargs_):
|
1752
|
+
if CurrentSubclassModule_ is not None:
|
1753
|
+
subclass = getSubclassFromModule_(
|
1754
|
+
CurrentSubclassModule_, insurance)
|
1755
|
+
if subclass is not None:
|
1756
|
+
return subclass(*args_, **kwargs_)
|
1757
|
+
if insurance.subclass:
|
1758
|
+
return insurance.subclass(*args_, **kwargs_)
|
1759
|
+
else:
|
1760
|
+
return insurance(*args_, **kwargs_)
|
1761
|
+
factory = staticmethod(factory)
|
1762
|
+
def get_ns_prefix_(self):
|
1763
|
+
return self.ns_prefix_
|
1764
|
+
def set_ns_prefix_(self, ns_prefix):
|
1765
|
+
self.ns_prefix_ = ns_prefix
|
1766
|
+
def get_insuranceValue(self):
|
1767
|
+
return self.insuranceValue
|
1768
|
+
def set_insuranceValue(self, insuranceValue):
|
1769
|
+
self.insuranceValue = insuranceValue
|
1770
|
+
def get_goodsValue(self):
|
1771
|
+
return self.goodsValue
|
1772
|
+
def set_goodsValue(self, goodsValue):
|
1773
|
+
self.goodsValue = goodsValue
|
1774
|
+
def has__content(self):
|
1775
|
+
if (
|
1776
|
+
self.insuranceValue is not None or
|
1777
|
+
self.goodsValue is not None
|
1778
|
+
):
|
1779
|
+
return True
|
1780
|
+
else:
|
1781
|
+
return False
|
1782
|
+
def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='insurance', pretty_print=True):
|
1783
|
+
imported_ns_def_ = GenerateDSNamespaceDefs_.get('insurance')
|
1784
|
+
if imported_ns_def_ is not None:
|
1785
|
+
namespacedef_ = imported_ns_def_
|
1786
|
+
if pretty_print:
|
1787
|
+
eol_ = '\n'
|
1788
|
+
else:
|
1789
|
+
eol_ = ''
|
1790
|
+
if self.original_tagname_ is not None and name_ == 'insurance':
|
1791
|
+
name_ = self.original_tagname_
|
1792
|
+
if UseCapturedNS_ and self.ns_prefix_:
|
1793
|
+
namespaceprefix_ = self.ns_prefix_ + ':'
|
1794
|
+
showIndent(outfile, level, pretty_print)
|
1795
|
+
outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
|
1796
|
+
already_processed = set()
|
1797
|
+
self._exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='insurance')
|
1798
|
+
if self.has__content():
|
1799
|
+
outfile.write('>%s' % (eol_, ))
|
1800
|
+
self._exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='insurance', pretty_print=pretty_print)
|
1801
|
+
showIndent(outfile, level, pretty_print)
|
1802
|
+
outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
|
1803
|
+
else:
|
1804
|
+
outfile.write('/>%s' % (eol_, ))
|
1805
|
+
def _exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='insurance'):
|
1806
|
+
pass
|
1807
|
+
def _exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='insurance', fromsubclass_=False, pretty_print=True):
|
1808
|
+
if pretty_print:
|
1809
|
+
eol_ = '\n'
|
1810
|
+
else:
|
1811
|
+
eol_ = ''
|
1812
|
+
if self.insuranceValue is not None:
|
1813
|
+
namespaceprefix_ = self.insuranceValue_nsprefix_ + ':' if (UseCapturedNS_ and self.insuranceValue_nsprefix_) else ''
|
1814
|
+
showIndent(outfile, level, pretty_print)
|
1815
|
+
outfile.write('<%sinsuranceValue>%s</%sinsuranceValue>%s' % (namespaceprefix_ , self.gds_format_decimal(self.insuranceValue, input_name='insuranceValue'), namespaceprefix_ , eol_))
|
1816
|
+
if self.goodsValue is not None:
|
1817
|
+
namespaceprefix_ = self.goodsValue_nsprefix_ + ':' if (UseCapturedNS_ and self.goodsValue_nsprefix_) else ''
|
1818
|
+
showIndent(outfile, level, pretty_print)
|
1819
|
+
outfile.write('<%sgoodsValue>%s</%sgoodsValue>%s' % (namespaceprefix_ , self.gds_format_decimal(self.goodsValue, input_name='goodsValue'), namespaceprefix_ , eol_))
|
1820
|
+
def build(self, node, gds_collector_=None):
|
1821
|
+
self.gds_collector_ = gds_collector_
|
1822
|
+
if SaveElementTreeNode:
|
1823
|
+
self.gds_elementtree_node_ = node
|
1824
|
+
already_processed = set()
|
1825
|
+
self.ns_prefix_ = node.prefix
|
1826
|
+
self._buildAttributes(node, node.attrib, already_processed)
|
1827
|
+
for child in node:
|
1828
|
+
nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
|
1829
|
+
self._buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
|
1830
|
+
return self
|
1831
|
+
def _buildAttributes(self, node, attrs, already_processed):
|
1832
|
+
pass
|
1833
|
+
def _buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
|
1834
|
+
if nodeName_ == 'insuranceValue' and child_.text:
|
1835
|
+
sval_ = child_.text
|
1836
|
+
fval_ = self.gds_parse_decimal(sval_, node, 'insuranceValue')
|
1837
|
+
fval_ = self.gds_validate_decimal(fval_, node, 'insuranceValue')
|
1838
|
+
self.insuranceValue = fval_
|
1839
|
+
self.insuranceValue_nsprefix_ = child_.prefix
|
1840
|
+
elif nodeName_ == 'goodsValue' and child_.text:
|
1841
|
+
sval_ = child_.text
|
1842
|
+
fval_ = self.gds_parse_decimal(sval_, node, 'goodsValue')
|
1843
|
+
fval_ = self.gds_validate_decimal(fval_, node, 'goodsValue')
|
1844
|
+
self.goodsValue = fval_
|
1845
|
+
self.goodsValue_nsprefix_ = child_.prefix
|
1846
|
+
# end class insurance
|
1847
|
+
|
1848
|
+
|
1849
|
+
class consignmentDetails(GeneratedsSuper):
|
1850
|
+
"""totalWeight -- The total weight of the shipment, Mandatory element, must be
|
1851
|
+
supplied in Kilograms.
|
1852
|
+
totalVolume -- The total volume of the shipment, Mandatory element if non
|
1853
|
+
document, must be supplied in cubic metres.
|
1854
|
+
totalNumberOfPieces -- The total number of pieces this priceCheck contains. In cases
|
1855
|
+
where only some of the pieces are being submitted, this value should contain
|
1856
|
+
the total number of pieces in the consignment, not the total number of
|
1857
|
+
pieces in the request.
|
1858
|
+
|
1859
|
+
"""
|
1860
|
+
__hash__ = GeneratedsSuper.__hash__
|
1861
|
+
subclass = None
|
1862
|
+
superclass = None
|
1863
|
+
def __init__(self, totalWeight=None, totalVolume=None, totalNumberOfPieces=None, gds_collector_=None, **kwargs_):
|
1864
|
+
self.gds_collector_ = gds_collector_
|
1865
|
+
self.gds_elementtree_node_ = None
|
1866
|
+
self.original_tagname_ = None
|
1867
|
+
self.parent_object_ = kwargs_.get('parent_object_')
|
1868
|
+
self.ns_prefix_ = None
|
1869
|
+
self.totalWeight = totalWeight
|
1870
|
+
self.totalWeight_nsprefix_ = None
|
1871
|
+
self.totalVolume = totalVolume
|
1872
|
+
self.totalVolume_nsprefix_ = None
|
1873
|
+
self.totalNumberOfPieces = totalNumberOfPieces
|
1874
|
+
self.totalNumberOfPieces_nsprefix_ = None
|
1875
|
+
def factory(*args_, **kwargs_):
|
1876
|
+
if CurrentSubclassModule_ is not None:
|
1877
|
+
subclass = getSubclassFromModule_(
|
1878
|
+
CurrentSubclassModule_, consignmentDetails)
|
1879
|
+
if subclass is not None:
|
1880
|
+
return subclass(*args_, **kwargs_)
|
1881
|
+
if consignmentDetails.subclass:
|
1882
|
+
return consignmentDetails.subclass(*args_, **kwargs_)
|
1883
|
+
else:
|
1884
|
+
return consignmentDetails(*args_, **kwargs_)
|
1885
|
+
factory = staticmethod(factory)
|
1886
|
+
def get_ns_prefix_(self):
|
1887
|
+
return self.ns_prefix_
|
1888
|
+
def set_ns_prefix_(self, ns_prefix):
|
1889
|
+
self.ns_prefix_ = ns_prefix
|
1890
|
+
def get_totalWeight(self):
|
1891
|
+
return self.totalWeight
|
1892
|
+
def set_totalWeight(self, totalWeight):
|
1893
|
+
self.totalWeight = totalWeight
|
1894
|
+
def get_totalVolume(self):
|
1895
|
+
return self.totalVolume
|
1896
|
+
def set_totalVolume(self, totalVolume):
|
1897
|
+
self.totalVolume = totalVolume
|
1898
|
+
def get_totalNumberOfPieces(self):
|
1899
|
+
return self.totalNumberOfPieces
|
1900
|
+
def set_totalNumberOfPieces(self, totalNumberOfPieces):
|
1901
|
+
self.totalNumberOfPieces = totalNumberOfPieces
|
1902
|
+
def has__content(self):
|
1903
|
+
if (
|
1904
|
+
self.totalWeight is not None or
|
1905
|
+
self.totalVolume is not None or
|
1906
|
+
self.totalNumberOfPieces is not None
|
1907
|
+
):
|
1908
|
+
return True
|
1909
|
+
else:
|
1910
|
+
return False
|
1911
|
+
def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='consignmentDetails', pretty_print=True):
|
1912
|
+
imported_ns_def_ = GenerateDSNamespaceDefs_.get('consignmentDetails')
|
1913
|
+
if imported_ns_def_ is not None:
|
1914
|
+
namespacedef_ = imported_ns_def_
|
1915
|
+
if pretty_print:
|
1916
|
+
eol_ = '\n'
|
1917
|
+
else:
|
1918
|
+
eol_ = ''
|
1919
|
+
if self.original_tagname_ is not None and name_ == 'consignmentDetails':
|
1920
|
+
name_ = self.original_tagname_
|
1921
|
+
if UseCapturedNS_ and self.ns_prefix_:
|
1922
|
+
namespaceprefix_ = self.ns_prefix_ + ':'
|
1923
|
+
showIndent(outfile, level, pretty_print)
|
1924
|
+
outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
|
1925
|
+
already_processed = set()
|
1926
|
+
self._exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='consignmentDetails')
|
1927
|
+
if self.has__content():
|
1928
|
+
outfile.write('>%s' % (eol_, ))
|
1929
|
+
self._exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='consignmentDetails', pretty_print=pretty_print)
|
1930
|
+
showIndent(outfile, level, pretty_print)
|
1931
|
+
outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
|
1932
|
+
else:
|
1933
|
+
outfile.write('/>%s' % (eol_, ))
|
1934
|
+
def _exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='consignmentDetails'):
|
1935
|
+
pass
|
1936
|
+
def _exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='consignmentDetails', fromsubclass_=False, pretty_print=True):
|
1937
|
+
if pretty_print:
|
1938
|
+
eol_ = '\n'
|
1939
|
+
else:
|
1940
|
+
eol_ = ''
|
1941
|
+
if self.totalWeight is not None:
|
1942
|
+
namespaceprefix_ = self.totalWeight_nsprefix_ + ':' if (UseCapturedNS_ and self.totalWeight_nsprefix_) else ''
|
1943
|
+
showIndent(outfile, level, pretty_print)
|
1944
|
+
outfile.write('<%stotalWeight>%s</%stotalWeight>%s' % (namespaceprefix_ , self.gds_format_decimal(self.totalWeight, input_name='totalWeight'), namespaceprefix_ , eol_))
|
1945
|
+
if self.totalVolume is not None:
|
1946
|
+
namespaceprefix_ = self.totalVolume_nsprefix_ + ':' if (UseCapturedNS_ and self.totalVolume_nsprefix_) else ''
|
1947
|
+
showIndent(outfile, level, pretty_print)
|
1948
|
+
outfile.write('<%stotalVolume>%s</%stotalVolume>%s' % (namespaceprefix_ , self.gds_format_decimal(self.totalVolume, input_name='totalVolume'), namespaceprefix_ , eol_))
|
1949
|
+
if self.totalNumberOfPieces is not None:
|
1950
|
+
namespaceprefix_ = self.totalNumberOfPieces_nsprefix_ + ':' if (UseCapturedNS_ and self.totalNumberOfPieces_nsprefix_) else ''
|
1951
|
+
showIndent(outfile, level, pretty_print)
|
1952
|
+
outfile.write('<%stotalNumberOfPieces>%s</%stotalNumberOfPieces>%s' % (namespaceprefix_ , self.gds_format_integer(self.totalNumberOfPieces, input_name='totalNumberOfPieces'), namespaceprefix_ , eol_))
|
1953
|
+
def build(self, node, gds_collector_=None):
|
1954
|
+
self.gds_collector_ = gds_collector_
|
1955
|
+
if SaveElementTreeNode:
|
1956
|
+
self.gds_elementtree_node_ = node
|
1957
|
+
already_processed = set()
|
1958
|
+
self.ns_prefix_ = node.prefix
|
1959
|
+
self._buildAttributes(node, node.attrib, already_processed)
|
1960
|
+
for child in node:
|
1961
|
+
nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
|
1962
|
+
self._buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
|
1963
|
+
return self
|
1964
|
+
def _buildAttributes(self, node, attrs, already_processed):
|
1965
|
+
pass
|
1966
|
+
def _buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
|
1967
|
+
if nodeName_ == 'totalWeight' and child_.text:
|
1968
|
+
sval_ = child_.text
|
1969
|
+
fval_ = self.gds_parse_decimal(sval_, node, 'totalWeight')
|
1970
|
+
fval_ = self.gds_validate_decimal(fval_, node, 'totalWeight')
|
1971
|
+
self.totalWeight = fval_
|
1972
|
+
self.totalWeight_nsprefix_ = child_.prefix
|
1973
|
+
elif nodeName_ == 'totalVolume' and child_.text:
|
1974
|
+
sval_ = child_.text
|
1975
|
+
fval_ = self.gds_parse_decimal(sval_, node, 'totalVolume')
|
1976
|
+
fval_ = self.gds_validate_decimal(fval_, node, 'totalVolume')
|
1977
|
+
self.totalVolume = fval_
|
1978
|
+
self.totalVolume_nsprefix_ = child_.prefix
|
1979
|
+
elif nodeName_ == 'totalNumberOfPieces' and child_.text:
|
1980
|
+
sval_ = child_.text
|
1981
|
+
ival_ = self.gds_parse_integer(sval_, node, 'totalNumberOfPieces')
|
1982
|
+
ival_ = self.gds_validate_integer(ival_, node, 'totalNumberOfPieces')
|
1983
|
+
self.totalNumberOfPieces = ival_
|
1984
|
+
self.totalNumberOfPieces_nsprefix_ = child_.prefix
|
1985
|
+
# end class consignmentDetails
|
1986
|
+
|
1987
|
+
|
1988
|
+
class pieceLine(GeneratedsSuper):
|
1989
|
+
"""numberOfPieces -- Number of pieces within this piece line.
|
1990
|
+
pieceMeasurements -- Container Element to hold the individual pieceLine
|
1991
|
+
measurements.
|
1992
|
+
pallet -- Whether the packages have been placed onto a pallet. The
|
1993
|
+
default value is false
|
1994
|
+
|
1995
|
+
"""
|
1996
|
+
__hash__ = GeneratedsSuper.__hash__
|
1997
|
+
subclass = None
|
1998
|
+
superclass = None
|
1999
|
+
def __init__(self, numberOfPieces=None, pieceMeasurements=None, pallet=False, gds_collector_=None, **kwargs_):
|
2000
|
+
self.gds_collector_ = gds_collector_
|
2001
|
+
self.gds_elementtree_node_ = None
|
2002
|
+
self.original_tagname_ = None
|
2003
|
+
self.parent_object_ = kwargs_.get('parent_object_')
|
2004
|
+
self.ns_prefix_ = None
|
2005
|
+
self.numberOfPieces = numberOfPieces
|
2006
|
+
self.numberOfPieces_nsprefix_ = None
|
2007
|
+
self.pieceMeasurements = pieceMeasurements
|
2008
|
+
self.pieceMeasurements_nsprefix_ = None
|
2009
|
+
self.pallet = pallet
|
2010
|
+
self.pallet_nsprefix_ = None
|
2011
|
+
def factory(*args_, **kwargs_):
|
2012
|
+
if CurrentSubclassModule_ is not None:
|
2013
|
+
subclass = getSubclassFromModule_(
|
2014
|
+
CurrentSubclassModule_, pieceLine)
|
2015
|
+
if subclass is not None:
|
2016
|
+
return subclass(*args_, **kwargs_)
|
2017
|
+
if pieceLine.subclass:
|
2018
|
+
return pieceLine.subclass(*args_, **kwargs_)
|
2019
|
+
else:
|
2020
|
+
return pieceLine(*args_, **kwargs_)
|
2021
|
+
factory = staticmethod(factory)
|
2022
|
+
def get_ns_prefix_(self):
|
2023
|
+
return self.ns_prefix_
|
2024
|
+
def set_ns_prefix_(self, ns_prefix):
|
2025
|
+
self.ns_prefix_ = ns_prefix
|
2026
|
+
def get_numberOfPieces(self):
|
2027
|
+
return self.numberOfPieces
|
2028
|
+
def set_numberOfPieces(self, numberOfPieces):
|
2029
|
+
self.numberOfPieces = numberOfPieces
|
2030
|
+
def get_pieceMeasurements(self):
|
2031
|
+
return self.pieceMeasurements
|
2032
|
+
def set_pieceMeasurements(self, pieceMeasurements):
|
2033
|
+
self.pieceMeasurements = pieceMeasurements
|
2034
|
+
def get_pallet(self):
|
2035
|
+
return self.pallet
|
2036
|
+
def set_pallet(self, pallet):
|
2037
|
+
self.pallet = pallet
|
2038
|
+
def has__content(self):
|
2039
|
+
if (
|
2040
|
+
self.numberOfPieces is not None or
|
2041
|
+
self.pieceMeasurements is not None or
|
2042
|
+
self.pallet
|
2043
|
+
):
|
2044
|
+
return True
|
2045
|
+
else:
|
2046
|
+
return False
|
2047
|
+
def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='pieceLine', pretty_print=True):
|
2048
|
+
imported_ns_def_ = GenerateDSNamespaceDefs_.get('pieceLine')
|
2049
|
+
if imported_ns_def_ is not None:
|
2050
|
+
namespacedef_ = imported_ns_def_
|
2051
|
+
if pretty_print:
|
2052
|
+
eol_ = '\n'
|
2053
|
+
else:
|
2054
|
+
eol_ = ''
|
2055
|
+
if self.original_tagname_ is not None and name_ == 'pieceLine':
|
2056
|
+
name_ = self.original_tagname_
|
2057
|
+
if UseCapturedNS_ and self.ns_prefix_:
|
2058
|
+
namespaceprefix_ = self.ns_prefix_ + ':'
|
2059
|
+
showIndent(outfile, level, pretty_print)
|
2060
|
+
outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
|
2061
|
+
already_processed = set()
|
2062
|
+
self._exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='pieceLine')
|
2063
|
+
if self.has__content():
|
2064
|
+
outfile.write('>%s' % (eol_, ))
|
2065
|
+
self._exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='pieceLine', pretty_print=pretty_print)
|
2066
|
+
showIndent(outfile, level, pretty_print)
|
2067
|
+
outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
|
2068
|
+
else:
|
2069
|
+
outfile.write('/>%s' % (eol_, ))
|
2070
|
+
def _exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='pieceLine'):
|
2071
|
+
pass
|
2072
|
+
def _exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='pieceLine', fromsubclass_=False, pretty_print=True):
|
2073
|
+
if pretty_print:
|
2074
|
+
eol_ = '\n'
|
2075
|
+
else:
|
2076
|
+
eol_ = ''
|
2077
|
+
if self.numberOfPieces is not None:
|
2078
|
+
namespaceprefix_ = self.numberOfPieces_nsprefix_ + ':' if (UseCapturedNS_ and self.numberOfPieces_nsprefix_) else ''
|
2079
|
+
showIndent(outfile, level, pretty_print)
|
2080
|
+
outfile.write('<%snumberOfPieces>%s</%snumberOfPieces>%s' % (namespaceprefix_ , self.gds_format_integer(self.numberOfPieces, input_name='numberOfPieces'), namespaceprefix_ , eol_))
|
2081
|
+
if self.pieceMeasurements is not None:
|
2082
|
+
namespaceprefix_ = self.pieceMeasurements_nsprefix_ + ':' if (UseCapturedNS_ and self.pieceMeasurements_nsprefix_) else ''
|
2083
|
+
self.pieceMeasurements.export(outfile, level, namespaceprefix_, namespacedef_='', name_='pieceMeasurements', pretty_print=pretty_print)
|
2084
|
+
if self.pallet is not None:
|
2085
|
+
namespaceprefix_ = self.pallet_nsprefix_ + ':' if (UseCapturedNS_ and self.pallet_nsprefix_) else ''
|
2086
|
+
showIndent(outfile, level, pretty_print)
|
2087
|
+
outfile.write('<%spallet>%s</%spallet>%s' % (namespaceprefix_ , self.gds_format_boolean(self.pallet, input_name='pallet'), namespaceprefix_ , eol_))
|
2088
|
+
if self.pallet is None:
|
2089
|
+
namespaceprefix_ = self.pallet_nsprefix_ + ':' if (UseCapturedNS_ and self.pallet_nsprefix_) else ''
|
2090
|
+
showIndent(outfile, level, pretty_print)
|
2091
|
+
outfile.write('<%spallet>false</%spallet/>%s' % (namespaceprefix_,namespace_prefix, eol_))
|
2092
|
+
def build(self, node, gds_collector_=None):
|
2093
|
+
self.gds_collector_ = gds_collector_
|
2094
|
+
if SaveElementTreeNode:
|
2095
|
+
self.gds_elementtree_node_ = node
|
2096
|
+
already_processed = set()
|
2097
|
+
self.ns_prefix_ = node.prefix
|
2098
|
+
self._buildAttributes(node, node.attrib, already_processed)
|
2099
|
+
for child in node:
|
2100
|
+
nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
|
2101
|
+
self._buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
|
2102
|
+
return self
|
2103
|
+
def _buildAttributes(self, node, attrs, already_processed):
|
2104
|
+
pass
|
2105
|
+
def _buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
|
2106
|
+
if nodeName_ == 'numberOfPieces' and child_.text:
|
2107
|
+
sval_ = child_.text
|
2108
|
+
ival_ = self.gds_parse_integer(sval_, node, 'numberOfPieces')
|
2109
|
+
ival_ = self.gds_validate_integer(ival_, node, 'numberOfPieces')
|
2110
|
+
self.numberOfPieces = ival_
|
2111
|
+
self.numberOfPieces_nsprefix_ = child_.prefix
|
2112
|
+
elif nodeName_ == 'pieceMeasurements':
|
2113
|
+
obj_ = pieceMeasurements.factory(parent_object_=self)
|
2114
|
+
obj_.build(child_, gds_collector_=gds_collector_)
|
2115
|
+
self.pieceMeasurements = obj_
|
2116
|
+
obj_.original_tagname_ = 'pieceMeasurements'
|
2117
|
+
elif nodeName_ == 'pallet':
|
2118
|
+
sval_ = child_.text
|
2119
|
+
ival_ = self.gds_parse_boolean(sval_, node, 'pallet')
|
2120
|
+
ival_ = self.gds_validate_boolean(ival_, node, 'pallet')
|
2121
|
+
self.pallet = ival_
|
2122
|
+
self.pallet_nsprefix_ = child_.prefix
|
2123
|
+
# end class pieceLine
|
2124
|
+
|
2125
|
+
|
2126
|
+
class pieceMeasurements(GeneratedsSuper):
|
2127
|
+
"""length -- The length in metres.
|
2128
|
+
width -- The width in metres.
|
2129
|
+
height -- The height in metres.
|
2130
|
+
weight -- The weight of an individual piece in Kilograms
|
2131
|
+
|
2132
|
+
"""
|
2133
|
+
__hash__ = GeneratedsSuper.__hash__
|
2134
|
+
subclass = None
|
2135
|
+
superclass = None
|
2136
|
+
def __init__(self, length=None, width=None, height=None, weight=None, gds_collector_=None, **kwargs_):
|
2137
|
+
self.gds_collector_ = gds_collector_
|
2138
|
+
self.gds_elementtree_node_ = None
|
2139
|
+
self.original_tagname_ = None
|
2140
|
+
self.parent_object_ = kwargs_.get('parent_object_')
|
2141
|
+
self.ns_prefix_ = None
|
2142
|
+
self.length = length
|
2143
|
+
self.length_nsprefix_ = None
|
2144
|
+
self.width = width
|
2145
|
+
self.width_nsprefix_ = None
|
2146
|
+
self.height = height
|
2147
|
+
self.height_nsprefix_ = None
|
2148
|
+
self.weight = weight
|
2149
|
+
self.weight_nsprefix_ = None
|
2150
|
+
def factory(*args_, **kwargs_):
|
2151
|
+
if CurrentSubclassModule_ is not None:
|
2152
|
+
subclass = getSubclassFromModule_(
|
2153
|
+
CurrentSubclassModule_, pieceMeasurements)
|
2154
|
+
if subclass is not None:
|
2155
|
+
return subclass(*args_, **kwargs_)
|
2156
|
+
if pieceMeasurements.subclass:
|
2157
|
+
return pieceMeasurements.subclass(*args_, **kwargs_)
|
2158
|
+
else:
|
2159
|
+
return pieceMeasurements(*args_, **kwargs_)
|
2160
|
+
factory = staticmethod(factory)
|
2161
|
+
def get_ns_prefix_(self):
|
2162
|
+
return self.ns_prefix_
|
2163
|
+
def set_ns_prefix_(self, ns_prefix):
|
2164
|
+
self.ns_prefix_ = ns_prefix
|
2165
|
+
def get_length(self):
|
2166
|
+
return self.length
|
2167
|
+
def set_length(self, length):
|
2168
|
+
self.length = length
|
2169
|
+
def get_width(self):
|
2170
|
+
return self.width
|
2171
|
+
def set_width(self, width):
|
2172
|
+
self.width = width
|
2173
|
+
def get_height(self):
|
2174
|
+
return self.height
|
2175
|
+
def set_height(self, height):
|
2176
|
+
self.height = height
|
2177
|
+
def get_weight(self):
|
2178
|
+
return self.weight
|
2179
|
+
def set_weight(self, weight):
|
2180
|
+
self.weight = weight
|
2181
|
+
def has__content(self):
|
2182
|
+
if (
|
2183
|
+
self.length is not None or
|
2184
|
+
self.width is not None or
|
2185
|
+
self.height is not None or
|
2186
|
+
self.weight is not None
|
2187
|
+
):
|
2188
|
+
return True
|
2189
|
+
else:
|
2190
|
+
return False
|
2191
|
+
def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='pieceMeasurements', pretty_print=True):
|
2192
|
+
imported_ns_def_ = GenerateDSNamespaceDefs_.get('pieceMeasurements')
|
2193
|
+
if imported_ns_def_ is not None:
|
2194
|
+
namespacedef_ = imported_ns_def_
|
2195
|
+
if pretty_print:
|
2196
|
+
eol_ = '\n'
|
2197
|
+
else:
|
2198
|
+
eol_ = ''
|
2199
|
+
if self.original_tagname_ is not None and name_ == 'pieceMeasurements':
|
2200
|
+
name_ = self.original_tagname_
|
2201
|
+
if UseCapturedNS_ and self.ns_prefix_:
|
2202
|
+
namespaceprefix_ = self.ns_prefix_ + ':'
|
2203
|
+
showIndent(outfile, level, pretty_print)
|
2204
|
+
outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
|
2205
|
+
already_processed = set()
|
2206
|
+
self._exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='pieceMeasurements')
|
2207
|
+
if self.has__content():
|
2208
|
+
outfile.write('>%s' % (eol_, ))
|
2209
|
+
self._exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='pieceMeasurements', pretty_print=pretty_print)
|
2210
|
+
showIndent(outfile, level, pretty_print)
|
2211
|
+
outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
|
2212
|
+
else:
|
2213
|
+
outfile.write('/>%s' % (eol_, ))
|
2214
|
+
def _exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='pieceMeasurements'):
|
2215
|
+
pass
|
2216
|
+
def _exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='pieceMeasurements', fromsubclass_=False, pretty_print=True):
|
2217
|
+
if pretty_print:
|
2218
|
+
eol_ = '\n'
|
2219
|
+
else:
|
2220
|
+
eol_ = ''
|
2221
|
+
if self.length is not None:
|
2222
|
+
namespaceprefix_ = self.length_nsprefix_ + ':' if (UseCapturedNS_ and self.length_nsprefix_) else ''
|
2223
|
+
showIndent(outfile, level, pretty_print)
|
2224
|
+
outfile.write('<%slength>%s</%slength>%s' % (namespaceprefix_ , self.gds_format_decimal(self.length, input_name='length'), namespaceprefix_ , eol_))
|
2225
|
+
if self.width is not None:
|
2226
|
+
namespaceprefix_ = self.width_nsprefix_ + ':' if (UseCapturedNS_ and self.width_nsprefix_) else ''
|
2227
|
+
showIndent(outfile, level, pretty_print)
|
2228
|
+
outfile.write('<%swidth>%s</%swidth>%s' % (namespaceprefix_ , self.gds_format_decimal(self.width, input_name='width'), namespaceprefix_ , eol_))
|
2229
|
+
if self.height is not None:
|
2230
|
+
namespaceprefix_ = self.height_nsprefix_ + ':' if (UseCapturedNS_ and self.height_nsprefix_) else ''
|
2231
|
+
showIndent(outfile, level, pretty_print)
|
2232
|
+
outfile.write('<%sheight>%s</%sheight>%s' % (namespaceprefix_ , self.gds_format_decimal(self.height, input_name='height'), namespaceprefix_ , eol_))
|
2233
|
+
if self.weight is not None:
|
2234
|
+
namespaceprefix_ = self.weight_nsprefix_ + ':' if (UseCapturedNS_ and self.weight_nsprefix_) else ''
|
2235
|
+
showIndent(outfile, level, pretty_print)
|
2236
|
+
outfile.write('<%sweight>%s</%sweight>%s' % (namespaceprefix_ , self.gds_format_decimal(self.weight, input_name='weight'), namespaceprefix_ , eol_))
|
2237
|
+
def build(self, node, gds_collector_=None):
|
2238
|
+
self.gds_collector_ = gds_collector_
|
2239
|
+
if SaveElementTreeNode:
|
2240
|
+
self.gds_elementtree_node_ = node
|
2241
|
+
already_processed = set()
|
2242
|
+
self.ns_prefix_ = node.prefix
|
2243
|
+
self._buildAttributes(node, node.attrib, already_processed)
|
2244
|
+
for child in node:
|
2245
|
+
nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
|
2246
|
+
self._buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
|
2247
|
+
return self
|
2248
|
+
def _buildAttributes(self, node, attrs, already_processed):
|
2249
|
+
pass
|
2250
|
+
def _buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
|
2251
|
+
if nodeName_ == 'length' and child_.text:
|
2252
|
+
sval_ = child_.text
|
2253
|
+
fval_ = self.gds_parse_decimal(sval_, node, 'length')
|
2254
|
+
fval_ = self.gds_validate_decimal(fval_, node, 'length')
|
2255
|
+
self.length = fval_
|
2256
|
+
self.length_nsprefix_ = child_.prefix
|
2257
|
+
elif nodeName_ == 'width' and child_.text:
|
2258
|
+
sval_ = child_.text
|
2259
|
+
fval_ = self.gds_parse_decimal(sval_, node, 'width')
|
2260
|
+
fval_ = self.gds_validate_decimal(fval_, node, 'width')
|
2261
|
+
self.width = fval_
|
2262
|
+
self.width_nsprefix_ = child_.prefix
|
2263
|
+
elif nodeName_ == 'height' and child_.text:
|
2264
|
+
sval_ = child_.text
|
2265
|
+
fval_ = self.gds_parse_decimal(sval_, node, 'height')
|
2266
|
+
fval_ = self.gds_validate_decimal(fval_, node, 'height')
|
2267
|
+
self.height = fval_
|
2268
|
+
self.height_nsprefix_ = child_.prefix
|
2269
|
+
elif nodeName_ == 'weight' and child_.text:
|
2270
|
+
sval_ = child_.text
|
2271
|
+
fval_ = self.gds_parse_decimal(sval_, node, 'weight')
|
2272
|
+
fval_ = self.gds_validate_decimal(fval_, node, 'weight')
|
2273
|
+
self.weight = fval_
|
2274
|
+
self.weight_nsprefix_ = child_.prefix
|
2275
|
+
# end class pieceMeasurements
|
2276
|
+
|
2277
|
+
|
2278
|
+
class product(GeneratedsSuper):
|
2279
|
+
"""id -- The identifier for the requested product/service e.g. 15N.
|
2280
|
+
division -- The identifier for the requested product/service division.
|
2281
|
+
This is an optional element and if not specified will default to an
|
2282
|
+
appropriate division based on the origin and destination country selected
|
2283
|
+
productDesc -- A short description of the product e.g. Express
|
2284
|
+
type -- Type of service for product chosen. Values are "D" for a
|
2285
|
+
document or "N" for non-documents. This is a mandatory element.
|
2286
|
+
options -- A container element for TNT product option codes.
|
2287
|
+
|
2288
|
+
"""
|
2289
|
+
__hash__ = GeneratedsSuper.__hash__
|
2290
|
+
subclass = None
|
2291
|
+
superclass = None
|
2292
|
+
def __init__(self, id=None, division=None, productDesc=None, type_=None, options=None, gds_collector_=None, **kwargs_):
|
2293
|
+
self.gds_collector_ = gds_collector_
|
2294
|
+
self.gds_elementtree_node_ = None
|
2295
|
+
self.original_tagname_ = None
|
2296
|
+
self.parent_object_ = kwargs_.get('parent_object_')
|
2297
|
+
self.ns_prefix_ = None
|
2298
|
+
self.id = id
|
2299
|
+
self.id_nsprefix_ = None
|
2300
|
+
self.division = division
|
2301
|
+
self.division_nsprefix_ = None
|
2302
|
+
self.productDesc = productDesc
|
2303
|
+
self.productDesc_nsprefix_ = None
|
2304
|
+
self.type_ = type_
|
2305
|
+
self.type__nsprefix_ = None
|
2306
|
+
self.options = options
|
2307
|
+
self.options_nsprefix_ = None
|
2308
|
+
def factory(*args_, **kwargs_):
|
2309
|
+
if CurrentSubclassModule_ is not None:
|
2310
|
+
subclass = getSubclassFromModule_(
|
2311
|
+
CurrentSubclassModule_, product)
|
2312
|
+
if subclass is not None:
|
2313
|
+
return subclass(*args_, **kwargs_)
|
2314
|
+
if product.subclass:
|
2315
|
+
return product.subclass(*args_, **kwargs_)
|
2316
|
+
else:
|
2317
|
+
return product(*args_, **kwargs_)
|
2318
|
+
factory = staticmethod(factory)
|
2319
|
+
def get_ns_prefix_(self):
|
2320
|
+
return self.ns_prefix_
|
2321
|
+
def set_ns_prefix_(self, ns_prefix):
|
2322
|
+
self.ns_prefix_ = ns_prefix
|
2323
|
+
def get_id(self):
|
2324
|
+
return self.id
|
2325
|
+
def set_id(self, id):
|
2326
|
+
self.id = id
|
2327
|
+
def get_division(self):
|
2328
|
+
return self.division
|
2329
|
+
def set_division(self, division):
|
2330
|
+
self.division = division
|
2331
|
+
def get_productDesc(self):
|
2332
|
+
return self.productDesc
|
2333
|
+
def set_productDesc(self, productDesc):
|
2334
|
+
self.productDesc = productDesc
|
2335
|
+
def get_type(self):
|
2336
|
+
return self.type_
|
2337
|
+
def set_type(self, type_):
|
2338
|
+
self.type_ = type_
|
2339
|
+
def get_options(self):
|
2340
|
+
return self.options
|
2341
|
+
def set_options(self, options):
|
2342
|
+
self.options = options
|
2343
|
+
def has__content(self):
|
2344
|
+
if (
|
2345
|
+
self.id is not None or
|
2346
|
+
self.division is not None or
|
2347
|
+
self.productDesc is not None or
|
2348
|
+
self.type_ is not None or
|
2349
|
+
self.options is not None
|
2350
|
+
):
|
2351
|
+
return True
|
2352
|
+
else:
|
2353
|
+
return False
|
2354
|
+
def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='product', pretty_print=True):
|
2355
|
+
imported_ns_def_ = GenerateDSNamespaceDefs_.get('product')
|
2356
|
+
if imported_ns_def_ is not None:
|
2357
|
+
namespacedef_ = imported_ns_def_
|
2358
|
+
if pretty_print:
|
2359
|
+
eol_ = '\n'
|
2360
|
+
else:
|
2361
|
+
eol_ = ''
|
2362
|
+
if self.original_tagname_ is not None and name_ == 'product':
|
2363
|
+
name_ = self.original_tagname_
|
2364
|
+
if UseCapturedNS_ and self.ns_prefix_:
|
2365
|
+
namespaceprefix_ = self.ns_prefix_ + ':'
|
2366
|
+
showIndent(outfile, level, pretty_print)
|
2367
|
+
outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
|
2368
|
+
already_processed = set()
|
2369
|
+
self._exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='product')
|
2370
|
+
if self.has__content():
|
2371
|
+
outfile.write('>%s' % (eol_, ))
|
2372
|
+
self._exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='product', pretty_print=pretty_print)
|
2373
|
+
showIndent(outfile, level, pretty_print)
|
2374
|
+
outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
|
2375
|
+
else:
|
2376
|
+
outfile.write('/>%s' % (eol_, ))
|
2377
|
+
def _exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='product'):
|
2378
|
+
pass
|
2379
|
+
def _exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='product', fromsubclass_=False, pretty_print=True):
|
2380
|
+
if pretty_print:
|
2381
|
+
eol_ = '\n'
|
2382
|
+
else:
|
2383
|
+
eol_ = ''
|
2384
|
+
if self.id is not None:
|
2385
|
+
namespaceprefix_ = self.id_nsprefix_ + ':' if (UseCapturedNS_ and self.id_nsprefix_) else ''
|
2386
|
+
showIndent(outfile, level, pretty_print)
|
2387
|
+
outfile.write('<%sid>%s</%sid>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.id), input_name='id')), namespaceprefix_ , eol_))
|
2388
|
+
if self.division is not None:
|
2389
|
+
namespaceprefix_ = self.division_nsprefix_ + ':' if (UseCapturedNS_ and self.division_nsprefix_) else ''
|
2390
|
+
showIndent(outfile, level, pretty_print)
|
2391
|
+
outfile.write('<%sdivision>%s</%sdivision>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.division), input_name='division')), namespaceprefix_ , eol_))
|
2392
|
+
if self.productDesc is not None:
|
2393
|
+
namespaceprefix_ = self.productDesc_nsprefix_ + ':' if (UseCapturedNS_ and self.productDesc_nsprefix_) else ''
|
2394
|
+
showIndent(outfile, level, pretty_print)
|
2395
|
+
outfile.write('<%sproductDesc>%s</%sproductDesc>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.productDesc), input_name='productDesc')), namespaceprefix_ , eol_))
|
2396
|
+
if self.type_ is not None:
|
2397
|
+
namespaceprefix_ = self.type__nsprefix_ + ':' if (UseCapturedNS_ and self.type__nsprefix_) else ''
|
2398
|
+
showIndent(outfile, level, pretty_print)
|
2399
|
+
outfile.write('<%stype>%s</%stype>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.type_), input_name='type')), namespaceprefix_ , eol_))
|
2400
|
+
if self.options is not None:
|
2401
|
+
namespaceprefix_ = self.options_nsprefix_ + ':' if (UseCapturedNS_ and self.options_nsprefix_) else ''
|
2402
|
+
self.options.export(outfile, level, namespaceprefix_, namespacedef_='', name_='options', pretty_print=pretty_print)
|
2403
|
+
def build(self, node, gds_collector_=None):
|
2404
|
+
self.gds_collector_ = gds_collector_
|
2405
|
+
if SaveElementTreeNode:
|
2406
|
+
self.gds_elementtree_node_ = node
|
2407
|
+
already_processed = set()
|
2408
|
+
self.ns_prefix_ = node.prefix
|
2409
|
+
self._buildAttributes(node, node.attrib, already_processed)
|
2410
|
+
for child in node:
|
2411
|
+
nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
|
2412
|
+
self._buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
|
2413
|
+
return self
|
2414
|
+
def _buildAttributes(self, node, attrs, already_processed):
|
2415
|
+
pass
|
2416
|
+
def _buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
|
2417
|
+
if nodeName_ == 'id':
|
2418
|
+
value_ = child_.text
|
2419
|
+
value_ = self.gds_parse_string(value_, node, 'id')
|
2420
|
+
value_ = self.gds_validate_string(value_, node, 'id')
|
2421
|
+
self.id = value_
|
2422
|
+
self.id_nsprefix_ = child_.prefix
|
2423
|
+
elif nodeName_ == 'division':
|
2424
|
+
value_ = child_.text
|
2425
|
+
value_ = self.gds_parse_string(value_, node, 'division')
|
2426
|
+
value_ = self.gds_validate_string(value_, node, 'division')
|
2427
|
+
self.division = value_
|
2428
|
+
self.division_nsprefix_ = child_.prefix
|
2429
|
+
elif nodeName_ == 'productDesc':
|
2430
|
+
value_ = child_.text
|
2431
|
+
value_ = self.gds_parse_string(value_, node, 'productDesc')
|
2432
|
+
value_ = self.gds_validate_string(value_, node, 'productDesc')
|
2433
|
+
self.productDesc = value_
|
2434
|
+
self.productDesc_nsprefix_ = child_.prefix
|
2435
|
+
elif nodeName_ == 'type':
|
2436
|
+
value_ = child_.text
|
2437
|
+
value_ = self.gds_parse_string(value_, node, 'type')
|
2438
|
+
value_ = self.gds_validate_string(value_, node, 'type')
|
2439
|
+
self.type_ = value_
|
2440
|
+
self.type_nsprefix_ = child_.prefix
|
2441
|
+
elif nodeName_ == 'options':
|
2442
|
+
obj_ = options.factory(parent_object_=self)
|
2443
|
+
obj_.build(child_, gds_collector_=gds_collector_)
|
2444
|
+
self.options = obj_
|
2445
|
+
obj_.original_tagname_ = 'options'
|
2446
|
+
# end class product
|
2447
|
+
|
2448
|
+
|
2449
|
+
class options(GeneratedsSuper):
|
2450
|
+
"""option -- A container element for a TNT product option
|
2451
|
+
|
2452
|
+
"""
|
2453
|
+
__hash__ = GeneratedsSuper.__hash__
|
2454
|
+
subclass = None
|
2455
|
+
superclass = None
|
2456
|
+
def __init__(self, option=None, gds_collector_=None, **kwargs_):
|
2457
|
+
self.gds_collector_ = gds_collector_
|
2458
|
+
self.gds_elementtree_node_ = None
|
2459
|
+
self.original_tagname_ = None
|
2460
|
+
self.parent_object_ = kwargs_.get('parent_object_')
|
2461
|
+
self.ns_prefix_ = None
|
2462
|
+
if option is None:
|
2463
|
+
self.option = []
|
2464
|
+
else:
|
2465
|
+
self.option = option
|
2466
|
+
self.option_nsprefix_ = None
|
2467
|
+
def factory(*args_, **kwargs_):
|
2468
|
+
if CurrentSubclassModule_ is not None:
|
2469
|
+
subclass = getSubclassFromModule_(
|
2470
|
+
CurrentSubclassModule_, options)
|
2471
|
+
if subclass is not None:
|
2472
|
+
return subclass(*args_, **kwargs_)
|
2473
|
+
if options.subclass:
|
2474
|
+
return options.subclass(*args_, **kwargs_)
|
2475
|
+
else:
|
2476
|
+
return options(*args_, **kwargs_)
|
2477
|
+
factory = staticmethod(factory)
|
2478
|
+
def get_ns_prefix_(self):
|
2479
|
+
return self.ns_prefix_
|
2480
|
+
def set_ns_prefix_(self, ns_prefix):
|
2481
|
+
self.ns_prefix_ = ns_prefix
|
2482
|
+
def get_option(self):
|
2483
|
+
return self.option
|
2484
|
+
def set_option(self, option):
|
2485
|
+
self.option = option
|
2486
|
+
def add_option(self, value):
|
2487
|
+
self.option.append(value)
|
2488
|
+
def insert_option_at(self, index, value):
|
2489
|
+
self.option.insert(index, value)
|
2490
|
+
def replace_option_at(self, index, value):
|
2491
|
+
self.option[index] = value
|
2492
|
+
def has__content(self):
|
2493
|
+
if (
|
2494
|
+
self.option
|
2495
|
+
):
|
2496
|
+
return True
|
2497
|
+
else:
|
2498
|
+
return False
|
2499
|
+
def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='options', pretty_print=True):
|
2500
|
+
imported_ns_def_ = GenerateDSNamespaceDefs_.get('options')
|
2501
|
+
if imported_ns_def_ is not None:
|
2502
|
+
namespacedef_ = imported_ns_def_
|
2503
|
+
if pretty_print:
|
2504
|
+
eol_ = '\n'
|
2505
|
+
else:
|
2506
|
+
eol_ = ''
|
2507
|
+
if self.original_tagname_ is not None and name_ == 'options':
|
2508
|
+
name_ = self.original_tagname_
|
2509
|
+
if UseCapturedNS_ and self.ns_prefix_:
|
2510
|
+
namespaceprefix_ = self.ns_prefix_ + ':'
|
2511
|
+
showIndent(outfile, level, pretty_print)
|
2512
|
+
outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
|
2513
|
+
already_processed = set()
|
2514
|
+
self._exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='options')
|
2515
|
+
if self.has__content():
|
2516
|
+
outfile.write('>%s' % (eol_, ))
|
2517
|
+
self._exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='options', pretty_print=pretty_print)
|
2518
|
+
showIndent(outfile, level, pretty_print)
|
2519
|
+
outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
|
2520
|
+
else:
|
2521
|
+
outfile.write('/>%s' % (eol_, ))
|
2522
|
+
def _exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='options'):
|
2523
|
+
pass
|
2524
|
+
def _exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='options', fromsubclass_=False, pretty_print=True):
|
2525
|
+
if pretty_print:
|
2526
|
+
eol_ = '\n'
|
2527
|
+
else:
|
2528
|
+
eol_ = ''
|
2529
|
+
for option_ in self.option:
|
2530
|
+
namespaceprefix_ = self.option_nsprefix_ + ':' if (UseCapturedNS_ and self.option_nsprefix_) else ''
|
2531
|
+
option_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='option', pretty_print=pretty_print)
|
2532
|
+
def build(self, node, gds_collector_=None):
|
2533
|
+
self.gds_collector_ = gds_collector_
|
2534
|
+
if SaveElementTreeNode:
|
2535
|
+
self.gds_elementtree_node_ = node
|
2536
|
+
already_processed = set()
|
2537
|
+
self.ns_prefix_ = node.prefix
|
2538
|
+
self._buildAttributes(node, node.attrib, already_processed)
|
2539
|
+
for child in node:
|
2540
|
+
nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
|
2541
|
+
self._buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
|
2542
|
+
return self
|
2543
|
+
def _buildAttributes(self, node, attrs, already_processed):
|
2544
|
+
pass
|
2545
|
+
def _buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
|
2546
|
+
if nodeName_ == 'option':
|
2547
|
+
obj_ = option.factory(parent_object_=self)
|
2548
|
+
obj_.build(child_, gds_collector_=gds_collector_)
|
2549
|
+
self.option.append(obj_)
|
2550
|
+
obj_.original_tagname_ = 'option'
|
2551
|
+
# end class options
|
2552
|
+
|
2553
|
+
|
2554
|
+
class option(GeneratedsSuper):
|
2555
|
+
"""optionCode -- The option must be a valid code from the TNT dataset e.g. PR
|
2556
|
+
optionDesc -- A short description of the option .e.g priority
|
2557
|
+
|
2558
|
+
"""
|
2559
|
+
__hash__ = GeneratedsSuper.__hash__
|
2560
|
+
subclass = None
|
2561
|
+
superclass = None
|
2562
|
+
def __init__(self, optionCode=None, optionDesc=None, gds_collector_=None, **kwargs_):
|
2563
|
+
self.gds_collector_ = gds_collector_
|
2564
|
+
self.gds_elementtree_node_ = None
|
2565
|
+
self.original_tagname_ = None
|
2566
|
+
self.parent_object_ = kwargs_.get('parent_object_')
|
2567
|
+
self.ns_prefix_ = None
|
2568
|
+
self.optionCode = optionCode
|
2569
|
+
self.optionCode_nsprefix_ = None
|
2570
|
+
self.optionDesc = optionDesc
|
2571
|
+
self.optionDesc_nsprefix_ = None
|
2572
|
+
def factory(*args_, **kwargs_):
|
2573
|
+
if CurrentSubclassModule_ is not None:
|
2574
|
+
subclass = getSubclassFromModule_(
|
2575
|
+
CurrentSubclassModule_, option)
|
2576
|
+
if subclass is not None:
|
2577
|
+
return subclass(*args_, **kwargs_)
|
2578
|
+
if option.subclass:
|
2579
|
+
return option.subclass(*args_, **kwargs_)
|
2580
|
+
else:
|
2581
|
+
return option(*args_, **kwargs_)
|
2582
|
+
factory = staticmethod(factory)
|
2583
|
+
def get_ns_prefix_(self):
|
2584
|
+
return self.ns_prefix_
|
2585
|
+
def set_ns_prefix_(self, ns_prefix):
|
2586
|
+
self.ns_prefix_ = ns_prefix
|
2587
|
+
def get_optionCode(self):
|
2588
|
+
return self.optionCode
|
2589
|
+
def set_optionCode(self, optionCode):
|
2590
|
+
self.optionCode = optionCode
|
2591
|
+
def get_optionDesc(self):
|
2592
|
+
return self.optionDesc
|
2593
|
+
def set_optionDesc(self, optionDesc):
|
2594
|
+
self.optionDesc = optionDesc
|
2595
|
+
def has__content(self):
|
2596
|
+
if (
|
2597
|
+
self.optionCode is not None or
|
2598
|
+
self.optionDesc is not None
|
2599
|
+
):
|
2600
|
+
return True
|
2601
|
+
else:
|
2602
|
+
return False
|
2603
|
+
def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='option', pretty_print=True):
|
2604
|
+
imported_ns_def_ = GenerateDSNamespaceDefs_.get('option')
|
2605
|
+
if imported_ns_def_ is not None:
|
2606
|
+
namespacedef_ = imported_ns_def_
|
2607
|
+
if pretty_print:
|
2608
|
+
eol_ = '\n'
|
2609
|
+
else:
|
2610
|
+
eol_ = ''
|
2611
|
+
if self.original_tagname_ is not None and name_ == 'option':
|
2612
|
+
name_ = self.original_tagname_
|
2613
|
+
if UseCapturedNS_ and self.ns_prefix_:
|
2614
|
+
namespaceprefix_ = self.ns_prefix_ + ':'
|
2615
|
+
showIndent(outfile, level, pretty_print)
|
2616
|
+
outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
|
2617
|
+
already_processed = set()
|
2618
|
+
self._exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='option')
|
2619
|
+
if self.has__content():
|
2620
|
+
outfile.write('>%s' % (eol_, ))
|
2621
|
+
self._exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='option', pretty_print=pretty_print)
|
2622
|
+
showIndent(outfile, level, pretty_print)
|
2623
|
+
outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
|
2624
|
+
else:
|
2625
|
+
outfile.write('/>%s' % (eol_, ))
|
2626
|
+
def _exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='option'):
|
2627
|
+
pass
|
2628
|
+
def _exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='option', fromsubclass_=False, pretty_print=True):
|
2629
|
+
if pretty_print:
|
2630
|
+
eol_ = '\n'
|
2631
|
+
else:
|
2632
|
+
eol_ = ''
|
2633
|
+
if self.optionCode is not None:
|
2634
|
+
namespaceprefix_ = self.optionCode_nsprefix_ + ':' if (UseCapturedNS_ and self.optionCode_nsprefix_) else ''
|
2635
|
+
showIndent(outfile, level, pretty_print)
|
2636
|
+
outfile.write('<%soptionCode>%s</%soptionCode>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.optionCode), input_name='optionCode')), namespaceprefix_ , eol_))
|
2637
|
+
if self.optionDesc is not None:
|
2638
|
+
namespaceprefix_ = self.optionDesc_nsprefix_ + ':' if (UseCapturedNS_ and self.optionDesc_nsprefix_) else ''
|
2639
|
+
showIndent(outfile, level, pretty_print)
|
2640
|
+
outfile.write('<%soptionDesc>%s</%soptionDesc>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.optionDesc), input_name='optionDesc')), namespaceprefix_ , eol_))
|
2641
|
+
def build(self, node, gds_collector_=None):
|
2642
|
+
self.gds_collector_ = gds_collector_
|
2643
|
+
if SaveElementTreeNode:
|
2644
|
+
self.gds_elementtree_node_ = node
|
2645
|
+
already_processed = set()
|
2646
|
+
self.ns_prefix_ = node.prefix
|
2647
|
+
self._buildAttributes(node, node.attrib, already_processed)
|
2648
|
+
for child in node:
|
2649
|
+
nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
|
2650
|
+
self._buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
|
2651
|
+
return self
|
2652
|
+
def _buildAttributes(self, node, attrs, already_processed):
|
2653
|
+
pass
|
2654
|
+
def _buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
|
2655
|
+
if nodeName_ == 'optionCode':
|
2656
|
+
value_ = child_.text
|
2657
|
+
value_ = self.gds_parse_string(value_, node, 'optionCode')
|
2658
|
+
value_ = self.gds_validate_string(value_, node, 'optionCode')
|
2659
|
+
self.optionCode = value_
|
2660
|
+
self.optionCode_nsprefix_ = child_.prefix
|
2661
|
+
elif nodeName_ == 'optionDesc':
|
2662
|
+
value_ = child_.text
|
2663
|
+
value_ = self.gds_parse_string(value_, node, 'optionDesc')
|
2664
|
+
value_ = self.gds_validate_string(value_, node, 'optionDesc')
|
2665
|
+
self.optionDesc = value_
|
2666
|
+
self.optionDesc_nsprefix_ = child_.prefix
|
2667
|
+
# end class option
|
2668
|
+
|
2669
|
+
|
2670
|
+
#
|
2671
|
+
# End data representation classes.
|
2672
|
+
#
|
2673
|
+
|
2674
|
+
|
2675
|
+
GDSClassesMapping = {
|
2676
|
+
}
|
2677
|
+
|
2678
|
+
|
2679
|
+
USAGE_TEXT = """
|
2680
|
+
Usage: python <Parser>.py [ -s ] <in_xml_file>
|
2681
|
+
"""
|
2682
|
+
|
2683
|
+
|
2684
|
+
def usage():
|
2685
|
+
print(USAGE_TEXT)
|
2686
|
+
sys.exit(1)
|
2687
|
+
|
2688
|
+
|
2689
|
+
def get_root_tag(node):
|
2690
|
+
tag = Tag_pattern_.match(node.tag).groups()[-1]
|
2691
|
+
prefix_tag = TagNamePrefix + tag
|
2692
|
+
rootClass = GDSClassesMapping.get(prefix_tag)
|
2693
|
+
if rootClass is None:
|
2694
|
+
rootClass = globals().get(prefix_tag)
|
2695
|
+
return tag, rootClass
|
2696
|
+
|
2697
|
+
|
2698
|
+
def get_required_ns_prefix_defs(rootNode):
|
2699
|
+
'''Get all name space prefix definitions required in this XML doc.
|
2700
|
+
Return a dictionary of definitions and a char string of definitions.
|
2701
|
+
'''
|
2702
|
+
nsmap = {
|
2703
|
+
prefix: uri
|
2704
|
+
for node in rootNode.iter()
|
2705
|
+
for (prefix, uri) in node.nsmap.items()
|
2706
|
+
if prefix is not None
|
2707
|
+
}
|
2708
|
+
namespacedefs = ' '.join([
|
2709
|
+
'xmlns:{}="{}"'.format(prefix, uri)
|
2710
|
+
for prefix, uri in nsmap.items()
|
2711
|
+
])
|
2712
|
+
return nsmap, namespacedefs
|
2713
|
+
|
2714
|
+
|
2715
|
+
def parse(inFileName, silence=False, print_warnings=True):
|
2716
|
+
global CapturedNsmap_
|
2717
|
+
gds_collector = GdsCollector_()
|
2718
|
+
parser = None
|
2719
|
+
doc = parsexml_(inFileName, parser)
|
2720
|
+
rootNode = doc.getroot()
|
2721
|
+
rootTag, rootClass = get_root_tag(rootNode)
|
2722
|
+
if rootClass is None:
|
2723
|
+
rootTag = 'priceRequest'
|
2724
|
+
rootClass = priceRequest
|
2725
|
+
rootObj = rootClass.factory()
|
2726
|
+
rootObj.build(rootNode, gds_collector_=gds_collector)
|
2727
|
+
CapturedNsmap_, namespacedefs = get_required_ns_prefix_defs(rootNode)
|
2728
|
+
if not SaveElementTreeNode:
|
2729
|
+
doc = None
|
2730
|
+
rootNode = None
|
2731
|
+
if not silence:
|
2732
|
+
sys.stdout.write('<?xml version="1.0" ?>\n')
|
2733
|
+
rootObj.export(
|
2734
|
+
sys.stdout, 0, name_=rootTag,
|
2735
|
+
namespacedef_=namespacedefs,
|
2736
|
+
pretty_print=True)
|
2737
|
+
if print_warnings and len(gds_collector.get_messages()) > 0:
|
2738
|
+
separator = ('-' * 50) + '\n'
|
2739
|
+
sys.stderr.write(separator)
|
2740
|
+
sys.stderr.write('----- Warnings -- count: {} -----\n'.format(
|
2741
|
+
len(gds_collector.get_messages()), ))
|
2742
|
+
gds_collector.write_messages(sys.stderr)
|
2743
|
+
sys.stderr.write(separator)
|
2744
|
+
return rootObj
|
2745
|
+
|
2746
|
+
|
2747
|
+
def parseEtree(inFileName, silence=False, print_warnings=True,
|
2748
|
+
mapping=None, reverse_mapping=None, nsmap=None):
|
2749
|
+
parser = None
|
2750
|
+
doc = parsexml_(inFileName, parser)
|
2751
|
+
gds_collector = GdsCollector_()
|
2752
|
+
rootNode = doc.getroot()
|
2753
|
+
rootTag, rootClass = get_root_tag(rootNode)
|
2754
|
+
if rootClass is None:
|
2755
|
+
rootTag = 'priceRequest'
|
2756
|
+
rootClass = priceRequest
|
2757
|
+
rootObj = rootClass.factory()
|
2758
|
+
rootObj.build(rootNode, gds_collector_=gds_collector)
|
2759
|
+
if mapping is None:
|
2760
|
+
mapping = {}
|
2761
|
+
if reverse_mapping is None:
|
2762
|
+
reverse_mapping = {}
|
2763
|
+
rootElement = rootObj.to_etree(
|
2764
|
+
None, name_=rootTag, mapping_=mapping,
|
2765
|
+
reverse_mapping_=reverse_mapping, nsmap_=nsmap)
|
2766
|
+
reverse_node_mapping = rootObj.gds_reverse_node_mapping(mapping)
|
2767
|
+
# Enable Python to collect the space used by the DOM.
|
2768
|
+
if not SaveElementTreeNode:
|
2769
|
+
doc = None
|
2770
|
+
rootNode = None
|
2771
|
+
if not silence:
|
2772
|
+
content = etree_.tostring(
|
2773
|
+
rootElement, pretty_print=True,
|
2774
|
+
xml_declaration=True, encoding="utf-8")
|
2775
|
+
sys.stdout.write(str(content))
|
2776
|
+
sys.stdout.write('\n')
|
2777
|
+
if print_warnings and len(gds_collector.get_messages()) > 0:
|
2778
|
+
separator = ('-' * 50) + '\n'
|
2779
|
+
sys.stderr.write(separator)
|
2780
|
+
sys.stderr.write('----- Warnings -- count: {} -----\n'.format(
|
2781
|
+
len(gds_collector.get_messages()), ))
|
2782
|
+
gds_collector.write_messages(sys.stderr)
|
2783
|
+
sys.stderr.write(separator)
|
2784
|
+
return rootObj, rootElement, mapping, reverse_node_mapping
|
2785
|
+
|
2786
|
+
|
2787
|
+
def parseString(inString, silence=False, print_warnings=True):
|
2788
|
+
'''Parse a string, create the object tree, and export it.
|
2789
|
+
|
2790
|
+
Arguments:
|
2791
|
+
- inString -- A string. This XML fragment should not start
|
2792
|
+
with an XML declaration containing an encoding.
|
2793
|
+
- silence -- A boolean. If False, export the object.
|
2794
|
+
Returns -- The root object in the tree.
|
2795
|
+
'''
|
2796
|
+
parser = None
|
2797
|
+
rootNode= parsexmlstring_(inString, parser)
|
2798
|
+
gds_collector = GdsCollector_()
|
2799
|
+
rootTag, rootClass = get_root_tag(rootNode)
|
2800
|
+
if rootClass is None:
|
2801
|
+
rootTag = 'priceRequest'
|
2802
|
+
rootClass = priceRequest
|
2803
|
+
rootObj = rootClass.factory()
|
2804
|
+
rootObj.build(rootNode, gds_collector_=gds_collector)
|
2805
|
+
if not SaveElementTreeNode:
|
2806
|
+
rootNode = None
|
2807
|
+
if not silence:
|
2808
|
+
sys.stdout.write('<?xml version="1.0" ?>\n')
|
2809
|
+
rootObj.export(
|
2810
|
+
sys.stdout, 0, name_=rootTag,
|
2811
|
+
namespacedef_='')
|
2812
|
+
if print_warnings and len(gds_collector.get_messages()) > 0:
|
2813
|
+
separator = ('-' * 50) + '\n'
|
2814
|
+
sys.stderr.write(separator)
|
2815
|
+
sys.stderr.write('----- Warnings -- count: {} -----\n'.format(
|
2816
|
+
len(gds_collector.get_messages()), ))
|
2817
|
+
gds_collector.write_messages(sys.stderr)
|
2818
|
+
sys.stderr.write(separator)
|
2819
|
+
return rootObj
|
2820
|
+
|
2821
|
+
|
2822
|
+
def parseLiteral(inFileName, silence=False, print_warnings=True):
|
2823
|
+
parser = None
|
2824
|
+
doc = parsexml_(inFileName, parser)
|
2825
|
+
gds_collector = GdsCollector_()
|
2826
|
+
rootNode = doc.getroot()
|
2827
|
+
rootTag, rootClass = get_root_tag(rootNode)
|
2828
|
+
if rootClass is None:
|
2829
|
+
rootTag = 'priceRequest'
|
2830
|
+
rootClass = priceRequest
|
2831
|
+
rootObj = rootClass.factory()
|
2832
|
+
rootObj.build(rootNode, gds_collector_=gds_collector)
|
2833
|
+
# Enable Python to collect the space used by the DOM.
|
2834
|
+
if not SaveElementTreeNode:
|
2835
|
+
doc = None
|
2836
|
+
rootNode = None
|
2837
|
+
if not silence:
|
2838
|
+
sys.stdout.write('#from rating_request import *\n\n')
|
2839
|
+
sys.stdout.write('import rating_request as model_\n\n')
|
2840
|
+
sys.stdout.write('rootObj = model_.rootClass(\n')
|
2841
|
+
rootObj.exportLiteral(sys.stdout, 0, name_=rootTag)
|
2842
|
+
sys.stdout.write(')\n')
|
2843
|
+
if print_warnings and len(gds_collector.get_messages()) > 0:
|
2844
|
+
separator = ('-' * 50) + '\n'
|
2845
|
+
sys.stderr.write(separator)
|
2846
|
+
sys.stderr.write('----- Warnings -- count: {} -----\n'.format(
|
2847
|
+
len(gds_collector.get_messages()), ))
|
2848
|
+
gds_collector.write_messages(sys.stderr)
|
2849
|
+
sys.stderr.write(separator)
|
2850
|
+
return rootObj
|
2851
|
+
|
2852
|
+
|
2853
|
+
def main():
|
2854
|
+
args = sys.argv[1:]
|
2855
|
+
if len(args) == 1:
|
2856
|
+
parse(args[0])
|
2857
|
+
else:
|
2858
|
+
usage()
|
2859
|
+
|
2860
|
+
|
2861
|
+
if __name__ == '__main__':
|
2862
|
+
#import pdb; pdb.set_trace()
|
2863
|
+
main()
|
2864
|
+
|
2865
|
+
RenameMappings_ = {
|
2866
|
+
}
|
2867
|
+
|
2868
|
+
#
|
2869
|
+
# Mapping of namespaces to types defined in them
|
2870
|
+
# and the file in which each is defined.
|
2871
|
+
# simpleTypes are marked "ST" and complexTypes "CT".
|
2872
|
+
NamespaceToDefMappings_ = {}
|
2873
|
+
|
2874
|
+
__all__ = [
|
2875
|
+
"account",
|
2876
|
+
"address",
|
2877
|
+
"consignmentDetails",
|
2878
|
+
"insurance",
|
2879
|
+
"option",
|
2880
|
+
"options",
|
2881
|
+
"pieceLine",
|
2882
|
+
"pieceMeasurements",
|
2883
|
+
"priceCheck",
|
2884
|
+
"priceRequest",
|
2885
|
+
"product"
|
2886
|
+
]
|