40 lines
1.3 KiB
Smarty
40 lines
1.3 KiB
Smarty
|
|
{{
|
|
name = x.py_full_name
|
|
is_abstract_type = x.is_abstract_type
|
|
parent_def_type = x.parent_def_type
|
|
export_fields = x.export_fields
|
|
hierarchy_export_fields = x.hierarchy_export_fields
|
|
}}
|
|
|
|
class {{name}} {{if parent_def_type}}({{parent_def_type.py_full_name}}){{else if is_abstract_type}}(metaclass=abc.ABCMeta){{end}}:
|
|
{{~if x.is_abstract_type~}}
|
|
_childrenTypes = None
|
|
|
|
@staticmethod
|
|
def fromJson(_json_):
|
|
childrenTypes = {{name}}._childrenTypes
|
|
if not childrenTypes:
|
|
childrenTypes = {{name}}._childrenTypes = {
|
|
{{~ for child in x.hierarchy_not_abstract_children~}}
|
|
'{{cs_impl_data_type child x}}': {{child.py_full_name}},
|
|
{{~end~}}
|
|
}
|
|
type = _json_['{{x.json_type_name_key}}']
|
|
child = {{name}}._childrenTypes.get(type)
|
|
if child != None:
|
|
return child(_json_)
|
|
else:
|
|
raise Exception()
|
|
{{~end~}}
|
|
|
|
def __init__(self, _json_):
|
|
{{~if parent_def_type~}}
|
|
{{parent_def_type.py_full_name}}.__init__(self, _json_)
|
|
{{~end~}}
|
|
{{~ for field in export_fields ~}}
|
|
{{py3_deserialize_field ('self.' + field.convention_name) '_json_' field.name field.ctype}}
|
|
{{~end~}}
|
|
{{~if export_fields.empty?}}
|
|
pass
|
|
{{~end~}} |