首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将Odoo 8模块转换为Odoo 9

如何将Odoo 8模块转换为Odoo 9
EN

Stack Overflow用户
提问于 2016-02-25 09:21:16
回答 3查看 2K关注 0票数 3

我最近安装了Odoo 9.0。然而,我需要一个模块,这只是Odoo 8.0可用的。

我想知道是否有可能对这个模块进行一些小的修改,使其与Odoo 9.0兼容?新的模块只是一个日历,它只是简单地使用web界面:Link to the module

下面是安装时的错误

代码语言:javascript
复制
Odoo Server Error
Traceback (most recent call last):
  File "/odoo/odoo-server/openerp/http.py", line 643, in _handle_exception
    return super(JsonRequest, self)._handle_exception(exception)
  File "/odoo/odoo-server/openerp/http.py", line 680, in dispatch
    result = self._call_function(**self.params)
  File "/odoo/odoo-server/openerp/http.py", line 316, in _call_function
    return checked_call(self.db, *args, **kwargs)
  File "/odoo/odoo-server/openerp/service/model.py", line 118, in wrapper
    return f(dbname, *args, **kwargs)
  File "/odoo/odoo-server/openerp/http.py", line 309, in checked_call
    result = self.endpoint(*a, **kw)
  File "/odoo/odoo-server/openerp/http.py", line 959, in __call__
    return self.method(*args, **kw)
  File "/odoo/odoo-server/openerp/http.py", line 509, in response_wrap
    response = f(*args, **kw)
  File "/odoo/odoo-server/addons/web/controllers/main.py", line 896, in call_button
    action = self._call_kw(model, method, args, {})
  File "/odoo/odoo-server/addons/web/controllers/main.py", line 884, in _call_kw
    return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs)
  File "/odoo/odoo-server/openerp/api.py", line 250, in wrapper
    return old_api(self, *args, **kwargs)
  File "/odoo/odoo-server/openerp/addons/base/module/module.py", line 459, in button_immediate_install
    return self._button_immediate_function(cr, uid, ids, self.button_install, context=context)
  File "/odoo/odoo-server/openerp/api.py", line 250, in wrapper
    return old_api(self, *args, **kwargs)
  File "/odoo/odoo-server/openerp/addons/base/module/module.py", line 533, in _button_immediate_function
    registry = openerp.modules.registry.RegistryManager.new(cr.dbname, update_module=True)
  File "/odoo/odoo-server/openerp/modules/registry.py", line 386, in new
    openerp.modules.load_modules(registry._db, force_demo, status, update_module)
  File "/odoo/odoo-server/openerp/modules/loading.py", line 338, in load_modules
    loaded_modules, update_module)
  File "/odoo/odoo-server/openerp/modules/loading.py", line 237, in load_marked_modules
    loaded, processed = load_module_graph(cr, graph, progressdict, report=report, skip_modules=loaded_modules, perform_checks=perform_checks)
  File "/odoo/odoo-server/openerp/modules/loading.py", line 156, in load_module_graph
    _load_data(cr, module_name, idref, mode, kind='data')
  File "/odoo/odoo-server/openerp/modules/loading.py", line 98, in _load_data
    tools.convert_file(cr, module_name, filename, idref, mode, noupdate, kind, report)
  File "/odoo/odoo-server/openerp/tools/convert.py", line 851, in convert_file
    convert_xml_import(cr, module, fp, idref, mode, noupdate, report)
  File "/odoo/odoo-server/openerp/tools/convert.py", line 938, in convert_xml_import
    obj.parse(doc.getroot(), mode=mode)
  File "/odoo/odoo-server/openerp/tools/convert.py", line 801, in parse
    self.parse(rec, mode)
  File "/odoo/odoo-server/openerp/tools/convert.py", line 804, in parse
    self._tags[rec.tag](self.cr, rec, de, mode=mode)
  File "/odoo/odoo-server/openerp/tools/convert.py", line 777, in _tag_template
    return self._tag_record(cr, record, data_node)
  File "/odoo/odoo-server/openerp/tools/convert.py", line 708, in _tag_record
    id = self.pool['ir.model.data']._update(cr, self.uid, rec_model, self.module, res, rec_id or False, not self.isnoupdate(data_node), noupdate=self.isnoupdate(data_node), mode=self.mode, context=rec_context )
  File "/odoo/odoo-server/openerp/api.py", line 250, in wrapper
    return old_api(self, *args, **kwargs)
  File "/odoo/odoo-server/openerp/addons/base/ir/ir_model.py", line 1142, in _update
    res_id = model_obj.create(cr, uid, values, context=context)
  File "/odoo/odoo-server/openerp/api.py", line 250, in wrapper
    return old_api(self, *args, **kwargs)
  File "/odoo/odoo-server/openerp/addons/base/ir/ir_ui_view.py", line 351, in create
    context=context)
  File "/odoo/odoo-server/openerp/api.py", line 250, in wrapper
    return old_api(self, *args, **kwargs)
  File "/odoo/odoo-server/openerp/api.py", line 354, in old_api
    result = method(recs, *args, **kwargs)
  File "/odoo/odoo-server/openerp/models.py", line 4151, in create
    record = self.browse(self._create(old_vals))
  File "/odoo/odoo-server/openerp/api.py", line 248, in wrapper
    return new_api(self, *args, **kwargs)
  File "/odoo/odoo-server/openerp/api.py", line 490, in new_api
    result = method(self._model, cr, uid, *args, **old_kwargs)
  File "/odoo/odoo-server/openerp/models.py", line 4342, in _create
    recs._validate_fields(vals)
  File "/odoo/odoo-server/openerp/api.py", line 248, in wrapper
    return new_api(self, *args, **kwargs)
  File "/odoo/odoo-server/openerp/models.py", line 1271, in _validate_fields
    raise ValidationError('\n'.join(errors))
ParseError: "Invalid view definition

Error details:
Element '<xpath expr="//script[@src='/web/static/src/js/formats.js']">' cannot be located in parent view

Error context:
View `persian_calendar`
[view_id: 853, xml_id: n/a, model: n/a, parent_id: 159]
None" while parsing None:6, near
<data inherit_id="web.assets_backend">

            <xpath expr="//script[@src='/web/static/src/js/formats.js']" position="replace">
                <script type="text/javascript" src="/persian_calendar/static/src/js/formats.js"/>
            </xpath>
        </data>
EN

回答 3

Stack Overflow用户

发布于 2017-01-15 16:47:53

你所面对的是一个特殊的案例。在Odoo 9的前端有很多改变(比如使用更少)。将一个模块从v8升级到v9没有明确的方法。不过,这里有一些建议:

  • 使用新的API,因为旧的API在Odoo v10中肯定已经消失了。这将使以后升级到它变得容易得多。
  • 前端发生了很多变化,你的大多数模板/视图继承都需要刷新。最快的方法仍然是尝试安装它,并在出现问题时解决它们
  • 模型逻辑没有太大变化。Odoo 9中的会计和Odoo 10中的制造进行了重大修改。您现在使用的大多数逻辑仍然适用于

关于你的问题,这可能并不容易。我升级了一个显示我在Odoo 9上使用Highcharts创建的自定义仪表板的模块,需要执行许多步骤才能使其工作。

票数 4
EN

Stack Overflow用户

发布于 2018-05-17 00:55:33

没有一个工具可以将模块从Odoo 8转换到Odoo 9,然而问题是odoo 8使用的是旧的Api,你可以使用官方文档来转换代码,例如在函数中:在旧的Api中,我们在参数中有声明cr,uid,ids,context,但在新的Api中,我们不需要这样做;)

票数 1
EN

Stack Overflow用户

发布于 2020-09-07 22:25:21

转换模块的步骤:

  1. Scaffold version
  2. 中的新模块复制.py文件并运行(检查是否有错误)
  3. Copy视图并再次运行(不检查内嵌视图并检查所有xpath是否存在(如本例)
  4. Rewrite permissions

<

  1. >G211
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35616504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档