odoo导入功能二开
Posted chenshuquan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了odoo导入功能二开相关的知识,希望对你有一定的参考价值。
原来有的导入功能相信很多小伙伴对其功能不是很满意,不过没关系,我们可以二开啊,把它的功能改造成你想要的样子,接下来让我们看看怎么办吧
例如我想把员工导入功能中添加上用户同步注册功能
首先,我要找到原模块中导入时调用的模型——importUser.py文件
找到这个文件之后打开 HtkjtImport 类,该类继承import基础模块
class HtkjtImport(models.TransientModel): _inherit = "base_import.import"
在该类下面找到 do 方法,将其重写
当然咯,重写该方法或者其他方法都可以,不一定就选择这个
代码风格规范一点的也可以自己新建一个方法,然后调用就可以了
@api.multi
def do(self, fields, columns, options, dryrun=False):self.ensure_one() self._cr.execute('SAVEPOINT import') try: data, import_fields = self._convert_import_data(fields, options) # Parse date and float field data = self._parse_import_data(data, import_fields, options) except ValueError as error: return { 'messages': [{ 'type': 'error', 'message': pycompat.text_type(error), 'record': False, }] } _logger.info('importing %d rows...', len(data)) name_create_enabled_fields = options.pop('name_create_enabled_fields', {}) model = self.env[self.res_model].with_context(import_file=True, name_create_enabled_fields=name_create_enabled_fields) import_result = model.load(import_fields, data) _logger.info('done') # If transaction aborted, RELEASE SAVEPOINT is going to raise # an InternalError (ROLLBACK should work, maybe). Ignore that. try: if dryrun: self._cr.execute('ROLLBACK TO SAVEPOINT import') # cancel all changes done to the registry/ormcache self.pool.reset_changes() else: self._cr.execute('RELEASE SAVEPOINT import') except psycopg2.InternalError: pass # 导入成功后更新插入映射列 if import_result['ids'] and options.get('headers'): BaseImportMapping = self.env['base_import.mapping'] for index, column_name in enumerate(columns): if column_name: # Update to latest selected field exist_records = BaseImportMapping.search( [('res_model', '=', self.res_model), ('column_name', '=', column_name)]) if exist_records: exist_records.write({'field_name': fields[index]}) else: BaseImportMapping.create({ 'res_model': self.res_model, 'column_name': column_name, 'field_name': fields[index] }) for da in data: print(da[1]) print(da[3]) data = { 'name': da[1], 'display_name': da[1], 'email': da[3], } partner = self.env['res.partner'].create(data) print(partner.id) data = { 'login': da[3], 'password': 123456, 'partner_id': partner.id, } user = self.env['res.users'].create(data) return import_result
以上是关于odoo导入功能二开的主要内容,如果未能解决你的问题,请参考以下文章