原来有的导入功能相信很多小伙伴对其功能不是很满意,不过没关系,我们可以二开啊,把它的功能改造成你想要的样子,接下来让我们看看怎么办吧

  • 例如我想把员工导入功能中添加上用户同步注册功能

  • 首先,我要找到原模块中导入时调用的模型——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导入功能二开的更多相关文章

  1. 使用 EPPlus 封装的 excel 表格导入功能 (二) delegate 委托 --永远滴神

    使用 EPPlus 封装的 excel 表格导入功能 (二) delegate 委托 --永远滴神 前言 接上一篇 使用 EPPlus 封装的 excel 表格导入功能 (一) 前一篇的是大概能用但是 ...

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

    一.安装 由于xadmin自带的包里面已经包含了django-import-export 所以不用再pip install django-import-export了 但是xadmin管理后台只有导出 ...

  3. 【odoo】关于odoo二开模块规范的一点思考

    老韩头的开发日常 ☞ [好书学习]系列 背景 作为丙方,完成了甲方的二开需求.因此,在设计二开模块的时候,考虑的是当时所列的需求清单,并整合到一个二开模块中.完成交付后,客户评价蛮好的.因此,成功的为 ...

  4. 027医疗项目-模块二:药品目录的导入导出-导入功能的Action的编写

    前一篇文章我们写了Service层,这篇文章我们写一下Action层. 实现的功能: 1:我们先下载模板:然后按照模板里面的规则,插入数据.比如存在d盘. 2:然后浏览找到那个文件,上传上去. 然后把 ...

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

    这个导入功能要实现的效果是: 思路是: 因为我们最后是在Action层中调用的HxlsRead工具,这个工具传入的就是我们要实现的上一篇文章说到的实现了HxlsOptRowsInterface接口的类 ...

  6. Odoo:全球第一免费开源ERP库龄表的简单实现方法(无需二开)

    问题背景 希望查看库龄超过30天的货物,该如何实现?此种简单数据查询需要二开吗? 解决方案 方法一:Stock Quant列表视图增加过滤器 <filter string="库龄超30 ...

  7. NC57,NC63-NC二开经验总结

    版主2010级市场营销专业本科生 2013年8月入达内培训Java相关技术 12月入职,做用友NC的二次开发工作 2015年4月离职,4中下旬入职一家互联网金融企业 下面是做NC二开期间积累的一些常用 ...

  8. 还在写SQL做SAP二开?通过RFC调用NetWeaver,让HANA数据库操作更可靠

    相比于从零开始构建全套信息化系统,基于成熟的ERP等行业软件做二次开发是更多中大型企业应对个性化软件需求的首选方案.如何在二开模块中,可靠地对成品软件的数据库进行读写操作,以满足单据自动创建.元数据自 ...

  9. 解析大型.NET ERP系统 设计通用Microsoft Excel导入功能

    做企业管理软件很难避免与Microsoft Excel打交道,常常是软件做好了,客户要求说再做一个Excel导入功能.导入Excel数据的功能的难度不大,从Excel列数据栏位的取值,验证值,再导入到 ...

随机推荐

  1. PHP内核-环境搭建(一)

    难得闲下来,发现自己没有系统的学习过PHP内核,希望我能够慢慢啃下PHP内核书籍,无论是抄袭也好,码字也好,一步一个脚印走下去. 学习来源:http://www.php-internals.com/b ...

  2. EasyUI 格式化列

    以下实例格式化在 easyui DataGrid 里的列数据,并使用自定义列的 formatter,如果价格小于 20 就将文本变为红色. 为了格式化一个数据网格(DataGrid)列,我们需要设置 ...

  3. 线段树区间更新 lazy

    1. hdu1698 http://acm.hdu.edu.cn/showproblem.php?pid=1698 /* x y k x~y的值变为k */ #include <cstdio&g ...

  4. Intel 8086_通用寄存器|段寄存器

  5. 自己写的一个Vue

    下面这里是我自己写的一个小型的vue,原理就是proxy: //Proxy天生没有prototype,因此要加上,不然extends会报错 Proxy.prototype = Proxy.protot ...

  6. bzoj千题计划292:bzoj2244: [SDOI2011]拦截导弹

    http://www.lydsy.com/JudgeOnline/problem.php?id=2244 每枚导弹成功拦截的概率 = 包含它的最长上升子序列个数/最长上升子序列总个数 pre_len ...

  7. python技巧 is 和 ==

    is 判断变量是否指向同一个对象 == 判断变量引用的对象是否相等 In [2]: a=[1,2] In [3]: b=a In [4]: a == b Out[4]: True In [5]: a ...

  8. [转]GCC系列: __attribute__((visibility("")))

    在 objc-api.h 里面有很多关于__attribute__ 的定义. 例如 #if !defined(OBJC_VISIBLE) # if TARGET_OS_WIN32 # if defin ...

  9. oracle锁表查询,资源占用,连接会话,低效SQL等性能检查

    查询oracle用户名,机器名,锁表对象 select l.session_id sid, s.serial#, l.locked_mode, l.oracle_username, l.os_user ...

  10. android调节声音大小

    android调节声音大小 1.背景音乐的一些知识 网上好多关于背景音乐添加用到的类: MediaPlayer,SoundPool,AudioManager的资料,可是有时候解决不了我们在开发中遇到的 ...