2016-02-25 9 views
1

Я недавно установил Odoo 9.0. Однако мне нужен модуль, доступный только для Odoo 8.0.Как преобразовать модуль Odoo 8 в Odoo 9

Мне было интересно, если можно применить незначительные изменения к этому модулю, чтобы сделать его совместимым с Odoo 9.0? Новый модуль просто календарь, который просто только с помощью веб-интерфейса: Link to the module

Здесь ошибка при

УСТАНОВКА ОБЪЕКТИВА
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> 
+1

Odoo 8 и 9 использует один и тот же api, если модуль находится в Api 8, он должен работать в 9, то есть, если этот модуль использует api 7 (работает в 8), он не будет работать в 9. Что вы должны делать изменяет функции/поля api 7 на 8. – dccdany

+1

И, честно говоря, он может даже работать со старым api. Единственное, что может сломаться, это то, что если он наследует базовый модуль, который изменил odoo для odoo 9, вам, возможно, придется изменить эту функцию. – dccdany

+0

@dccdany. Тогда как этот модуль не может быть установлен на Odoo 9? Это может быть модуль Odoo 7, в отличие от спецификации. В таком случае, должен ли я задать другой вопрос о том, как конвертировать из O7 в O9? – orezvani

ответ

1

Что вы столкнулись является частным случаем. Многие вещи изменились в интерфейсе Odoo 9 (например, используя меньше). Нет определенного способа обновить модуль от v8 до v9. Вот несколько рекомендаций:

  • использовать новый API, поскольку старый API определенно перешел в Odoo v10. Это упростит процесс обновления.
  • В интерфейсе много чего изменилось, для большей части вашего наследования шаблона/представления потребуется обновление. Самый быстрый способ - это попытаться установить его и решить проблемы по мере их возникновения.
  • модель логики не сильно изменилась. Те, кто получил большие обновления, ведут учет в Odoo 9 и производят в Odoo 10. Большая часть логики, которую вы используете сейчас, будет по-прежнему работать

Что касается вашей проблемы, это может быть непросто. Я обновил модуль, отображающий пользовательские панели, созданные мной с помощью Highcharts на Odoo 9, и для его работы потребовалось много шагов.

Смежные вопросы