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

原文地址:https://www.cnblogs.com/chenshuquan/p/10531862.html

时间: 2024-10-30 07:45:36

odoo导入功能二开的相关文章

xadmin引入django-import-export导入功能

一.安装 由于xadmin自带的包里面已经包含了django-import-export 所以不用再pip install django-import-export了 但是xadmin管理后台只有导出按钮 没有导入按钮 所以本次引入了导入功能 二.配置文件 demo/settings.py: import os # Build paths inside the project like this: os.path.join(BASE_DIR, ...)BASE_DIR = os.path.dir

度量快速开发平台中“导入”功能的一般实现思路

度量快速开发平台中,"导入"功能在很多业务中都会用到.一般是在其他系统或者人为整理好的数据,比如要导入基础的数据,比如要在另外的系统中导入工资信息等.导入功能,一般是与管理界面相匹配可进行的.我们常用的实现思路是,首先做好一个管理界面,比如按照条件查询出数据来.下图是一个在职人员工资情况的管理界面,该功能是在办公管理系统中制作人员的工资数据,然后每个人可以查阅自己的工资. 人员工资本身是在财务系统中编制好的,并且从财务系统中导出为xls的文件. 在"导入"按钮上,打

026医疗项目-模块二:药品目录的导入导出-导入功能的Service的编写

这个导入功能要实现的效果是: 思路是: 因为我们最后是在Action层中调用的HxlsRead工具,这个工具传入的就是我们要实现的上一篇文章说到的实现了HxlsOptRowsInterface接口的类.所以我们的Server层的类直接去继承HxlsOptRowsInterface接口.然后把这个Service传入到Action中HxlsRead工具中,的这篇文章说的就是Service 层: 代码如下: package yycg.business.service.impl; import java

017 区域导入功能 - bos

一.jQuery的OCUpload 1.OCUpload(One Click Upload) <script src="${pageContext.request.contextPath}/js/jquery.ocupload-1.1.2.js"></script> 2.传统文件上传: <1>页面要有form表单,action为提交地址,method="post",注意enctype="multipart/form-da

Magento 对csv表格的导入功能 高级自定义部分!

magento自己带有导入导出功能 后台system-->import/export-->Advanced Profiles 进入后点击add new profiles 就可以新建一个规则了 Profile Name *是名字 Actions XML *是对应的参数 譬如例子: <action type="dataflow/convert_adapter_io" method="load"> <var name="type&q

OBPS开发管理平台-使用模板开发导入功能

和之前讲的一样,我们讲过代码就知道了是怎么生成的,所以这个导入功能也是一样的. 第一步: 我们从vbscript 开始调用 '说明:导出模板Private Sub ExportTemp()    Call ExportExcelTemplate("IG0050", "防腐管检查信息表", frmHtmlData.UID.value)End Sub'说明:导入数据Private Sub ImportData3()    dim ls_para    ls_para=

词频统计-功能二

一.完成一个小程序 今天的任务是处理一本英文小说.我处理的英文小说是<war and peace> 本想着用多线程来解决的,发现看书还不是太懂,并不能真正动手编程. 我在编程的过程中主要遇到了以下两个问题: 1.在对整个英文小说进行单词总数统计遇见困难. 2.字符串数组的空字符串处理问题.因为我开始用空格来代替标点等不是英文单词来进行对单词分割,其中用到了正则表达式,后来统计对单词出现频数时,发现空格竟然排第一名,有4万多空格. 最终我的处理方式是使用List泛型集合的ForEach方法循环获

分享一个非常屌的eazyui二开demo

eazyui二开Demo非常吊,里面各种非常吊的样例,最喜欢的是 多文件进度条上传,一次可多选,还有流程,还有文本编辑器  非常简洁的 不像一些官网各种复杂的东西.主要为自己保留一份, 在线demo在这: http://jqext.sinaapp.com/# 为了防止人家收费就留了一份下载的 http://download.csdn.net/detail/qq873113580/8879415 上几个非常吊的效果图:

Solr定时导入功能实现

需要实现Solr定时导入功能的话,我们可以通过使用Solr自身所集成的dataimportscheduler调度器实现 下载对应的jar包,下载地址https://code.google.com/archive/p/solr-dataimport-scheduler/downloads 通过WinRAR打开jar包我们发现里面有一个名叫dataimport.properties的配置文件 ################################################# # #