in lib/generator.js [1507:1561]
visitFieldsInit(ast, level, modelName, type = 'model', baseErr = false){
let node;
this.emit(' def __init__(');
const paramNodes = this.dealExtendFileds(ast);
if (!paramNodes.length) {
this.emit('self):\n');
this.emit('pass', level + 2);
return;
}
this.emit('\n');
this.emit(`self,${ this.config.strictModel ? ' *,' : '' }\n`, level + 2);
for (let i = 0; i < paramNodes.length; i++) {
node = paramNodes[i];
if(!node.extend) {
let comments = DSL.comment.getFrontComments(this.comments, node.tokenRange[0]);
this.visitComments(comments, level);
}
let param = _avoidKeywords(_snakeCase(_escape(_name(node.fieldName))));
if(param === 'name' && type === 'exception') {
continue;
}
this.emit(`${param}: `, level + 2);
this.visitFieldType(node.fieldValue, level, modelName, _name(node.fieldName));
this.emit(' = None,\n');
}
this.emit('):\n', level);
if(ast.extendFileds && ast.extendFileds.length > 0) {
this.emit('super().__init__(', level + 2);
if(baseErr) {
this.emit('{\n');
for (let i = 0; i < ast.extendFileds.length; i++) {
node = ast.extendFileds[i];
let value = _snakeCase(_escape(_name(node.fieldName)));
let key = _avoidKeywords(_escape(_name(node.fieldName)));
if(key === 'name' && type === 'exception') {
continue;
}
this.emit(`'${key}': ${value},\n`, level + 4);
}
this.emit('})\n', level + 2);
} else {
this.emit('\n');
for (let i = 0; i < ast.extendFileds.length; i++) {
node = ast.extendFileds[i];
let param = _avoidKeywords(_snakeCase(_escape(_name(node.fieldName))));
if(param === 'name' && type === 'exception') {
continue;
}
this.emit(`${param} = ${param},\n`, level + 4);
}
this.emit(')\n', level + 2);
}
}
}