From 5ed9c00e300a22fe3959fb2e9e894d2b172f9cf0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9ry=20Debongnie?= Date: Mon, 9 Mar 2015 16:35:38 +0100 Subject: [PATCH] [IMP] web: add compatibility layer This compatibility file reexports every symbols from the modules to the old openerp namespace. The goal is to allow old unconverted odoo addons to interact seamlessly with the new web client. --- addons/web/static/src/js/compatibility.js | 225 ++++++++++++++++++++++ 1 file changed, 225 insertions(+) create mode 100644 addons/web/static/src/js/compatibility.js diff --git a/addons/web/static/src/js/compatibility.js b/addons/web/static/src/js/compatibility.js new file mode 100644 index 00000000000..4c0a4538bc1 --- /dev/null +++ b/addons/web/static/src/js/compatibility.js @@ -0,0 +1,225 @@ +// ------------------------------------------------------------------------------ +// Compatibility with Odoo v8. +// +// With the new module system, no global variable can (and should) be accessed +// in openerp. This file exports everything, to mimic the previous global +// namespace structure. This is only supposed to be used by 3rd parties to +// facilitate migration. Odoo addons should not use the 'openerp' variable at +// all. +// ------------------------------------------------------------------------------ +odoo.define('web.compatibility', [ + 'web.ActionManager', + 'web.core', + 'web.data', + 'web.Dialog', + 'web.FavoriteMenu', + 'web.form_common', + 'web.form_relational', + 'web.form_widgets', + 'web.formats', + 'web.FormView', + 'web.framework', + 'web.ListView', + 'web.Menu', + 'web.Model', + 'web.pyeval', + 'web.Registry', + 'web.SearchView', + 'web.session', + 'web.Sidebar', + 'web.SystrayMenu', + 'web.time', + 'web.UserMenu', + 'web.utils', + 'web.View', + 'web.ViewManager', + 'web.WebClient', + 'web.Widget', + ], + function (require) { +"use strict"; + +var ActionManager = require('web.ActionManager'); +var core = require('web.core'); +var data = require('web.data'); +var Dialog = require('web.Dialog'); +var FavoriteMenu = require('web.FavoriteMenu'); +var form_common = require('web.form_common'); +var formats = require('web.formats'); +var FormView = require('web.FormView'); +var form_relational = require('web.form_relational'); // necessary +var form_widgets = require('web.form_widgets'); // necessary +var framework = require('web.framework'); +var ListView = require('web.ListView'); +var Menu = require('web.Menu'); +var Model = require('web.Model'); +var pyeval = require('web.pyeval'); +var Registry = require('web.Registry'); +var SearchView = require('web.SearchView'); +var session = require('web.session'); +var Sidebar = require('web.Sidebar'); +var SystrayMenu = require('web.SystrayMenu'); +var time = require('web.time'); +var UserMenu = require('web.UserMenu'); +var utils = require('web.utils'); +var View = require('web.View'); +var ViewManager = require('web.ViewManager'); +var WebClient = require('web.WebClient'); +var Widget = require('web.Widget'); + +var client_started = $.Deferred(); + +var OldRegistry = Registry.extend({ + add: function (key, path) { + }, + get_object: function (key) { + return get_object(this.map[key]); + }, +}); + +window.openerp = window.openerp || {}; + +$.Mutex = utils.Mutex; +openerp._session_id = "instance0"; +openerp._t = core._t; +openerp.get_cookie = utils.get_cookie; + +openerp.qweb = core.qweb; +openerp.session = session; + +openerp.web = openerp.web || {}; +openerp.web._t = core._t; +openerp.web._lt = core._lt; + +openerp.web.ActionManager = ActionManager; +openerp.web.auto_str_to_date = time.auto_str_to_date; +openerp.web.blockUI = framework.blockUI; +openerp.web.BufferedDataSet = data.BufferedDataSet; +openerp.web.bus = core.bus; +openerp.web.Class = core.Class; +openerp.web.client_actions = make_old_registry(core.action_registry); +openerp.web.CompoundContext = data.CompoundContext; +openerp.web.CompoundDomain = data.CompoundDomain; +openerp.web.DataSetSearch = data.DataSetSearch; +openerp.web.DataSet = data.DataSet; +openerp.web.date_to_str = time.date_to_str; +openerp.web.Dialog = Dialog; +openerp.web.DropMisordered = utils.DropMisordered; + +openerp.web.form = openerp.web.form || {}; +openerp.web.form.AbstractField = form_common.AbstractField; +openerp.web.form.compute_domain = data.compute_domain; +openerp.web.form.DefaultFieldManager = form_common.DefaultFieldManager; +openerp.web.form.FieldChar = core.form_widget_registry.get('char'); +openerp.web.form.FieldFloat = core.form_widget_registry.get('float'); +openerp.web.form.FieldStatus = core.form_widget_registry.get('statusbar'); +openerp.web.form.FieldMany2ManyTags = core.form_widget_registry.get('many2many_tags'); +openerp.web.form.FieldMany2One = core.form_widget_registry.get('many2one'); +openerp.web.form.FormWidget = form_common.FormWidget; +openerp.web.form.tags = make_old_registry(core.form_tag_registry); +openerp.web.form.widgets = make_old_registry(core.form_widget_registry); + +openerp.web.format_value = formats.format_value; +openerp.web.FormView = FormView; + +openerp.web.json_node_to_xml = utils.json_node_to_xml; + +openerp.web.ListView = ListView; +openerp.web.Menu = Menu; +openerp.web.Model = Model; +openerp.web.normalize_format = time.strftime_to_moment_format; +openerp.web.py_eval = pyeval.py_eval; +openerp.web.pyeval = pyeval; +openerp.web.qweb = core.qweb; + +openerp.web.Registry = OldRegistry; + +openerp.web.search = {}; +openerp.web.search.FavoriteMenu = FavoriteMenu; +openerp.web.SearchView = SearchView; +openerp.web.Sidebar = Sidebar; +openerp.web.str_to_date = time.str_to_date; +openerp.web.str_to_datetime = time.str_to_datetime; +openerp.web.SystrayItems = SystrayMenu.Items; +openerp.web.unblockUI = framework.unblockUI; +openerp.web.UserMenu = UserMenu; +openerp.web.View = View; +openerp.web.ViewManager = ViewManager; +openerp.web.views = make_old_registry(core.view_registry); +openerp.web.WebClient = WebClient; +openerp.web.Widget = Widget; + +openerp.Widget = openerp.web.Widget; +openerp.Widget.prototype.session = session; + + +WebClient.include({ + init: function () { + openerp.client = this; + openerp.webclient = this; + start_modules(); + client_started.resolve(); + this._super.apply(this, arguments); + }, +}); + + +function make_old_registry(registry) { + return { + add: function (key, path) { + client_started.done(function () { + registry.add(key, get_object(path)); + }); + }, + }; +} +function get_object(path) { + var object_match = openerp; + path = path.split('.'); + // ignore first section + for(var i=1; i