原來有的導入功能相信很多小伙伴對其功能不是很滿意,不過沒關系,我們可以二開啊,把它的功能改造成你想要的樣子,接下來讓我們看看怎么辦吧
-
例如我想把員工導入功能中添加上用戶同步注冊功能
-
首先,我要找到原模塊中導入時調用的模型——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