40 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Smarty
		
	
	
	
		
		
			
		
	
	
			40 lines
		
	
	
		
			1.2 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}}){{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~}}
 |