diff --git a/addons/base/common/dispatch.py b/addons/base/common/dispatch.py deleted file mode 100644 index bddcffb8ce9..00000000000 --- a/addons/base/common/dispatch.py +++ /dev/null @@ -1,273 +0,0 @@ -#!/usr/bin/python -import datetime -import urllib -import dateutil.relativedelta -import functools -import logging -import optparse -import os -import sys -import tempfile -import time -import traceback -import uuid -import xmlrpclib - -import cherrypy -import cherrypy.lib.static -import simplejson - -import nonliterals -# TODO if from openerpserver use backendlocal -# from backendlocal import * -from backendrpc import * - -#----------------------------------------------------------- -# Globals -#----------------------------------------------------------- - -import __main__ - -path_root = __main__.path_root -path_addons = __main__.path_addons -cherrypy_root = None - -#----------------------------------------------------------- -# Globals (wont move into a pool) -#----------------------------------------------------------- - -applicationsession = {} -addons_module = {} -addons_manifest = {} -controllers_class = {} -controllers_object = {} -controllers_path = {} - -#---------------------------------------------------------- -# OpenERP Web RequestHandler -#---------------------------------------------------------- -class CherryPyRequest(object): - """ CherryPy request handling - """ - def init(self,params): - self.params = params - # Move cherrypy thread local objects to attributes - self.applicationsession = applicationsession - self.httprequest = cherrypy.request - self.httpresponse = cherrypy.response - self.httpsession = cherrypy.session - self.httpsession_id = "cookieid" - # OpenERP session setup - self.session_id = self.params.pop("session_id", None) or uuid.uuid4().hex - host = cherrypy.config['openerp.server.host'] - port = cherrypy.config['openerp.server.port'] - self.session = self.httpsession.setdefault(self.session_id, OpenERPSession(host, port)) - # Request attributes - self.context = self.params.pop('context', None) - self.debug = self.params.pop('debug',False) != False - -class JsonRequest(CherryPyRequest): - """ JSON-RPC2 over HTTP. - - Sucessful request:: - - --> {"jsonrpc": "2.0", - "method": "call", - "params": {"session_id": "SID", - "context": {}, - "arg1": "val1" }, - "id": null} - - <-- {"jsonrpc": "2.0", - "result": { "res1": "val1" }, - "id": null} - - Request producing a error:: - - --> {"jsonrpc": "2.0", - "method": "call", - "params": {"session_id": "SID", - "context": {}, - "arg1": "val1" }, - "id": null} - - <-- {"jsonrpc": "2.0", - "error": {"code": 1, - "message": "End user error message.", - "data": {"code": "codestring", - "debug": "traceback" } }, - "id": null} - - """ - - def dispatch(self, controller, method, requestf=None, request=None): - """ Calls the method asked for by the JSON-RPC2 request - - :param controller: the instance of the controller which received the request - :param method: the method which received the request - :param requestf: a file-like object containing an encoded JSON-RPC2 request - :param request: a JSON-RPC2 request - - :returns: an utf8 encoded JSON-RPC2 reply - """ - response = {"jsonrpc": "2.0" } - error = None - try: - # Read POST content or POST Form Data named "request" - if requestf: - self.jsonrequest = simplejson.load(requestf, object_hook=nonliterals.non_literal_decoder) - else: - self.jsonrequest = simplejson.loads(request, object_hook=nonliterals.non_literal_decoder) - self.init(self.jsonrequest.get("params", {})) - if self.debug or 1: - print "--> %s.%s %s" % (controller.__class__.__name__, method.__name__, self.jsonrequest) - response['id'] = self.jsonrequest.get('id') - response["result"] = method(controller, self, **self.params) - except OpenERPUnboundException: - error = { - 'code': 100, - 'message': "OpenERP Session Invalid", - 'data': { - 'type': 'session_invalid', - 'debug': traceback.format_exc() - } - } - except xmlrpclib.Fault, e: - error = { - 'code': 200, - 'message': "OpenERP Server Error", - 'data': { - 'type': 'server_exception', - 'fault_code': e.faultCode, - 'debug': "Client %s\nServer %s" % ( - "".join(traceback.format_exception("", None, sys.exc_traceback)), e.faultString) - } - } - except Exception: - cherrypy.log("An error occured while handling a json request", - severity=logging.ERROR, traceback=True) - error = { - 'code': 300, - 'message': "OpenERP WebClient Error", - 'data': { - 'type': 'client_exception', - 'debug': "Client %s" % traceback.format_exc() - } - } - if error: - response["error"] = error - - if self.debug or 1: - print "<--", response - print - - content = simplejson.dumps(response, cls=nonliterals.NonLiteralEncoder) - cherrypy.response.headers['Content-Type'] = 'application/json' - cherrypy.response.headers['Content-Length'] = len(content) - return content - -def jsonrequest(f): - @cherrypy.expose - @functools.wraps(f) - def json_handler(controller): - return JsonRequest().dispatch(controller, f, requestf=cherrypy.request.body) - return json_handler - -class HttpRequest(CherryPyRequest): - """ Regular GET/POST request - """ - def dispatch(self, controller, method, **kw): - self.init(kw) - akw = {} - for key in kw.keys(): - if isinstance(kw[key], basestring) and len(kw[key]) < 1024: - akw[key] = kw[key] - else: - akw[key] = type(kw[key]) - if self.debug or 1: - print "%s --> %s.%s %r" % (self.httprequest.method, controller.__class__.__name__, method.__name__, akw) - r = method(controller, self, **kw) - if self.debug or 1: - print "<--", 'size:', len(r) - print - return r - -def httprequest(f): - # check cleaner wrapping: - # functools.wraps(f)(lambda x: JsonRequest().dispatch(x, f)) - def http_handler(controller,*l, **kw): - return HttpRequest().dispatch(controller, f, **kw) - http_handler.exposed = 1 - return http_handler - -#----------------------------------------------------------- -# Cherrypy stuff -#----------------------------------------------------------- - -class ControllerType(type): - def __init__(cls, name, bases, attrs): - super(ControllerType, cls).__init__(name, bases, attrs) - controllers_class["%s.%s" % (cls.__module__, cls.__name__)] = cls - -class Controller(object): - __metaclass__ = ControllerType - -class Root(object): - def __init__(self): - self.addons = {} - self._load_addons() - - def _load_addons(self): - if path_addons not in sys.path: - sys.path.insert(0, path_addons) - for i in os.listdir(path_addons): - if i not in addons_module: - manifest_path = os.path.join(path_addons, i, '__openerp__.py') - if os.path.isfile(manifest_path): - manifest = eval(open(manifest_path).read()) - print "Loading", i - m = __import__(i) - addons_module[i] = m - addons_manifest[i] = manifest - for k, v in controllers_class.items(): - if k not in controllers_object: - o = v() - controllers_object[k] = o - if hasattr(o, '_cp_path'): - controllers_path[o._cp_path] = o - - def default(self, *l, **kw): - print "default",l,kw - # handle static files - if len(l) > 2 and l[1] == 'static': - # sanitize path - p = os.path.normpath(os.path.join(*l)) - p2 = os.path.join(path_addons, p) - print "p",p - print "p2",p2 - - return cherrypy.lib.static.serve_file(p2) - elif len(l) > 1: - for i in range(len(l), 1, -1): - ps = "/" + "/".join(l[0:i]) - if ps in controllers_path: - c = controllers_path[ps] - rest = l[i:] or ['index'] - meth = rest[0] - m = getattr(c, meth) - if getattr(m, 'exposed', 0): - print "Calling", ps, c, meth, m - return m(**kw) - raise cherrypy.NotFound('/' + '/'.join(l)) - elif l and l[0] == 'mobile': - #for the mobile web client we are supposed to use a different url to just add '/mobile' - raise cherrypy.HTTPRedirect('/web_mobile/static/src/web_mobile.html', 301) - else: - if kw: - qs = '?' + urllib.urlencode(kw) - else: - qs = '' - raise cherrypy.HTTPRedirect('/base/webclient/home' + qs, 301) - default.exposed = True - -# diff --git a/addons/base/static/src/js/data_export.js b/addons/base/static/src/js/data_export.js deleted file mode 100644 index ad440302c69..00000000000 --- a/addons/base/static/src/js/data_export.js +++ /dev/null @@ -1,402 +0,0 @@ -openerp.base.data_export = function(openerp) { -openerp.base.DataExport = openerp.base.Dialog.extend({ - init: function(parent, dataset) { - this._super(parent); - this.dataset = dataset; - }, - start: function() { - var self = this; - self._super(false); - self.template = 'ExportTreeView'; - self.dialog_title = "Export Data"; - self.open({ - modal: true, - width: '55%', - height: 'auto', - position: 'top', - buttons : { - "Close" : function() { - self.close(); - }, - "Export To File" : function() { - self.on_click_export_data(); - } - }, - close: function(event, ui){ self.close();} - }); - self.on_show_exists_export_list(); - self.$element.removeClass('ui-dialog-content ui-widget-content'); - self.$element.find('#add_field').click(function() { - if ($('#field-tree-structure tr.ui-selected')) { - var fld = self.$element.find('#field-tree-structure tr.ui-selected').find('a'); - for (var i = 0; i < fld.length; i++) { - var id = $(fld[i]).attr('id').split('-')[1]; - var string = $(fld[i]).attr('string'); - self.add_field(id, string); - } - self.$element.find('#field-tree-structure tr').removeClass('ui-selected'); - } - }); - self.$element.find('#remove_field').click(function() { - self.$element.find('#fields_list option:selected').remove(); - }); - self.$element.find('#remove_all_field').click(function() { - self.$element.find('#fields_list option').remove(); - }); - self.$element.find('#export_new_list').click(function() { - self.on_show_save_list(); - }); - var import_comp = self.$element.find('#import_compat option:selected').val(), - params = { - import_compat: parseInt(import_comp) - }; - self.rpc('/base/export/get_fields', { model: self.dataset.model, params: params }, self.on_show_data); - - self.$element.find('#import_compat').change(function() { - self.$element.find('#fields_list option').remove(); - self.$element.find('#field-tree-structure').remove(); - var import_comp = self.$element.find("#import_compat option:selected").val(); - if (import_comp) { - var params = { - import_compat: parseInt(import_comp) - } - self.rpc("/base/export/get_fields", { model: self.dataset.model, params: params}, self.on_show_data); - } - }); - }, - on_show_exists_export_list: function() { - var self = this; - if (self.$element.find('#saved_export_list').is(':hidden')) { - self.$element.find('#ExistsExportList').show(); - } else { - this.rpc('/base/export/exist_export_lists', { 'model': this.dataset.model}, function(export_list) { - if (export_list.length) { - self.$element.find('#ExistsExportList').append(QWeb.render('Exists.ExportList', {'existing_exports': export_list})); - self.$element.find('#saved_export_list').change(function() { - self.$element.find('#fields_list option').remove(); - var export_id = self.$element.find('#saved_export_list option:selected').val(); - if (export_id) { - self.rpc('/base/export/namelist', {'model': self.dataset.model, export_id: parseInt(export_id)}, self.do_load_export_field); - } - }); - self.$element.find('#delete_export_list').click(function() { - var select_exp = self.$element.find('#saved_export_list option:selected'); - if (select_exp.val()) { - self.rpc('/base/export/delete_export', { export_id: parseInt(select_exp.val())}, {}); - select_exp.remove(); - if (self.$element.find('#saved_export_list option').length <= 1) { - self.$element.find('#ExistsExportList').hide(); - } - } - }); - } - }); - } - }, - do_load_export_field: function(field_list) { - var export_node = this.$element.find("#fields_list"); - for (var key in field_list) { - export_node.append(new Option(field_list[key], key)); - } - }, - on_show_save_list: function() { - var self = this; - var current_node = self.$element.find("#savenewlist"); - if (!(current_node.find("label")).length) { - current_node.append(QWeb.render('ExportNewList')); - current_node.find("#add_export_list").click(function() { - var value = current_node.find("#savelist_name").val(); - if (value) { - self.do_save_export_list(value); - } else { - alert("Pleae Enter Save Field List Name"); - } - }); - } else { - if (current_node.is(':hidden')) { - current_node.show(); - current_node.find("#savelist_name").val(""); - } else { - current_node.hide(); - } - } - }, - do_save_export_list: function(value) { - var self = this; - var export_field = self.get_fields(); - if (export_field.length) { - self.rpc("/base/export/save_export_lists", {"model": self.dataset.model, "name":value, "field_list":export_field}, function(exp_id) { - if (exp_id) { - if (self.$element.find("#saved_export_list").length > 0) { - self.$element.find("#saved_export_list").append(new Option(value, exp_id)); - } else { - self.on_show_exists_export_list(); - } - if (self.$element.find("#saved_export_list").is(":hidden")) { - self.on_show_exists_export_list(); - } - } - }); - self.on_show_save_list(); - self.$element.find("#fields_list option").remove(); - } - }, - on_click: function(id, result) { - var self = this; - self.field_id = id.split("-")[1]; - var is_loaded = 0; - _.each(result, function(record) { - if (record['id'] == self.field_id && (record['children']).length >= 1) { - var model = record['params']['model'], - prefix = record['params']['prefix'], - name = record['params']['name']; - $(record['children']).each(function(e, childid) { - if (self.$element.find("tr[id='treerow-" + childid + "']").length > 0) { - if (self.$element.find("tr[id='treerow-" + childid + "']").is(':hidden')) { - is_loaded = -1; - } else { - is_loaded++; - } - } - }); - if (is_loaded == 0) { - if (self.$element.find("tr[id='treerow-" + self.field_id +"']").find('img').attr('src') === '/base/static/src/img/expand.gif') { - if (model) { - var import_comp = self.$element.find("#import_compat option:selected").val(); - var params = { - import_compat: parseInt(import_comp), - parent_field_type : record['field_type'] - } - self.rpc("/base/export/get_fields", { - model: model, - prefix: prefix, - name: name, - field_parent : self.field_id, - params: params - }, function(results) { - self.on_show_data(results); - }); - } - } - } else if (is_loaded > 0) { - self.showcontent(self.field_id, true); - } else { - self.showcontent(self.field_id, false); - } - } - }); - }, - on_show_data: function(result) { - var self = this; - var imp_cmpt = parseInt(self.$element.find("#import_compat option:selected").val()); - var current_tr = self.$element.find("tr[id='treerow-" + self.field_id + "']"); - if (current_tr.length >= 1) { - current_tr.find('img').attr('src','/base/static/src/img/collapse.gif'); - current_tr.after(QWeb.render('ExportTreeView-Secondary.children', {'fields': result})); - } else { - self.$element.find('#left_field_panel').append(QWeb.render('ExportTreeView-Secondary', {'fields': result})); - } - _.each(result, function(record) { - if ((record.field_type == "one2many") && imp_cmpt) { - var o2m_fld = self.$element.find("tr[id='treerow-" + record.id + "']").find('#tree-column'); - o2m_fld.addClass("oe_export_readonlyfield"); - } - if ((record.required == true) || record.required == "True") { - var required_fld = self.$element.find("tr[id='treerow-" + record.id + "']").find('#tree-column'); - required_fld.addClass("oe_export_requiredfield"); - } - self.$element.find("img[id='parentimg-" + record.id +"']").click(function() { - self.on_click(this.id, result); - }); - - self.$element.find("tr[id='treerow-" + record.id + "']").click(function(e) { - if (e.shiftKey == true) { - var frst_click, scnd_click = ''; - if (self.row_index == 0) { - self.row_index = this.rowIndex; - frst_click = self.$element.find("tr[id^='treerow-']")[self.row_index-1]; - $(frst_click).addClass("ui-selected"); - } else { - if (this.rowIndex >=self.row_index) { - for (i = (self.row_index-1); i < this.rowIndex; i++) { - scnd_click = self.$element.find("tr[id^='treerow-']")[i]; - if (!$(scnd_click).find('#tree-column').hasClass("oe_export_readonlyfield")) { - $(scnd_click).addClass("ui-selected"); - } - } - } else { - for (i = (self.row_index-1); i >= (this.rowIndex-1); i--) { - scnd_click = self.$element.find("tr[id^='treerow-']")[i]; - if (!$(scnd_click).find('#tree-column').hasClass("oe_export_readonlyfield")) { - $(scnd_click).addClass("ui-selected"); - } - } - } - } - } - self.row_index = this.rowIndex; - - self.$element.find("tr[id='treerow-" + record.id + "']").keyup(function(e) { - self.row_index = 0; - }); - var o2m_selection = self.$element.find("tr[id='treerow-" + record.id + "']").find('#tree-column'); - if ($(o2m_selection).hasClass("oe_export_readonlyfield")) { - return false; - } - var selected = self.$element.find("tr.ui-selected"); - if ($(this).hasClass("ui-selected") && (e.ctrlKey == true)) { - $(this).find('a').blur(); - $(this).removeClass("ui-selected"); - } else if ($(this).hasClass("ui-selected") && (e.ctrlKey == false) && (e.shiftKey == false)) { - selected.find('a').blur(); - selected.removeClass("ui-selected"); - $(this).find('a').focus(); - $(this).addClass("ui-selected"); - } else if (!$(this).hasClass("ui-selected") && (e.ctrlKey == false) && (e.shiftKey == false)) { - selected.find('a').blur(); - selected.removeClass("ui-selected"); - $(this).find('a').focus(); - $(this).addClass("ui-selected"); - } else if (!$(this).hasClass("ui-selected") && (e.ctrlKey == true)) { - $(this).find('a').focus(); - $(this).addClass("ui-selected"); - } - return false; - }); - - self.$element.find("tr[id='treerow-" + record.id + "']").keydown(function(e) { - var keyCode = e.keyCode || e.which; - arrow = {left: 37, up: 38, right: 39, down: 40 }; - switch (keyCode) { - case arrow.left: - if ($(this).find('img').attr('src') === '/base/static/src/img/collapse.gif') { - self.on_click(this.id, result); - } - break; - case arrow.up: - var elem = this; - $(elem).removeClass("ui-selected"); - while ($(elem).prev().is(":visible") == false) { - elem = $(elem).prev(); - } - if (!$(elem).prev().find('#tree-column').hasClass("oe_export_readonlyfield")) { - $(elem).prev().addClass("ui-selected"); - } - $(elem).prev().find('a').focus(); - break; - case arrow.right: - if ($(this).find('img').attr('src') == '/base/static/src/img/expand.gif') { - self.on_click(this.id, result); - } - break; - case arrow.down: - var elem = this; - $(elem).removeClass("ui-selected"); - while($(elem).next().is(":visible") == false) { - elem = $(elem).next(); - } - if (!$(elem).next().find('#tree-column').hasClass("oe_export_readonlyfield")) { - $(elem).next().addClass("ui-selected"); - } - $(elem).next().find('a').focus(); - break; - } - }); - self.$element.find("tr[id='treerow-" + record.id + "']").dblclick(function(e) { - var $o2m_selection = self.$element.find("tr[id^='treerow-" + record.id + "']").find('#tree-column'); - if (!$o2m_selection.hasClass("oe_export_readonlyfield")) { - var field_id = $(this).find("a").attr("id"); - if (field_id) { - self.add_field(field_id.split('-')[1], $(this).find("a").attr("string")); - } - } - }); - }); - self.$element.find('#fields_list').mouseover(function(event) { - if (event.relatedTarget) { - if (event.relatedTarget.attributes['id'] && event.relatedTarget.attributes['string']) { - var field_id = event.relatedTarget.attributes["id"]["value"]; - if (field_id && field_id.split("-")[0] === 'export') { - if (!self.$element.find("tr[id='treerow-" + field_id.split("-")[1] + "']").find('#tree-column').hasClass("oe_export_readonlyfield")) { - self.add_field(field_id.split("-")[1], event.relatedTarget.attributes["string"]["value"]); - } - } - } - } - }); - }, - showcontent: function(id, flag) { - // show & hide the contents - var first_child = this.$element.find("tr[id='treerow-" + id + "']").find('img'); - if (flag) { - first_child.attr('src', '/base/static/src/img/expand.gif'); - } - else { - first_child.attr('src', '/base/static/src/img/collapse.gif'); - } - var child_field = this.$element.find("tr[id^='treerow-" + id +"/']"); - var child_len = (id.split("/")).length + 1; - for (var i = 0; i < child_field.length; i++) { - if (flag) { - $(child_field[i]).hide(); - } else { - if (child_len == (child_field[i].id.split("/")).length) { - if ($(child_field[i]).find('img').attr('src') == '/base/static/src/img/collapse.gif') { - $(child_field[i]).find('img').attr('src', '/base/static/src/img/expand.gif'); - } - $(child_field[i]).show(); - } - } - } - }, - add_field: function(field_id, string) { - var field_list = this.$element.find('#fields_list'); - if (this.$element.find("#fields_list option[value='" + field_id + "']") && !this.$element.find("#fields_list option[value='" + field_id + "']").length) { - field_list.append(new Option(string, field_id)); - } - }, - get_fields: function() { - var export_field = []; - this.$element.find("#fields_list option").each(function() { - export_field.push($(this).val()); - }); - if (!export_field.length) { - alert('Please select fields to save export list...'); - } - return export_field; - }, - on_click_export_data: function() { - var self = this; - var export_field = {}; - var flag = true; - self.$element.find("#fields_list option").each(function() { - export_field[$(this).val()] = $(this).text(); - flag = false; - }); - if (flag) { - alert('Please select fields to export...'); - return; - } - - var import_comp = self.$element.find("#import_compat option:selected").val(), - export_format = self.$element.find("#export_format").val(); - - self.rpc("/base/export/export_data", { - model: self.dataset.model, - fields: export_field, - ids: self.dataset.ids, - domain: self.dataset.domain, - import_compat: parseInt(import_comp), - export_format: export_format - }, function(data) { - window.location = "data:text/csv/excel;charset=utf8," + data; - self.close(); - }); - }, - close: function() { - $(this.$dialog).remove(); - this._super(); - } -}); - -}; diff --git a/addons/base/static/test/formats.js b/addons/base/static/test/formats.js deleted file mode 100644 index 66ffd1b5c3c..00000000000 --- a/addons/base/static/test/formats.js +++ /dev/null @@ -1,54 +0,0 @@ -$(document).ready(function () { - var openerp; - module('base-formats', { - setup: function () { - openerp = window.openerp.init(); - window.openerp.base.core(openerp); - window.openerp.base.dates(openerp); - window.openerp.base.formats(openerp); - } - }); - test("format_datetime", function () { - var date = openerp.base.str_to_datetime("2009-05-04 12:34:23"); - var str = openerp.base.format_value(date, {type:"datetime"}); - equal(str, date.toString("M/d/yyyy h:mm:ss tt")); - }); - test("format_date", function () { - var date = openerp.base.str_to_datetime("2009-05-04 12:34:23"); - var str = openerp.base.format_value(date, {type:"date"}); - equal(str, date.toString("M/d/yyyy")); - }); - test("format_time", function () { - var date = openerp.base.str_to_datetime("2009-05-04 12:34:23"); - var str = openerp.base.format_value(date, {type:"time"}); - equal(str, date.toString("h:mm:ss tt")); - }); - test("format_float", function () { - var fl = 12.1234; - var str = openerp.base.format_value(fl, {type:"float"}); - equal(str, "12.12"); - }); - test("parse_datetime", function () { - var val = openerp.base.str_to_datetime("2009-05-04 12:34:23"); - var res = openerp.base.parse_value(val.toString("M/d/yyyy h:mm:ss tt"), {type:"datetime"}); - equal(val.toString("M/d/yyyy h:mm:ss tt"), res.toString("M/d/yyyy h:mm:ss tt")); - }); - test("parse_date", function () { - var val = openerp.base.str_to_date("2009-05-04"); - var res = openerp.base.parse_value(val.toString("M/d/yyyy"), {type:"date"}); - equal(val.toString("M/d/yyyy"), res.toString("M/d/yyyy")); - }); - test("parse_time", function () { - var val = openerp.base.str_to_time("12:34:23"); - var res = openerp.base.parse_value(val.toString("h:mm:ss tt"), {type:"time"}); - equal(val.toString("h:mm:ss tt"), res.toString("h:mm:ss tt")); - }); - test("parse_float", function () { - var str = "134,112.1234"; - var val = openerp.base.parse_value(str, {type:"float"}); - equal(val, 134112.1234); - var str = "-134,112.1234"; - var val = openerp.base.parse_value(str, {type:"float"}); - equal(val, -134112.1234); - }); -}); \ No newline at end of file diff --git a/addons/base/static/test/registry.js b/addons/base/static/test/registry.js deleted file mode 100644 index 6140d327049..00000000000 --- a/addons/base/static/test/registry.js +++ /dev/null @@ -1,33 +0,0 @@ -$(document).ready(function () { - var openerp; - module('Registry', { - setup: function () { - openerp = window.openerp.init(true); - window.openerp.base.core(openerp); - openerp.base.Foo = {}; - openerp.base.Bar = {}; - } - }); - test('key fetch', function () { - var reg = new openerp.base.Registry({ - foo: 'openerp.base.Foo', - bar: 'openerp.base.Bar', - quux: 'openerp.base.Quux' - }); - - strictEqual(reg.get_object('foo'), openerp.base.Foo); - raises(function () { reg.get_object('qux'); }, - openerp.base.KeyNotFound, - "Unknown keys should raise KeyNotFound"); - raises(function () { reg.get_object('quux'); }, - openerp.base.ObjectNotFound, - "Incorrect file paths should raise ObjectNotFound"); - }); - test('key set', function () { - var reg = new openerp.base.Registry(); - - reg.add('foo', 'openerp.base.Foo') - .add('bar', 'openerp.base.Bar'); - strictEqual(reg.get_object('bar'), openerp.base.Bar); - }); -}); diff --git a/addons/base/static/test/test.html b/addons/base/static/test/test.html deleted file mode 100644 index 957456f4280..00000000000 --- a/addons/base/static/test/test.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - - OpenERP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

OpenERP Base Test Suite

-

-
-

-
    -
    - - - - - - - diff --git a/addons/base_default_home/__init__.py b/addons/base_default_home/__init__.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/addons/base_diagram/__openerp__.py b/addons/base_diagram/__openerp__.py deleted file mode 100644 index 92b768896f9..00000000000 --- a/addons/base_diagram/__openerp__.py +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name" : "OpenERP Web base Diagram", - "version" : "2.0", - "depends" : [], - 'active': False, -} diff --git a/addons/base_diagram/static/src/js/diagram.js b/addons/base_diagram/static/src/js/diagram.js deleted file mode 100644 index b992b5cbf42..00000000000 --- a/addons/base_diagram/static/src/js/diagram.js +++ /dev/null @@ -1,183 +0,0 @@ -/*--------------------------------------------------------- - * OpenERP base library - *---------------------------------------------------------*/ - -openerp.base.diagram = function (openerp) { - -openerp.base.views.add('diagram', 'openerp.base.DiagramView'); -openerp.base.DiagramView = openerp.base.Widget.extend({ - init: function(view_manager, session, element_id, dataset, view_id){ - this._super(session, element_id); - this.view_manager = view_manager; - this.dataset = dataset; - this.model = dataset.model; - this.view_id = view_id; - this.name = ""; - this.domain = this.dataset._domain ? this.dataset._domain: []; - this.context = {}; - this.ids = this.dataset.ids; - - console.log('data set>>',this.dataset) - }, - start: function() { - this.rpc("/base_diagram/diagram/load", {"model": this.model, "view_id": this.view_id}, this.on_loaded); - }, - - toTitleCase: function(str) { - return str.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();}); - }, - - on_loaded: function(result) { - - var self = this; - if(this.ids && this.ids.length) { - this.id = this.ids[0]; - } - - this.fields_view = result.fields_view; - this.view_id = this.fields_view.view_id; - this.name = this.fields_view.name; - - this.fields = this.fields_view.fields; - - var children = this.fields_view.arch.children; - /* - * For Nodes (Fields) - */ - this.node = ''; - this.bgcolor = ''; - this.shape = ''; - this.visible_fields_nodes = []; - this.invisible_fields_nodes = []; - this.fields_nodes_string = []; - - /* - * For Arraows(Connector) - */ - this.connector = ''; - this.src_node = ''; - this.des_node = ''; - this.connector_fields = []; - this.fields_connector_string = []; - - for(ch in children) { - if(children[ch]['tag'] == 'node') { - this.node = children[ch]['attrs']['object']; - this.bgcolor = children[ch]['attrs']['bgcolor'] || ''; - this.shape = children[ch]['attrs']['shape'] || ''; - for(node_chld in children[ch]['children']) { - if (children[ch]['children'][node_chld]['tag'] = 'field') { - var ch_name = children[ch]['children'][node_chld]['attrs']['name']; - - if (children[ch]['children'][node_chld]['attrs']['invisible']) { - if (children[ch]['children'][node_chld]['attrs']['invisible'] == 1 && children[ch]['children'][node_chld]['attrs']['invisible'] == '1') { - this.invisible_fields_nodes.push(ch_name) - } - } - else { - this.visible_fields_nodes.push(ch_name); - var ch_node_string = this.fields[ch_name]['string'] || this.toTitleCase(ch_name); - this.fields_nodes_string.push(ch_node_string) - } - } - } - } else if(children[ch]['tag'] == 'arrow') { - this.connector = children[ch]['attrs']['object']; - this.src_node = children[ch]['attrs']['source']; - this.des_node = children[ch]['attrs']['destination']; - for (arrow_chld in children[ch]['children']) { - if (children[ch]['children'][arrow_chld]['tag'] = 'field') { - var arr_ch_name = children[ch]['children'][arrow_chld]['attrs']['name']; - var ch_node_string = this.fields[arr_ch_name]['string'] || this.toTitleCase(arr_ch_name); - this.fields_connector_string.push(ch_node_string); - this.connector_fields.push(arr_ch_name); - } - } - } - } - this.$element.html(QWeb.render("DiagramView", {"fields_view": this.fields_view})); - - if(this.id) { - this.rpc( - '/base_diagram/diagram/get_diagram_info', - { - 'id': this.id, - 'model': this.model, - 'bgcolor': this.bgcolor, - 'shape': this.shape, - 'node': this.node, - 'connector': this.connector, - 'src_node': this.src_node, - 'des_node': this.des_node, - 'visible_node_fields': this.visible_fields_nodes, - 'invisible_node_fields': this.invisible_fields_nodes, - 'node_fields_string': this.fields_nodes_string, - 'connector_fields': this.connector_fields, - 'connector_fields_string': this.fields_connector_string - }, - function(result) { - self.draw_diagram(result); - } - ) - } - }, - - draw_diagram: function(result) { - console.log('this>>>',this) - var g = new Graph(); -// var raphel = new - this.in_transition_field = result['in_transition_field']; - this.out_transition_field = result['out_transition_field']; - var res_nodes = result['nodes']; - var res_connectors = result['conn']; - - var render = function(r, n) { - var set; - if (n.node.shape == 'ellipse') { - set = r.set().push( - r.ellipse(n.node.x - 30, n.node.y - 13, 40, 40).attr({ - "fill": n.node.color, - r: "12px", - "stroke-width": n.distance == 0 ? "3px" : "1px" - })).push(r.text(n.node.x - 30, n.node.y - 10, (n.label || n.id))); - } else { - set = r.set().push( - r.rect(n.node.x-30, n.node.y-13, 60, 44).attr({"fill": n.node.color, r : "12px", "stroke-width" : n.distance == 0 ? "3px" : "1px" })).push( - r.text(n.point[0], n.point[1] + 10, (n.label || n.id) + "\n(" + (n.distance == undefined ? "Infinity" : n.distance) + ")")); - - } - return set; - }; - - for(nd in res_nodes) { - var res_node = res_nodes[nd]; - g.addNode(res_node['name'], - { - node: res_node, - render: render - }); - } - - for(cr in res_connectors) { - var res_connector = res_connectors[cr]; - g.addEdge(res_connector['source'], res_connector['destination']); - } - - var layouter = new Graph.Layout.Spring(g); - layouter.layout(); - - var renderer = new Graph.Renderer.Raphael('dia-canvas', g, 800, 800); - renderer.draw(); - }, - - do_show: function () { - this.$element.show(); - }, - - do_hide: function () { - this.$element.hide(); - } -}); -}; - -// vim:et fdc=0 fdl=0 foldnestmax=3 fdm=syntax: diff --git a/addons/base/__init__.py b/addons/web/__init__.py similarity index 100% rename from addons/base/__init__.py rename to addons/web/__init__.py diff --git a/addons/base/__openerp__.py b/addons/web/__openerp__.py similarity index 98% rename from addons/base/__openerp__.py rename to addons/web/__openerp__.py index 95710e886aa..bf149ff5365 100644 --- a/addons/base/__openerp__.py +++ b/addons/web/__openerp__.py @@ -1,5 +1,5 @@ { - "name" : "OpenERP Web base", + "name" : "web", "version" : "2.0", "depends" : [], 'active': True, diff --git a/addons/base/common/__init__.py b/addons/web/common/__init__.py similarity index 82% rename from addons/base/common/__init__.py rename to addons/web/common/__init__.py index 60699c86f43..0628a7fa609 100644 --- a/addons/base/common/__init__.py +++ b/addons/web/common/__init__.py @@ -1,5 +1,4 @@ #!/usr/bin/python # TODO if from openerpserver use backendlocal # from backendlocal import * -from backendrpc import * from dispatch import * diff --git a/addons/base/common/ast.py b/addons/web/common/ast.py similarity index 100% rename from addons/base/common/ast.py rename to addons/web/common/ast.py diff --git a/addons/base/common/backendlocal.py b/addons/web/common/backendlocal.py similarity index 100% rename from addons/base/common/backendlocal.py rename to addons/web/common/backendlocal.py diff --git a/addons/base/common/backendrpc.py b/addons/web/common/backendrpc.py similarity index 97% rename from addons/base/common/backendrpc.py rename to addons/web/common/backendrpc.py index d2e2f6615e1..e6c59000caf 100644 --- a/addons/base/common/backendrpc.py +++ b/addons/web/common/backendrpc.py @@ -1,22 +1,9 @@ #!/usr/bin/python import datetime -import urllib import dateutil.relativedelta -import functools -import logging -import optparse -import os -import sys -import tempfile import time -import traceback -import uuid import xmlrpclib -import cherrypy -import cherrypy.lib.static -import simplejson - import nonliterals #---------------------------------------------------------- # OpenERPSession RPC openerp backend access diff --git a/addons/base/common/dates.py b/addons/web/common/dates.py similarity index 100% rename from addons/base/common/dates.py rename to addons/web/common/dates.py diff --git a/addons/web/common/dispatch.py b/addons/web/common/dispatch.py new file mode 100644 index 00000000000..0f2b7fd2293 --- /dev/null +++ b/addons/web/common/dispatch.py @@ -0,0 +1,429 @@ +#!/usr/bin/python +from __future__ import with_statement + +import functools +import logging +import os +import sys +import traceback +import uuid +import xmlrpclib + +import simplejson +import werkzeug.datastructures +import werkzeug.exceptions +import werkzeug.urls +import werkzeug.utils +import werkzeug.wrappers +import werkzeug.wsgi + +import ast +import nonliterals +import http +# import backendlocal as backend +import backendrpc as backend + +__all__ = ['Root', 'jsonrequest', 'httprequest', 'Controller', + 'WebRequest', 'JsonRequest', 'HttpRequest'] + +#----------------------------------------------------------- +# Globals (wont move into a pool) +#----------------------------------------------------------- + +applicationsession = {} +addons_module = {} +addons_manifest = {} +controllers_class = {} +controllers_object = {} +controllers_path = {} + +#---------------------------------------------------------- +# OpenERP Web RequestHandler +#---------------------------------------------------------- +class WebRequest(object): + """ Parent class for all OpenERP Web request types, mostly deals with + initialization and setup of the request object (the dispatching itself has + to be handled by the subclasses) + + :param request: a wrapped werkzeug Request object + :type request: :class:`werkzeug.wrappers.BaseRequest` + :param config: configuration object + + .. attribute:: applicationsession + + an application-wide :class:`~collections.Mapping` + + .. attribute:: httprequest + + the original :class:`werkzeug.wrappers.Request` object provided to the + request + + .. attribute:: httpsession + + a :class:`~collections.Mapping` holding the HTTP session data for the + current http session + + .. attribute:: config + + config parameter provided to the request object + + .. attribute:: params + + :class:`~collections.Mapping` of request parameters, not generally + useful as they're provided directly to the handler method as keyword + arguments + + .. attribute:: session_id + + opaque identifier for the :class:`backend.OpenERPSession` instance of + the current request + + .. attribute:: session + + :class:`~backend.OpenERPSession` instance for the current request + + .. attribute:: context + + :class:`~collections.Mapping` of context values for the current request + + .. attribute:: debug + + ``bool``, indicates whether the debug mode is active on the client + """ + def __init__(self, request, config): + self.applicationsession = applicationsession + self.httprequest = request + self.httpresponse = None + self.httpsession = request.session + self.config = config + def init(self, params): + self.params = dict(params) + # OpenERP session setup + self.session_id = self.params.pop("session_id", None) or uuid.uuid4().hex + self.session = self.httpsession.setdefault( + self.session_id, backend.OpenERPSession( + self.config.server_host, self.config.server_port)) + self.context = self.params.pop('context', None) + self.debug = self.params.pop('debug', False) != False + +class JsonRequest(WebRequest): + """ JSON-RPC2 over HTTP. + + Sucessful request:: + + --> {"jsonrpc": "2.0", + "method": "call", + "params": {"session_id": "SID", + "context": {}, + "arg1": "val1" }, + "id": null} + + <-- {"jsonrpc": "2.0", + "result": { "res1": "val1" }, + "id": null} + + Request producing a error:: + + --> {"jsonrpc": "2.0", + "method": "call", + "params": {"session_id": "SID", + "context": {}, + "arg1": "val1" }, + "id": null} + + <-- {"jsonrpc": "2.0", + "error": {"code": 1, + "message": "End user error message.", + "data": {"code": "codestring", + "debug": "traceback" } }, + "id": null} + + """ + + def dispatch(self, controller, method, requestf=None, request=None): + """ Calls the method asked for by the JSON-RPC2 request + + :param controller: the instance of the controller which received the request + :param method: the method which received the request + :param requestf: a file-like object containing an encoded JSON-RPC2 request + :param request: a JSON-RPC2 request + + :returns: an utf8 encoded JSON-RPC2 reply + """ + response = {"jsonrpc": "2.0" } + error = None + try: + # Read POST content or POST Form Data named "request" + if requestf: + self.jsonrequest = simplejson.load(requestf, object_hook=nonliterals.non_literal_decoder) + else: + self.jsonrequest = simplejson.loads(request, object_hook=nonliterals.non_literal_decoder) + self.init(self.jsonrequest.get("params", {})) + if self.debug or 1: + print "--> %s.%s %s" % (controller.__class__.__name__, method.__name__, self.jsonrequest) + response['id'] = self.jsonrequest.get('id') + response["result"] = method(controller, self, **self.params) + except backend.OpenERPUnboundException: + error = { + 'code': 100, + 'message': "OpenERP Session Invalid", + 'data': { + 'type': 'session_invalid', + 'debug': traceback.format_exc() + } + } + except xmlrpclib.Fault, e: + error = { + 'code': 200, + 'message': "OpenERP Server Error", + 'data': { + 'type': 'server_exception', + 'fault_code': e.faultCode, + 'debug': "Client %s\nServer %s" % ( + "".join(traceback.format_exception("", None, sys.exc_traceback)), e.faultString) + } + } + except Exception: + logging.getLogger('openerp.JSONRequest.dispatch').exception\ + ("An error occured while handling a json request") + error = { + 'code': 300, + 'message': "OpenERP WebClient Error", + 'data': { + 'type': 'client_exception', + 'debug': "Client %s" % traceback.format_exc() + } + } + if error: + response["error"] = error + + if self.debug or 1: + print "<--", response + print + + content = simplejson.dumps(response, cls=nonliterals.NonLiteralEncoder) + return werkzeug.wrappers.Response( + content, headers=[('Content-Type', 'application/json'), + ('Content-Length', len(content))]) + +def jsonrequest(f): + """ Decorator marking the decorated method as being a handler for a + JSON-RPC request (the exact request path is specified via the + ``$(Controller._cp_path)/$methodname`` combination. + + If the method is called, it will be provided with a :class:`JsonRequest` + instance and all ``params`` sent during the JSON-RPC request, apart from + the ``session_id``, ``context`` and ``debug`` keys (which are stripped out + beforehand) + """ + @functools.wraps(f) + def json_handler(controller, request, config): + return JsonRequest(request, config).dispatch( + controller, f, requestf=request.stream) + json_handler.exposed = True + return json_handler + +class HttpRequest(WebRequest): + """ Regular GET/POST request + """ + def dispatch(self, controller, method): + params = dict(self.httprequest.args) + params.update(self.httprequest.form) + params.update(self.httprequest.files) + self.init(params) + akw = {} + for key, value in self.httprequest.args.iteritems(): + if isinstance(value, basestring) and len(value) < 1024: + akw[key] = value + else: + akw[key] = type(value) + if self.debug or 1: + print "%s --> %s.%s %r" % (self.httprequest.method, controller.__class__.__name__, method.__name__, akw) + r = method(controller, self, **self.params) + if self.debug or 1: + if isinstance(r, werkzeug.wrappers.BaseResponse): + print '<--', r + else: + print "<--", 'size:', len(r) + print + return r + + def make_response(self, data, headers=None, cookies=None): + """ Helper for non-HTML responses, or HTML responses with custom + response headers or cookies. + + While handlers can just return the HTML markup of a page they want to + send as a string if non-HTML data is returned they need to create a + complete response object, or the returned data will not be correctly + interpreted by the clients. + + :param basestring data: response body + :param headers: HTTP headers to set on the response + :type headers: ``[(name, value)]`` + :param collections.Mapping cookies: cookies to set on the client + """ + response = werkzeug.wrappers.Response(data, headers=headers) + if cookies: + for k, v in cookies.iteritems(): + response.set_cookie(k, v) + return response + + def not_found(self, description=None): + """ Helper for 404 response, return its result from the method + """ + return werkzeug.exceptions.NotFound(description) + +def httprequest(f): + """ Decorator marking the decorated method as being a handler for a + normal HTTP request (the exact request path is specified via the + ``$(Controller._cp_path)/$methodname`` combination. + + If the method is called, it will be provided with a :class:`HttpRequest` + instance and all ``params`` sent during the request (``GET`` and ``POST`` + merged in the same dictionary), apart from the ``session_id``, ``context`` + and ``debug`` keys (which are stripped out beforehand) + """ + @functools.wraps(f) + def http_handler(controller, request, config): + return HttpRequest(request, config).dispatch(controller, f) + http_handler.exposed = True + return http_handler + +class ControllerType(type): + def __init__(cls, name, bases, attrs): + super(ControllerType, cls).__init__(name, bases, attrs) + controllers_class["%s.%s" % (cls.__module__, cls.__name__)] = cls + +class Controller(object): + __metaclass__ = ControllerType + +class Root(object): + """Root WSGI application for the OpenERP Web Client. + + :param options: mandatory initialization options object, must provide + the following attributes: + + ``server_host`` (``str``) + hostname of the OpenERP server to dispatch RPC to + ``server_port`` (``int``) + RPC port of the OpenERP server + ``serve_static`` (``bool | None``) + whether this application should serve the various + addons's static files + ``storage_path`` (``str``) + filesystem path where HTTP session data will be stored + ``dbfilter`` (``str``) + only used in case the list of databases is requested + by the server, will be filtered by this pattern + """ + def __init__(self, options): + self.root = werkzeug.urls.Href('/web/webclient/home') + self.config = options + + self.session_cookie = 'sessionid' + self.addons = {} + + static_dirs = self._load_addons() + if options.serve_static: + self.dispatch = werkzeug.wsgi.SharedDataMiddleware( + self.dispatch, static_dirs) + + if options.session_storage: + if not os.path.exists(options.session_storage): + os.mkdir(options.session_storage, 0700) + self.session_storage = options.session_storage + + def __call__(self, environ, start_response): + """ Handle a WSGI request + """ + return self.dispatch(environ, start_response) + + def dispatch(self, environ, start_response): + """ + Performs the actual WSGI dispatching for the application, may be + wrapped during the initialization of the object. + + Call the object directly. + """ + request = werkzeug.wrappers.Request(environ) + request.parameter_storage_class = werkzeug.datastructures.ImmutableDict + + if request.path == '/': + return werkzeug.utils.redirect( + self.root(request.args), 301)( + environ, start_response) + elif request.path == '/mobile': + return werkzeug.utils.redirect( + '/web_mobile/static/src/web_mobile.html', 301)( + environ, start_response) + + handler = self.find_handler(*(request.path.split('/')[1:])) + + if not handler: + response = werkzeug.exceptions.NotFound() + else: + with http.session(request, self.session_storage, self.session_cookie) as session: + result = handler( + request, self.config) + + if isinstance(result, basestring): + response = werkzeug.wrappers.Response( + result, headers=[('Content-Type', 'text/html; charset=utf-8'), + ('Content-Length', len(result))]) + else: + response = result + + response.set_cookie(self.session_cookie, session.sid) + + return response(environ, start_response) + + def _load_addons(self): + """ + Loads all addons at the specified addons path, returns a mapping of + static URLs to the corresponding directories + """ + statics = {} + addons_path = self.config.addons_path + if addons_path not in sys.path: + sys.path.insert(0, addons_path) + for module in os.listdir(addons_path): + if module not in addons_module: + manifest_path = os.path.join(addons_path, module, '__openerp__.py') + if os.path.isfile(manifest_path): + manifest = ast.literal_eval(open(manifest_path).read()) + print "Loading", module + m = __import__(module) + addons_module[module] = m + addons_manifest[module] = manifest + + statics['/%s/static' % module] = \ + os.path.join(addons_path, module, 'static') + for k, v in controllers_class.items(): + if k not in controllers_object: + o = v() + controllers_object[k] = o + if hasattr(o, '_cp_path'): + controllers_path[o._cp_path] = o + return statics + + def find_handler(self, *l): + """ + Tries to discover the controller handling the request for the path + specified by the provided parameters + + :param l: path sections to a controller or controller method + :returns: a callable matching the path sections, or ``None`` + :rtype: ``Controller | None`` + """ + if len(l) > 1: + for i in range(len(l), 1, -1): + ps = "/" + "/".join(l[0:i]) + if ps in controllers_path: + c = controllers_path[ps] + rest = l[i:] or ['index'] + meth = rest[0] + m = getattr(c, meth) + if getattr(m, 'exposed', False): + print "Dispatching to", ps, c, meth, m + return m + return None diff --git a/addons/web/common/http.py b/addons/web/common/http.py new file mode 100644 index 00000000000..3f6c96d1f42 --- /dev/null +++ b/addons/web/common/http.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- + +import contextlib + +import werkzeug.contrib.sessions + +STORES = {} + +@contextlib.contextmanager +def session(request, storage_path, session_cookie='sessionid'): + session_store = STORES.get(storage_path) + if not session_store: + session_store = werkzeug.contrib.sessions.FilesystemSessionStore( + storage_path) + STORES[storage_path] = session_store + + sid = request.cookies.get(session_cookie) + if sid: + request.session = session_store.get(sid) + else: + request.session = session_store.new() + + yield request.session + + session_store.save(request.session) diff --git a/addons/base/common/nonliterals.py b/addons/web/common/nonliterals.py similarity index 99% rename from addons/base/common/nonliterals.py rename to addons/web/common/nonliterals.py index 5b61f39fc83..937da06ad9e 100644 --- a/addons/base/common/nonliterals.py +++ b/addons/web/common/nonliterals.py @@ -7,8 +7,6 @@ can't be sent there themselves). import binascii import hashlib import simplejson.encoder -import time -import datetime __all__ = ['Domain', 'Context', 'NonLiteralEncoder, non_literal_decoder', 'CompoundDomain', 'CompoundContext'] diff --git a/addons/base/common/tests/__init__.py b/addons/web/common/tests/__init__.py similarity index 100% rename from addons/base/common/tests/__init__.py rename to addons/web/common/tests/__init__.py diff --git a/addons/base/common/tests/test_model.py b/addons/web/common/tests/test_model.py similarity index 100% rename from addons/base/common/tests/test_model.py rename to addons/web/common/tests/test_model.py diff --git a/addons/base/common/tests/test_nonliterals.py b/addons/web/common/tests/test_nonliterals.py similarity index 100% rename from addons/base/common/tests/test_nonliterals.py rename to addons/web/common/tests/test_nonliterals.py diff --git a/addons/base/common/tests/test_session.py b/addons/web/common/tests/test_session.py similarity index 100% rename from addons/base/common/tests/test_session.py rename to addons/web/common/tests/test_session.py diff --git a/addons/web/controllers/__init__.py b/addons/web/controllers/__init__.py new file mode 100644 index 00000000000..8ee9bae18d9 --- /dev/null +++ b/addons/web/controllers/__init__.py @@ -0,0 +1 @@ +import main diff --git a/addons/base/controllers/main.py b/addons/web/controllers/main.py similarity index 78% rename from addons/base/controllers/main.py rename to addons/web/controllers/main.py index 643ec1e8c48..790e6034218 100644 --- a/addons/base/controllers/main.py +++ b/addons/web/controllers/main.py @@ -3,6 +3,7 @@ import base64 import csv import glob +import itertools import operator import os import re @@ -10,16 +11,15 @@ import simplejson import textwrap import xmlrpclib import time +import webrelease from xml.etree import ElementTree from cStringIO import StringIO -import cherrypy - -import base.common as openerpweb -import base.common.ast -import base.common.nonliterals -openerpweb.ast = base.common.ast -openerpweb.nonliterals = base.common.nonliterals +import web.common.dispatch as openerpweb +import web.common.ast +import web.common.nonliterals +openerpweb.ast = web.common.ast +openerpweb.nonliterals = web.common.nonliterals from babel.messages.pofile import read_po @@ -65,19 +65,19 @@ class Xml2Json: return res #---------------------------------------------------------- -# OpenERP Web base Controllers +# OpenERP Web web Controllers #---------------------------------------------------------- -def manifest_glob(addons, key): +def manifest_glob(addons_path, addons, key): files = [] for addon in addons: globlist = openerpweb.addons_manifest.get(addon, {}).get(key, []) for pattern in globlist: - for path in glob.glob(os.path.join(openerpweb.path_addons, addon, pattern)): - files.append(path[len(openerpweb.path_addons):]) + for path in glob.glob(os.path.join(addons_path, addon, pattern)): + files.append(path[len(addons_path):]) return files -def concat_files(file_list): +def concat_files(addons_path, file_list): """ Concatenate file content return (concat,timestamp) concat: concatenation of file content @@ -86,30 +86,27 @@ def concat_files(file_list): files_content = [] files_timestamp = 0 for i in file_list: - fname = os.path.join(openerpweb.path_addons, i[1:]) + fname = os.path.join(addons_path, i[1:]) ftime = os.path.getmtime(fname) if ftime > files_timestamp: files_timestamp = ftime files_content.append(open(fname).read()) files_concat = "".join(files_content) - return (files_concat,files_timestamp) + return files_concat,files_timestamp home_template = textwrap.dedent(""" OpenERP - + %(css)s - %(javascript)s @@ -118,44 +115,42 @@ home_template = textwrap.dedent(""" """) class WebClient(openerpweb.Controller): - _cp_path = "/base/webclient" + _cp_path = "/web/webclient" @openerpweb.jsonrequest - def csslist(self, req, mods='base'): - return manifest_glob(mods.split(','), 'css') + def csslist(self, req, mods='web'): + return manifest_glob(req.config.addons_path, mods.split(','), 'css') @openerpweb.jsonrequest - def jslist(self, req, mods='base'): - return manifest_glob(mods.split(','), 'js') + def jslist(self, req, mods='web'): + return manifest_glob(req.config.addons_path, mods.split(','), 'js') @openerpweb.httprequest - def css(self, req, mods='base'): - req.httpresponse.headers['Content-Type'] = 'text/css' - files = manifest_glob(mods.split(','), 'css') - content,timestamp = concat_files(files) + def css(self, req, mods='web'): + files = manifest_glob(req.config.addons_path, mods.split(','), 'css') + content,timestamp = concat_files(req.config.addons_path, files) # TODO request set the Date of last modif and Etag - return content + return req.make_response(content, [('Content-Type', 'text/css')]) @openerpweb.httprequest - def js(self, req, mods='base'): - req.httpresponse.headers['Content-Type'] = 'application/javascript' - files = manifest_glob(mods.split(','), 'js') - content,timestamp = concat_files(files) + def js(self, req, mods='web'): + files = manifest_glob(req.config.addons_path, mods.split(','), 'js') + content,timestamp = concat_files(req.config.addons_path, files) # TODO request set the Date of last modif and Etag - return content + return req.make_response(content, [('Content-Type', 'application/javascript')]) @openerpweb.httprequest def home(self, req, s_action=None, **kw): # script tags - jslist = ['/base/webclient/js'] + jslist = ['/web/webclient/js'] if req.debug: - jslist = manifest_glob(['base'], 'js') + jslist = manifest_glob(req.config.addons_path, ['web'], 'js') js = "\n ".join([''%i for i in jslist]) # css tags - csslist = ['/base/webclient/css'] + csslist = ['/web/webclient/css'] if req.debug: - csslist = manifest_glob(['base'], 'css') + csslist = manifest_glob(req.config.addons_path, ['web'], 'css') css = "\n ".join([''%i for i in csslist]) r = home_template % { 'javascript': js, @@ -185,7 +180,7 @@ class WebClient(openerpweb.Controller): transl = {"messages":[]} transs[addon_name] = transl for l in langs: - f_name = os.path.join(openerpweb.path_addons, addon_name, "po", l + ".po") + f_name = os.path.join(req.config.addons_path, addon_name, "po", l + ".po") if not os.path.exists(f_name): continue try: @@ -199,8 +194,14 @@ class WebClient(openerpweb.Controller): return {"modules": transs, "lang_parameters": lang_obj} + @openerpweb.jsonrequest + def version_info(self, req): + return { + "version": webrelease.version + } + class Database(openerpweb.Controller): - _cp_path = "/base/database" + _cp_path = "/web/database" @openerpweb.jsonrequest def get_list(self, req): @@ -208,7 +209,7 @@ class Database(openerpweb.Controller): dbs = proxy.list() h = req.httprequest.headers['Host'].split(':')[0] d = h.split('.')[0] - r = cherrypy.config['openerp.dbfilter'].replace('%h', h).replace('%d', d) + r = req.config.dbfilter.replace('%h', h).replace('%d', d) dbs = [i for i in dbs if re.match(r, i)] return {"db_list": dbs} @@ -251,13 +252,13 @@ class Database(openerpweb.Controller): @openerpweb.httprequest def backup(self, req, backup_db, backup_pwd, token): try: - db_dump = base64.decodestring( + db_dump = base64.b64decode( req.session.proxy("db").dump(backup_pwd, backup_db)) - req.httpresponse.headers['Content-Type'] = "application/octet-stream; charset=binary" - req.httpresponse.headers['Content-Disposition'] = 'attachment; filename="' + backup_db + '.dump"' - req.httpresponse.cookie['fileToken'] = token - req.httpresponse.cookie['fileToken']['path'] = '/' - return db_dump + return req.make_response(db_dump, + [('Content-Type', 'application/octet-stream; charset=binary'), + ('Content-Disposition', 'attachment; filename="' + backup_db + '.dump"')], + {'fileToken': int(token)} + ) except xmlrpclib.Fault, e: if e.faultCode and e.faultCode.split(':')[0] == 'AccessDenied': return 'Backup Database|' + e.faultCode @@ -266,7 +267,7 @@ class Database(openerpweb.Controller): @openerpweb.httprequest def restore(self, req, db_file, restore_pwd, new_db): try: - data = base64.encodestring(db_file.file.read()) + data = base64.b64encode(db_file.file.read()) req.session.proxy("db").restore(restore_pwd, new_db, data) return '' except xmlrpclib.Fault, e: @@ -286,7 +287,7 @@ class Database(openerpweb.Controller): return {'error': 'Error, password not changed !', 'title': 'Change Password'} class Session(openerpweb.Controller): - _cp_path = "/base/session" + _cp_path = "/web/session" @openerpweb.jsonrequest def login(self, req, db, login, password): @@ -333,7 +334,7 @@ class Session(openerpweb.Controller): # TODO query server for installed web modules mods = [] for name, manifest in openerpweb.addons_manifest.items(): - if name != 'base' and manifest.get('active', True): + if name != 'web' and manifest.get('active', True): mods.append(name) return mods @@ -537,7 +538,7 @@ def fix_view_modes(action): return action class Menu(openerpweb.Controller): - _cp_path = "/base/menu" + _cp_path = "/web/menu" @openerpweb.jsonrequest def load(self, req): @@ -585,7 +586,7 @@ class Menu(openerpweb.Controller): return {"action": actions} class DataSet(openerpweb.Controller): - _cp_path = "/base/dataset" + _cp_path = "/web/dataset" @openerpweb.jsonrequest def fields(self, req, model): @@ -707,6 +708,12 @@ class DataSet(openerpweb.Controller): if context_id and len(args) - 1 >= context_id: args[context_id] = c + for i in xrange(len(args)): + if isinstance(args[i], web.common.nonliterals.BaseContext): + args[i] = req.session.eval_context(args[i]) + if isinstance(args[i], web.common.nonliterals.BaseDomain): + args[i] = req.session.eval_domain(args[i]) + return getattr(req.session.model(model), method)(*args) @openerpweb.jsonrequest @@ -737,7 +744,7 @@ class DataSet(openerpweb.Controller): return {'result': r} class DataGroup(openerpweb.Controller): - _cp_path = "/base/group" + _cp_path = "/web/group" @openerpweb.jsonrequest def read(self, req, model, fields, group_by_fields, domain=None, sort=None): Model = req.session.model(model) @@ -748,7 +755,7 @@ class DataGroup(openerpweb.Controller): dict(context, group_by=group_by_fields), sort or False) class View(openerpweb.Controller): - _cp_path = "/base/view" + _cp_path = "/web/view" def fields_view_get(self, req, model, view_id, view_type, transform=True, toolbar=False, submenu=False): @@ -878,7 +885,7 @@ class View(openerpweb.Controller): elem.set(el, self.parse_context(context_string, session)) class FormView(View): - _cp_path = "/base/formview" + _cp_path = "/web/formview" @openerpweb.jsonrequest def load(self, req, model, view_id, toolbar=False): @@ -886,7 +893,7 @@ class FormView(View): return {'fields_view': fields_view} class ListView(View): - _cp_path = "/base/listview" + _cp_path = "/web/listview" @openerpweb.jsonrequest def load(self, req, model, view_id, toolbar=False): @@ -912,7 +919,7 @@ class ListView(View): return 'maroon' class SearchView(View): - _cp_path = "/base/searchview" + _cp_path = "/web/searchview" @openerpweb.jsonrequest def load(self, req, model, view_id): @@ -960,23 +967,25 @@ class SearchView(View): return to_return class Binary(openerpweb.Controller): - _cp_path = "/base/binary" + _cp_path = "/web/binary" @openerpweb.httprequest def image(self, req, model, id, field, **kw): - req.httpresponse.headers['Content-Type'] = 'image/png' Model = req.session.model(model) context = req.session.eval_context(req.context) + try: if not id: res = Model.default_get([field], context).get(field, '') else: res = Model.read([int(id)], [field], context)[0].get(field, '') - return base64.decodestring(res) - except: # TODO: what's the exception here? - return self.placeholder() - def placeholder(self): - return open(os.path.join(openerpweb.path_addons, 'base', 'static', 'src', 'img', 'placeholder.png'), 'rb').read() + image_data = base64.b64decode(res) + except (TypeError, xmlrpclib.Fault): + image_data = self.placeholder(req) + return req.make_response(image_data, [ + ('Content-Type', 'image/png'), ('Content-Length', len(image_data))]) + def placeholder(self, req): + return open(os.path.join(req.addons_path, 'web', 'static', 'src', 'img', 'placeholder.png'), 'rb').read() @openerpweb.httprequest def saveas(self, req, model, id, field, fieldname, **kw): @@ -985,22 +994,17 @@ class Binary(openerpweb.Controller): res = Model.read([int(id)], [field, fieldname], context)[0] filecontent = res.get(field, '') if not filecontent: - raise cherrypy.NotFound + return req.not_found() else: - req.httpresponse.headers['Content-Type'] = 'application/octet-stream' filename = '%s_%s' % (model.replace('.', '_'), id) if fieldname: filename = res.get(fieldname, '') or filename - req.httpresponse.headers['Content-Disposition'] = 'attachment; filename=' + filename - return base64.decodestring(filecontent) + return req.make_response(filecontent, + [('Content-Type', 'application/octet-stream'), + ('Content-Disposition', 'attachment; filename=' + filename)]) @openerpweb.httprequest - def upload(self, req, callback, ufile=None): - cherrypy.response.timeout = 500 - headers = {} - for key, val in req.httprequest.headers.iteritems(): - headers[key.lower()] = val - size = int(headers.get('content-length', 0)) + def upload(self, req, callback, ufile): # TODO: might be useful to have a configuration flag for max-length file uploads try: out = """""" - data = ufile.file.read() - args = [size, ufile.filename, ufile.headers.getheader('Content-Type'), base64.encodestring(data)] + data = ufile.read() + args = [ufile.content_length, ufile.filename, + ufile.content_type, base64.b64encode(data)] except Exception, e: args = [False, e.message] return out % (simplejson.dumps(callback), simplejson.dumps(args)) @openerpweb.httprequest - def upload_attachment(self, req, callback, model, id, ufile=None): - cherrypy.response.timeout = 500 + def upload_attachment(self, req, callback, model, id, ufile): context = req.session.eval_context(req.context) Model = req.session.model('ir.attachment') try: @@ -1036,7 +1040,7 @@ class Binary(openerpweb.Controller): """ attachment_id = Model.create({ 'name': ufile.filename, - 'datas': base64.encodestring(ufile.file.read()), + 'datas': base64.encodestring(ufile.read()), 'res_model': model, 'res_id': int(id) }, context) @@ -1049,7 +1053,7 @@ class Binary(openerpweb.Controller): return out % (simplejson.dumps(callback), simplejson.dumps(args)) class Action(openerpweb.Controller): - _cp_path = "/base/action" + _cp_path = "/web/action" @openerpweb.jsonrequest def load(self, req, action_id): @@ -1070,7 +1074,7 @@ class Action(openerpweb.Controller): [action_id], req.session.eval_context(req.context))) class TreeView(View): - _cp_path = "/base/treeview" + _cp_path = "/web/treeview" @openerpweb.jsonrequest def load(self, req, model, view_id, toolbar=False): @@ -1082,62 +1086,22 @@ class TreeView(View): req,'action', 'tree_but_open',[(model, id)], False) -def export_csv(fields, result): - fp = StringIO() - writer = csv.writer(fp, quoting=csv.QUOTE_ALL) - - writer.writerow(fields) - - for data in result: - row = [] - for d in data: - if isinstance(d, basestring): - d = d.replace('\n',' ').replace('\t',' ') - try: - d = d.encode('utf-8') - except: - pass - if d is False: d = None - row.append(d) - writer.writerow(row) - - fp.seek(0) - data = fp.read() - fp.close() - return data - -def export_xls(fieldnames, table): - try: - import xlwt - except ImportError: - common.error(_('Import Error.'), _('Please install xlwt library to export to MS Excel.')) - - workbook = xlwt.Workbook() - worksheet = workbook.add_sheet('Sheet 1') - - for i, fieldname in enumerate(fieldnames): - worksheet.write(0, i, str(fieldname)) - worksheet.col(i).width = 8000 # around 220 pixels - - style = xlwt.easyxf('align: wrap yes') - - for row_index, row in enumerate(table): - for cell_index, cell_value in enumerate(row): - cell_value = str(cell_value) - cell_value = re.sub("\r", " ", cell_value) - worksheet.write(row_index + 1, cell_index, cell_value, style) - - - fp = StringIO() - workbook.save(fp) - fp.seek(0) - data = fp.read() - fp.close() - #return data.decode('ISO-8859-1') - return unicode(data, 'utf-8', 'replace') - class Export(View): - _cp_path = "/base/export" + _cp_path = "/web/export" + + @openerpweb.jsonrequest + def formats(self, req): + """ Returns all valid export formats + + :returns: for each export format, a pair of identifier and printable name + :rtype: [(str, str)] + """ + return sorted([ + controller.fmt + for path, controller in openerpweb.controllers_path.iteritems() + if path.startswith(self._cp_path) + if hasattr(controller, 'fmt') + ], key=operator.itemgetter(1)) def fields_get(self, req, model): Model = req.session.model(model) @@ -1145,159 +1109,236 @@ class Export(View): return fields @openerpweb.jsonrequest - def get_fields(self, req, model, prefix='', name= '', field_parent=None, params={}): - import_compat = params.get("import_compat", False) + def get_fields(self, req, model, prefix='', parent_name= '', + import_compat=True, parent_field_type=None): - fields = self.fields_get(req, model) - field_parent_type = params.get("parent_field_type",False) - - if import_compat and field_parent_type and field_parent_type == "many2one": + if import_compat and parent_field_type == "many2one": fields = {} + else: + fields = self.fields_get(req, model) + fields['.id'] = fields.pop('id') if 'id' in fields else {'string': 'ID'} + + fields_sequence = sorted(fields.iteritems(), + key=lambda field: field[1].get('string', '')) - fields.update({'id': {'string': 'ID'}, '.id': {'string': 'Database ID'}}) records = [] - fields_order = fields.keys() - fields_order.sort(lambda x,y: -cmp(fields[x].get('string', ''), fields[y].get('string', ''))) + for field_name, field in fields_sequence: + if import_compat and field.get('readonly'): + # If none of the field's states unsets readonly, skip the field + if all(dict(attrs).get('readonly', True) + for attrs in field.get('states', {}).values()): + continue - for index, field in enumerate(fields_order): - value = fields[field] - record = {} - if import_compat and value.get('readonly', False): - ok = False - for sl in value.get('states', {}).values(): - for s in sl: - ok = ok or (s==['readonly',False]) - if not ok: continue - - id = prefix + (prefix and '/'or '') + field - nm = name + (name and '/' or '') + value['string'] - record.update(id=id, string= nm, action='javascript: void(0)', - target=None, icon=None, children=[], field_type=value.get('type',False), required=value.get('required', False)) + id = prefix + (prefix and '/'or '') + field_name + name = parent_name + (parent_name and '/' or '') + field['string'] + record = {'id': id, 'string': name, + 'value': id, 'children': False, + 'field_type': field.get('type'), + 'required': field.get('required')} records.append(record) - if len(nm.split('/')) < 3 and value.get('relation', False): - if import_compat: - ref = value.pop('relation') - cfields = self.fields_get(req, ref) - if (value['type'] == 'many2many'): - record['children'] = [] - record['params'] = {'model': ref, 'prefix': id, 'name': nm} + if len(name.split('/')) < 3 and 'relation' in field: + ref = field.pop('relation') + record['value'] += '/id' + record['params'] = {'model': ref, 'prefix': id, 'name': name} - elif value['type'] == 'many2one': - record['children'] = [id + '/id', id + '/.id'] - record['params'] = {'model': ref, 'prefix': id, 'name': nm} + if not import_compat or field['type'] == 'one2many': + # m2m field in import_compat is childless + record['children'] = True - else: - cfields_order = cfields.keys() - cfields_order.sort(lambda x,y: -cmp(cfields[x].get('string', ''), cfields[y].get('string', ''))) - children = [] - for j, fld in enumerate(cfields_order): - cid = id + '/' + fld - cid = cid.replace(' ', '_') - children.append(cid) - record['children'] = children or [] - record['params'] = {'model': ref, 'prefix': id, 'name': nm} - else: - ref = value.pop('relation') - cfields = self.fields_get(req, ref) - cfields_order = cfields.keys() - cfields_order.sort(lambda x,y: -cmp(cfields[x].get('string', ''), cfields[y].get('string', ''))) - children = [] - for j, fld in enumerate(cfields_order): - cid = id + '/' + fld - cid = cid.replace(' ', '_') - children.append(cid) - record['children'] = children or [] - record['params'] = {'model': ref, 'prefix': id, 'name': nm} - - records.reverse() return records - @openerpweb.jsonrequest - def save_export_lists(self, req, name, model, field_list): - result = {'resource':model, 'name':name, 'export_fields': []} - for field in field_list: - result['export_fields'].append((0, 0, {'name': field})) - return req.session.model("ir.exports").create(result, req.session.eval_context(req.context)) - - @openerpweb.jsonrequest - def exist_export_lists(self, req, model): - export_model = req.session.model("ir.exports") - return export_model.read(export_model.search([('resource', '=', model)]), ['name']) - - @openerpweb.jsonrequest - def delete_export(self, req, export_id): - req.session.model("ir.exports").unlink(export_id, req.session.eval_context(req.context)) - return True - @openerpweb.jsonrequest def namelist(self,req, model, export_id): + # TODO: namelist really has no reason to be in Python (although itertools.groupby helps) + export = req.session.model("ir.exports").read([export_id])[0] + export_fields_list = req.session.model("ir.exports.line").read( + export['export_fields']) - result = self.get_data(req, model, req.session.eval_context(req.context)) - ir_export_obj = req.session.model("ir.exports") - ir_export_line_obj = req.session.model("ir.exports.line") + fields_data = self.fields_info( + req, model, map(operator.itemgetter('name'), export_fields_list)) - field = ir_export_obj.read(export_id) - fields = ir_export_line_obj.read(field['export_fields']) + return [ + {'name': field['name'], 'label': fields_data[field['name']]} + for field in export_fields_list + ] - name_list = {} - [name_list.update({field['name']: result.get(field['name'])}) for field in fields] - return name_list - - def get_data(self, req, model, context=None): - ids = [] - context = context or {} - fields_data = {} - proxy = req.session.model(model) + def fields_info(self, req, model, export_fields): + info = {} fields = self.fields_get(req, model) - if not ids: - f1 = proxy.fields_view_get(False, 'tree', context)['fields'] - f2 = proxy.fields_view_get(False, 'form', context)['fields'] + fields['.id'] = fields.pop('id') if 'id' in fields else {'string': 'ID'} - fields = dict(f1) - fields.update(f2) - fields.update({'id': {'string': 'ID'}, '.id': {'string': 'Database ID'}}) + # To make fields retrieval more efficient, fetch all sub-fields of a + # given field at the same time. Because the order in the export list is + # arbitrary, this requires ordering all sub-fields of a given field + # together so they can be fetched at the same time + # + # Works the following way: + # * sort the list of fields to export, the default sorting order will + # put the field itself (if present, for xmlid) and all of its + # sub-fields right after it + # * then, group on: the first field of the path (which is the same for + # a field and for its subfields and the length of splitting on the + # first '/', which basically means grouping the field on one side and + # all of the subfields on the other. This way, we have the field (for + # the xmlid) with length 1, and all of the subfields with the same + # base but a length "flag" of 2 + # * if we have a normal field (length 1), just add it to the info + # mapping (with its string) as-is + # * otherwise, recursively call fields_info via graft_subfields. + # all graft_subfields does is take the result of fields_info (on the + # field's model) and prepend the current base (current field), which + # rebuilds the whole sub-tree for the field + # + # result: because we're not fetching the fields_get for half the + # database models, fetching a namelist with a dozen fields (including + # relational data) falls from ~6s to ~300ms (on the leads model). + # export lists with no sub-fields (e.g. import_compatible lists with + # no o2m) are even more efficient (from the same 6s to ~170ms, as + # there's a single fields_get to execute) + for (base, length), subfields in itertools.groupby( + sorted(export_fields), + lambda field: (field.split('/', 1)[0], len(field.split('/', 1)))): + subfields = list(subfields) + if length == 2: + # subfields is a seq of $base/*rest, and not loaded yet + info.update(self.graft_subfields( + req, fields[base]['relation'], base, fields[base]['string'], + subfields + )) + else: + info[base] = fields[base]['string'] - def rec(fields): - _fields = {'id': 'ID' , '.id': 'Database ID' } - def model_populate(fields, prefix_node='', prefix=None, prefix_value='', level=2): - fields_order = fields.keys() - fields_order.sort(lambda x,y: -cmp(fields[x].get('string', ''), fields[y].get('string', ''))) + return info - for field in fields_order: - fields_data[prefix_node+field] = fields[field] - if prefix_node: - fields_data[prefix_node + field]['string'] = '%s%s' % (prefix_value, fields_data[prefix_node + field]['string']) - st_name = fields[field]['string'] or field - _fields[prefix_node+field] = st_name - if fields[field].get('relation', False) and level>0: - fields2 = self.fields_get(req, fields[field]['relation']) - fields2.update({'id': {'string': 'ID'}, '.id': {'string': 'Database ID'}}) - model_populate(fields2, prefix_node+field+'/', None, st_name+'/', level-1) - model_populate(fields) - return _fields - return rec(fields) + def graft_subfields(self, req, model, prefix, prefix_string, fields): + export_fields = [field.split('/', 1)[1] for field in fields] + return ( + (prefix + '/' + k, prefix_string + '/' + v) + for k, v in self.fields_info(req, model, export_fields).iteritems()) + + #noinspection PyPropertyDefinition + @property + def content_type(self): + """ Provides the format's content type """ + raise NotImplementedError() + + def filename(self, base): + """ Creates a valid filename for the format (with extension) from the + provided base name (exension-less) + """ + raise NotImplementedError() + + def from_data(self, fields, rows): + """ Conversion method from OpenERP's export data to whatever the + current export class outputs + + :params list fields: a list of fields to export + :params list rows: a list of records to export + :returns: + :rtype: bytes + """ + raise NotImplementedError() + + @openerpweb.httprequest + def index(self, req, data, token): + model, fields, ids, domain, import_compat = \ + operator.itemgetter('model', 'fields', 'ids', 'domain', + 'import_compat')( + simplejson.loads(data)) - @openerpweb.jsonrequest - def export_data(self, req, model, fields, ids, domain, import_compat=False, export_format="csv", context=None): context = req.session.eval_context(req.context) - modle_obj = req.session.model(model) + Model = req.session.model(model) + ids = ids or Model.search(domain, context=context) - ids = ids or modle_obj.search(domain, context=context) + field_names = map(operator.itemgetter('name'), fields) + import_data = Model.export_data(ids, field_names, context).get('datas',[]) - field = fields.keys() - result = modle_obj.export_data(ids, field , context).get('datas',[]) - - if not import_compat: - field = [val.strip() for val in fields.values()] - - if export_format == 'xls': - return export_xls(field, result) + if import_compat: + columns_headers = field_names else: - return export_csv(field, result) + columns_headers = [val['label'].strip() for val in fields] -class Export(View): - _cp_path = "/base/report" + + return req.make_response(self.from_data(columns_headers, import_data), + headers=[('Content-Disposition', 'attachment; filename="%s"' % self.filename(model)), + ('Content-Type', self.content_type)], + cookies={'fileToken': int(token)}) + +class CSVExport(Export): + _cp_path = '/web/export/csv' + fmt = ('csv', 'CSV') + + @property + def content_type(self): + return 'text/csv;charset=utf8' + + def filename(self, base): + return base + '.csv' + + def from_data(self, fields, rows): + fp = StringIO() + writer = csv.writer(fp, quoting=csv.QUOTE_ALL) + + writer.writerow(fields) + + for data in rows: + row = [] + for d in data: + if isinstance(d, basestring): + d = d.replace('\n',' ').replace('\t',' ') + try: + d = d.encode('utf-8') + except: + pass + if d is False: d = None + row.append(d) + writer.writerow(row) + + fp.seek(0) + data = fp.read() + fp.close() + return data + +class ExcelExport(Export): + _cp_path = '/web/export/xls' + fmt = ('xls', 'Excel') + + @property + def content_type(self): + return 'application/vnd.ms-excel' + + def filename(self, base): + return base + '.xls' + + def from_data(self, fields, rows): + import xlwt + + workbook = xlwt.Workbook() + worksheet = workbook.add_sheet('Sheet 1') + + for i, fieldname in enumerate(fields): + worksheet.write(0, i, str(fieldname)) + worksheet.col(i).width = 8000 # around 220 pixels + + style = xlwt.easyxf('align: wrap yes') + + for row_index, row in enumerate(rows): + for cell_index, cell_value in enumerate(row): + if isinstance(cell_value, basestring): + cell_value = re.sub("\r", " ", cell_value) + worksheet.write(row_index + 1, cell_index, cell_value, style) + + fp = StringIO() + workbook.save(fp) + fp.seek(0) + data = fp.read() + fp.close() + return data + + +class Reports(View): + _cp_path = "/web/report" @openerpweb.jsonrequest def get_report(self, req, action): @@ -1315,6 +1356,7 @@ class Export(View): break time.sleep(_REPORT_POLLER_DELAY) + #TODO: ok now we've got the report, and so what? return False diff --git a/addons/base/po/base.pot b/addons/web/po/base.pot similarity index 100% rename from addons/base/po/base.pot rename to addons/web/po/base.pot diff --git a/addons/base/po/fr_FR.po b/addons/web/po/fr_FR.po similarity index 100% rename from addons/base/po/fr_FR.po rename to addons/web/po/fr_FR.po diff --git a/addons/web/po/web.pot b/addons/web/po/web.pot new file mode 100644 index 00000000000..8d302a41fd7 --- /dev/null +++ b/addons/web/po/web.pot @@ -0,0 +1,574 @@ +# Translations template for PROJECT. +# Copyright (C) 2011 ORGANIZATION +# This file is distributed under the same license as the PROJECT project. +# FIRST AUTHOR , 2011. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PROJECT VERSION\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2011-09-06 12:02+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 0.9.6\n" + +#: addons/web/static/src/js/form.js:1473 +msgid "   Search More..." +msgstr "" + +#: addons/web/static/src/js/form.js:1486 +#, python-format +msgid "   Create \"%s\"" +msgstr "" + +#: addons/web/static/src/js/form.js:1492 +msgid "   Create and Edit..." +msgstr "" + +#: addons/web/static/src/js/views.js:484 +msgid "Translations" +msgstr "" + +#: addons/web/static/src/js/views.js:489 addons/web/static/src/xml/base.xml:0 +msgid "Save" +msgstr "" + +#: addons/web/static/src/js/views.js:490 +msgid "Close" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "x" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "#{title}" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "#{text}" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Powered by" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "openerp.com" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Loading..." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Create" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Drop" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Backup" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Restore" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Password" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Back to Login" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "CREATE DATABASE" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Master password:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "New database name:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Load Demonstration data:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Default language:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Admin password:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Confirm password:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "DROP DATABASE" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Database:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Master Password:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "BACKUP DATABASE" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "RESTORE DATABASE" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "File:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "CHANGE MASTER PASSWORD" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "New master password:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Confirm new master password:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "User:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Password:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Database" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Login" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Bad username or password" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"We think that daily job activities can be more intuitive, efficient, " +"automated, .. and even fun." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "OpenERP's vision to be:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Full featured" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"Today's enterprise challenges are multiple. We provide one module for " +"each need." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Open Source" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"To Build a great product, we rely on the knowledge of thousands of " +"contributors." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "User Friendly" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "In order to be productive, people need clean and easy to use interface." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "(" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid ")" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "LOGOUT" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "h3" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "<" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid ">" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid ">" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Add" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Unhandled widget" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "?" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Open..." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Create..." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Search..." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "..." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Uploading ..." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Select" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save As" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Clear" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Advanced Filter" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "-- Filters --" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "-- Actions --" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save Filter" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Manage Filters" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Filter Name:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "(Any existing filter with the same name will be replaced)" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Any of the following conditions must match" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "All the following conditions must match" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "None of the following conditions must match" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Add condition" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "and" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Cancel" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save & New" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save & Close" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Export" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"This wizard will export all data that matches the current search criteria" +" to a CSV file.\n" +" You can export all data or only the fields that can be " +"reimported after modification." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Export Type:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Import Compatible Export" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Export all Data" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Export Formats" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Available fields" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Fields to export" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save fields list" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Remove" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Remove All" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Name" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid " " +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save as:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Ok" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Saved exports:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Old Password:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "New Password:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Confirm Password:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "OpenERP Web" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Version" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Copyright © 2011-TODAY OpenERP SA. All Rights Reserved." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "OpenERP is a trademark of the" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "OpenERP SA Company" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Licenced under the terms of" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "GNU Affero General Public License" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "About OpenERP" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "OpenERP" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"is a free enterprise-scale software system that is designed to boost\n" +" productivity and profit through data integration. It " +"connects, improves and\n" +" manages business processes in areas such as sales, finance, " +"supply chain,\n" +" project management, production, services, CRM, etc..." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"The system is platform-independent, and can be installed on Windows, Mac " +"OS X,\n" +" and various Linux and other Unix-based distributions. Its " +"architecture enables\n" +" new functionality to be rapidly created, modifications to be " +"made to a\n" +" production system and migration to a new version to be " +"straightforward." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"Depending on your needs, OpenERP is available through a web or " +"application client." +msgstr "" + diff --git a/addons/base/static/lib/datejs/core.js b/addons/web/static/lib/datejs/core.js similarity index 100% rename from addons/base/static/lib/datejs/core.js rename to addons/web/static/lib/datejs/core.js diff --git a/addons/base/static/lib/datejs/date.js b/addons/web/static/lib/datejs/date.js similarity index 100% rename from addons/base/static/lib/datejs/date.js rename to addons/web/static/lib/datejs/date.js diff --git a/addons/base/static/lib/datejs/extras.js b/addons/web/static/lib/datejs/extras.js similarity index 100% rename from addons/base/static/lib/datejs/extras.js rename to addons/web/static/lib/datejs/extras.js diff --git a/addons/base/static/lib/datejs/globalization/af-ZA.js b/addons/web/static/lib/datejs/globalization/af-ZA.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/af-ZA.js rename to addons/web/static/lib/datejs/globalization/af-ZA.js diff --git a/addons/base/static/lib/datejs/globalization/ar-AE.js b/addons/web/static/lib/datejs/globalization/ar-AE.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ar-AE.js rename to addons/web/static/lib/datejs/globalization/ar-AE.js diff --git a/addons/base/static/lib/datejs/globalization/ar-BH.js b/addons/web/static/lib/datejs/globalization/ar-BH.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ar-BH.js rename to addons/web/static/lib/datejs/globalization/ar-BH.js diff --git a/addons/base/static/lib/datejs/globalization/ar-DZ.js b/addons/web/static/lib/datejs/globalization/ar-DZ.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ar-DZ.js rename to addons/web/static/lib/datejs/globalization/ar-DZ.js diff --git a/addons/base/static/lib/datejs/globalization/ar-EG.js b/addons/web/static/lib/datejs/globalization/ar-EG.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ar-EG.js rename to addons/web/static/lib/datejs/globalization/ar-EG.js diff --git a/addons/base/static/lib/datejs/globalization/ar-IQ.js b/addons/web/static/lib/datejs/globalization/ar-IQ.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ar-IQ.js rename to addons/web/static/lib/datejs/globalization/ar-IQ.js diff --git a/addons/base/static/lib/datejs/globalization/ar-JO.js b/addons/web/static/lib/datejs/globalization/ar-JO.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ar-JO.js rename to addons/web/static/lib/datejs/globalization/ar-JO.js diff --git a/addons/base/static/lib/datejs/globalization/ar-KW.js b/addons/web/static/lib/datejs/globalization/ar-KW.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ar-KW.js rename to addons/web/static/lib/datejs/globalization/ar-KW.js diff --git a/addons/base/static/lib/datejs/globalization/ar-LB.js b/addons/web/static/lib/datejs/globalization/ar-LB.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ar-LB.js rename to addons/web/static/lib/datejs/globalization/ar-LB.js diff --git a/addons/base/static/lib/datejs/globalization/ar-LY.js b/addons/web/static/lib/datejs/globalization/ar-LY.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ar-LY.js rename to addons/web/static/lib/datejs/globalization/ar-LY.js diff --git a/addons/base/static/lib/datejs/globalization/ar-MA.js b/addons/web/static/lib/datejs/globalization/ar-MA.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ar-MA.js rename to addons/web/static/lib/datejs/globalization/ar-MA.js diff --git a/addons/base/static/lib/datejs/globalization/ar-OM.js b/addons/web/static/lib/datejs/globalization/ar-OM.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ar-OM.js rename to addons/web/static/lib/datejs/globalization/ar-OM.js diff --git a/addons/base/static/lib/datejs/globalization/ar-QA.js b/addons/web/static/lib/datejs/globalization/ar-QA.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ar-QA.js rename to addons/web/static/lib/datejs/globalization/ar-QA.js diff --git a/addons/base/static/lib/datejs/globalization/ar-SA.js b/addons/web/static/lib/datejs/globalization/ar-SA.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ar-SA.js rename to addons/web/static/lib/datejs/globalization/ar-SA.js diff --git a/addons/base/static/lib/datejs/globalization/ar-SY.js b/addons/web/static/lib/datejs/globalization/ar-SY.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ar-SY.js rename to addons/web/static/lib/datejs/globalization/ar-SY.js diff --git a/addons/base/static/lib/datejs/globalization/ar-TN.js b/addons/web/static/lib/datejs/globalization/ar-TN.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ar-TN.js rename to addons/web/static/lib/datejs/globalization/ar-TN.js diff --git a/addons/base/static/lib/datejs/globalization/ar-YE.js b/addons/web/static/lib/datejs/globalization/ar-YE.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ar-YE.js rename to addons/web/static/lib/datejs/globalization/ar-YE.js diff --git a/addons/base/static/lib/datejs/globalization/az-Cyrl-AZ.js b/addons/web/static/lib/datejs/globalization/az-Cyrl-AZ.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/az-Cyrl-AZ.js rename to addons/web/static/lib/datejs/globalization/az-Cyrl-AZ.js diff --git a/addons/base/static/lib/datejs/globalization/az-Latn-AZ.js b/addons/web/static/lib/datejs/globalization/az-Latn-AZ.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/az-Latn-AZ.js rename to addons/web/static/lib/datejs/globalization/az-Latn-AZ.js diff --git a/addons/base/static/lib/datejs/globalization/be-BY.js b/addons/web/static/lib/datejs/globalization/be-BY.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/be-BY.js rename to addons/web/static/lib/datejs/globalization/be-BY.js diff --git a/addons/base/static/lib/datejs/globalization/bg-BG.js b/addons/web/static/lib/datejs/globalization/bg-BG.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/bg-BG.js rename to addons/web/static/lib/datejs/globalization/bg-BG.js diff --git a/addons/base/static/lib/datejs/globalization/bs-Latn-BA.js b/addons/web/static/lib/datejs/globalization/bs-Latn-BA.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/bs-Latn-BA.js rename to addons/web/static/lib/datejs/globalization/bs-Latn-BA.js diff --git a/addons/base/static/lib/datejs/globalization/ca-ES.js b/addons/web/static/lib/datejs/globalization/ca-ES.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ca-ES.js rename to addons/web/static/lib/datejs/globalization/ca-ES.js diff --git a/addons/base/static/lib/datejs/globalization/cs-CZ.js b/addons/web/static/lib/datejs/globalization/cs-CZ.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/cs-CZ.js rename to addons/web/static/lib/datejs/globalization/cs-CZ.js diff --git a/addons/base/static/lib/datejs/globalization/cy-GB.js b/addons/web/static/lib/datejs/globalization/cy-GB.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/cy-GB.js rename to addons/web/static/lib/datejs/globalization/cy-GB.js diff --git a/addons/base/static/lib/datejs/globalization/da-DK.js b/addons/web/static/lib/datejs/globalization/da-DK.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/da-DK.js rename to addons/web/static/lib/datejs/globalization/da-DK.js diff --git a/addons/base/static/lib/datejs/globalization/de-AT.js b/addons/web/static/lib/datejs/globalization/de-AT.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/de-AT.js rename to addons/web/static/lib/datejs/globalization/de-AT.js diff --git a/addons/base/static/lib/datejs/globalization/de-CH.js b/addons/web/static/lib/datejs/globalization/de-CH.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/de-CH.js rename to addons/web/static/lib/datejs/globalization/de-CH.js diff --git a/addons/base/static/lib/datejs/globalization/de-DE.js b/addons/web/static/lib/datejs/globalization/de-DE.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/de-DE.js rename to addons/web/static/lib/datejs/globalization/de-DE.js diff --git a/addons/base/static/lib/datejs/globalization/de-LI.js b/addons/web/static/lib/datejs/globalization/de-LI.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/de-LI.js rename to addons/web/static/lib/datejs/globalization/de-LI.js diff --git a/addons/base/static/lib/datejs/globalization/de-LU.js b/addons/web/static/lib/datejs/globalization/de-LU.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/de-LU.js rename to addons/web/static/lib/datejs/globalization/de-LU.js diff --git a/addons/base/static/lib/datejs/globalization/dv-MV.js b/addons/web/static/lib/datejs/globalization/dv-MV.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/dv-MV.js rename to addons/web/static/lib/datejs/globalization/dv-MV.js diff --git a/addons/base/static/lib/datejs/globalization/el-GR.js b/addons/web/static/lib/datejs/globalization/el-GR.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/el-GR.js rename to addons/web/static/lib/datejs/globalization/el-GR.js diff --git a/addons/base/static/lib/datejs/globalization/en-029.js b/addons/web/static/lib/datejs/globalization/en-029.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/en-029.js rename to addons/web/static/lib/datejs/globalization/en-029.js diff --git a/addons/base/static/lib/datejs/globalization/en-AU.js b/addons/web/static/lib/datejs/globalization/en-AU.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/en-AU.js rename to addons/web/static/lib/datejs/globalization/en-AU.js diff --git a/addons/base/static/lib/datejs/globalization/en-BZ.js b/addons/web/static/lib/datejs/globalization/en-BZ.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/en-BZ.js rename to addons/web/static/lib/datejs/globalization/en-BZ.js diff --git a/addons/base/static/lib/datejs/globalization/en-CA.js b/addons/web/static/lib/datejs/globalization/en-CA.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/en-CA.js rename to addons/web/static/lib/datejs/globalization/en-CA.js diff --git a/addons/base/static/lib/datejs/globalization/en-GB.js b/addons/web/static/lib/datejs/globalization/en-GB.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/en-GB.js rename to addons/web/static/lib/datejs/globalization/en-GB.js diff --git a/addons/base/static/lib/datejs/globalization/en-IE.js b/addons/web/static/lib/datejs/globalization/en-IE.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/en-IE.js rename to addons/web/static/lib/datejs/globalization/en-IE.js diff --git a/addons/base/static/lib/datejs/globalization/en-JM.js b/addons/web/static/lib/datejs/globalization/en-JM.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/en-JM.js rename to addons/web/static/lib/datejs/globalization/en-JM.js diff --git a/addons/base/static/lib/datejs/globalization/en-NZ.js b/addons/web/static/lib/datejs/globalization/en-NZ.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/en-NZ.js rename to addons/web/static/lib/datejs/globalization/en-NZ.js diff --git a/addons/base/static/lib/datejs/globalization/en-PH.js b/addons/web/static/lib/datejs/globalization/en-PH.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/en-PH.js rename to addons/web/static/lib/datejs/globalization/en-PH.js diff --git a/addons/base/static/lib/datejs/globalization/en-TT.js b/addons/web/static/lib/datejs/globalization/en-TT.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/en-TT.js rename to addons/web/static/lib/datejs/globalization/en-TT.js diff --git a/addons/base/static/lib/datejs/globalization/en-US.js b/addons/web/static/lib/datejs/globalization/en-US.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/en-US.js rename to addons/web/static/lib/datejs/globalization/en-US.js diff --git a/addons/base/static/lib/datejs/globalization/en-ZA.js b/addons/web/static/lib/datejs/globalization/en-ZA.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/en-ZA.js rename to addons/web/static/lib/datejs/globalization/en-ZA.js diff --git a/addons/base/static/lib/datejs/globalization/en-ZW.js b/addons/web/static/lib/datejs/globalization/en-ZW.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/en-ZW.js rename to addons/web/static/lib/datejs/globalization/en-ZW.js diff --git a/addons/base/static/lib/datejs/globalization/es-AR.js b/addons/web/static/lib/datejs/globalization/es-AR.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/es-AR.js rename to addons/web/static/lib/datejs/globalization/es-AR.js diff --git a/addons/base/static/lib/datejs/globalization/es-BO.js b/addons/web/static/lib/datejs/globalization/es-BO.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/es-BO.js rename to addons/web/static/lib/datejs/globalization/es-BO.js diff --git a/addons/base/static/lib/datejs/globalization/es-CL.js b/addons/web/static/lib/datejs/globalization/es-CL.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/es-CL.js rename to addons/web/static/lib/datejs/globalization/es-CL.js diff --git a/addons/base/static/lib/datejs/globalization/es-CO.js b/addons/web/static/lib/datejs/globalization/es-CO.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/es-CO.js rename to addons/web/static/lib/datejs/globalization/es-CO.js diff --git a/addons/base/static/lib/datejs/globalization/es-CR.js b/addons/web/static/lib/datejs/globalization/es-CR.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/es-CR.js rename to addons/web/static/lib/datejs/globalization/es-CR.js diff --git a/addons/base/static/lib/datejs/globalization/es-DO.js b/addons/web/static/lib/datejs/globalization/es-DO.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/es-DO.js rename to addons/web/static/lib/datejs/globalization/es-DO.js diff --git a/addons/base/static/lib/datejs/globalization/es-EC.js b/addons/web/static/lib/datejs/globalization/es-EC.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/es-EC.js rename to addons/web/static/lib/datejs/globalization/es-EC.js diff --git a/addons/base/static/lib/datejs/globalization/es-ES.js b/addons/web/static/lib/datejs/globalization/es-ES.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/es-ES.js rename to addons/web/static/lib/datejs/globalization/es-ES.js diff --git a/addons/base/static/lib/datejs/globalization/es-GT.js b/addons/web/static/lib/datejs/globalization/es-GT.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/es-GT.js rename to addons/web/static/lib/datejs/globalization/es-GT.js diff --git a/addons/base/static/lib/datejs/globalization/es-HN.js b/addons/web/static/lib/datejs/globalization/es-HN.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/es-HN.js rename to addons/web/static/lib/datejs/globalization/es-HN.js diff --git a/addons/base/static/lib/datejs/globalization/es-MX.js b/addons/web/static/lib/datejs/globalization/es-MX.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/es-MX.js rename to addons/web/static/lib/datejs/globalization/es-MX.js diff --git a/addons/base/static/lib/datejs/globalization/es-NI.js b/addons/web/static/lib/datejs/globalization/es-NI.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/es-NI.js rename to addons/web/static/lib/datejs/globalization/es-NI.js diff --git a/addons/base/static/lib/datejs/globalization/es-PA.js b/addons/web/static/lib/datejs/globalization/es-PA.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/es-PA.js rename to addons/web/static/lib/datejs/globalization/es-PA.js diff --git a/addons/base/static/lib/datejs/globalization/es-PE.js b/addons/web/static/lib/datejs/globalization/es-PE.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/es-PE.js rename to addons/web/static/lib/datejs/globalization/es-PE.js diff --git a/addons/base/static/lib/datejs/globalization/es-PR.js b/addons/web/static/lib/datejs/globalization/es-PR.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/es-PR.js rename to addons/web/static/lib/datejs/globalization/es-PR.js diff --git a/addons/base/static/lib/datejs/globalization/es-PY.js b/addons/web/static/lib/datejs/globalization/es-PY.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/es-PY.js rename to addons/web/static/lib/datejs/globalization/es-PY.js diff --git a/addons/base/static/lib/datejs/globalization/es-SV.js b/addons/web/static/lib/datejs/globalization/es-SV.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/es-SV.js rename to addons/web/static/lib/datejs/globalization/es-SV.js diff --git a/addons/base/static/lib/datejs/globalization/es-UY.js b/addons/web/static/lib/datejs/globalization/es-UY.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/es-UY.js rename to addons/web/static/lib/datejs/globalization/es-UY.js diff --git a/addons/base/static/lib/datejs/globalization/es-VE.js b/addons/web/static/lib/datejs/globalization/es-VE.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/es-VE.js rename to addons/web/static/lib/datejs/globalization/es-VE.js diff --git a/addons/base/static/lib/datejs/globalization/et-EE.js b/addons/web/static/lib/datejs/globalization/et-EE.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/et-EE.js rename to addons/web/static/lib/datejs/globalization/et-EE.js diff --git a/addons/base/static/lib/datejs/globalization/eu-ES.js b/addons/web/static/lib/datejs/globalization/eu-ES.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/eu-ES.js rename to addons/web/static/lib/datejs/globalization/eu-ES.js diff --git a/addons/base/static/lib/datejs/globalization/fa-IR.js b/addons/web/static/lib/datejs/globalization/fa-IR.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/fa-IR.js rename to addons/web/static/lib/datejs/globalization/fa-IR.js diff --git a/addons/base/static/lib/datejs/globalization/fi-FI.js b/addons/web/static/lib/datejs/globalization/fi-FI.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/fi-FI.js rename to addons/web/static/lib/datejs/globalization/fi-FI.js diff --git a/addons/base/static/lib/datejs/globalization/fo-FO.js b/addons/web/static/lib/datejs/globalization/fo-FO.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/fo-FO.js rename to addons/web/static/lib/datejs/globalization/fo-FO.js diff --git a/addons/base/static/lib/datejs/globalization/fr-BE.js b/addons/web/static/lib/datejs/globalization/fr-BE.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/fr-BE.js rename to addons/web/static/lib/datejs/globalization/fr-BE.js diff --git a/addons/base/static/lib/datejs/globalization/fr-CA.js b/addons/web/static/lib/datejs/globalization/fr-CA.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/fr-CA.js rename to addons/web/static/lib/datejs/globalization/fr-CA.js diff --git a/addons/base/static/lib/datejs/globalization/fr-CH.js b/addons/web/static/lib/datejs/globalization/fr-CH.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/fr-CH.js rename to addons/web/static/lib/datejs/globalization/fr-CH.js diff --git a/addons/base/static/lib/datejs/globalization/fr-FR.js b/addons/web/static/lib/datejs/globalization/fr-FR.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/fr-FR.js rename to addons/web/static/lib/datejs/globalization/fr-FR.js diff --git a/addons/base/static/lib/datejs/globalization/fr-LU.js b/addons/web/static/lib/datejs/globalization/fr-LU.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/fr-LU.js rename to addons/web/static/lib/datejs/globalization/fr-LU.js diff --git a/addons/base/static/lib/datejs/globalization/fr-MC.js b/addons/web/static/lib/datejs/globalization/fr-MC.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/fr-MC.js rename to addons/web/static/lib/datejs/globalization/fr-MC.js diff --git a/addons/base/static/lib/datejs/globalization/gl-ES.js b/addons/web/static/lib/datejs/globalization/gl-ES.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/gl-ES.js rename to addons/web/static/lib/datejs/globalization/gl-ES.js diff --git a/addons/base/static/lib/datejs/globalization/gu-IN.js b/addons/web/static/lib/datejs/globalization/gu-IN.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/gu-IN.js rename to addons/web/static/lib/datejs/globalization/gu-IN.js diff --git a/addons/base/static/lib/datejs/globalization/he-IL.js b/addons/web/static/lib/datejs/globalization/he-IL.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/he-IL.js rename to addons/web/static/lib/datejs/globalization/he-IL.js diff --git a/addons/base/static/lib/datejs/globalization/hi-IN.js b/addons/web/static/lib/datejs/globalization/hi-IN.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/hi-IN.js rename to addons/web/static/lib/datejs/globalization/hi-IN.js diff --git a/addons/base/static/lib/datejs/globalization/hr-BA.js b/addons/web/static/lib/datejs/globalization/hr-BA.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/hr-BA.js rename to addons/web/static/lib/datejs/globalization/hr-BA.js diff --git a/addons/base/static/lib/datejs/globalization/hr-HR.js b/addons/web/static/lib/datejs/globalization/hr-HR.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/hr-HR.js rename to addons/web/static/lib/datejs/globalization/hr-HR.js diff --git a/addons/base/static/lib/datejs/globalization/hu-HU.js b/addons/web/static/lib/datejs/globalization/hu-HU.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/hu-HU.js rename to addons/web/static/lib/datejs/globalization/hu-HU.js diff --git a/addons/base/static/lib/datejs/globalization/hy-AM.js b/addons/web/static/lib/datejs/globalization/hy-AM.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/hy-AM.js rename to addons/web/static/lib/datejs/globalization/hy-AM.js diff --git a/addons/base/static/lib/datejs/globalization/id-ID.js b/addons/web/static/lib/datejs/globalization/id-ID.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/id-ID.js rename to addons/web/static/lib/datejs/globalization/id-ID.js diff --git a/addons/base/static/lib/datejs/globalization/is-IS.js b/addons/web/static/lib/datejs/globalization/is-IS.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/is-IS.js rename to addons/web/static/lib/datejs/globalization/is-IS.js diff --git a/addons/base/static/lib/datejs/globalization/it-CH.js b/addons/web/static/lib/datejs/globalization/it-CH.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/it-CH.js rename to addons/web/static/lib/datejs/globalization/it-CH.js diff --git a/addons/base/static/lib/datejs/globalization/it-IT.js b/addons/web/static/lib/datejs/globalization/it-IT.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/it-IT.js rename to addons/web/static/lib/datejs/globalization/it-IT.js diff --git a/addons/base/static/lib/datejs/globalization/ja-JP.js b/addons/web/static/lib/datejs/globalization/ja-JP.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ja-JP.js rename to addons/web/static/lib/datejs/globalization/ja-JP.js diff --git a/addons/base/static/lib/datejs/globalization/ka-GE.js b/addons/web/static/lib/datejs/globalization/ka-GE.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ka-GE.js rename to addons/web/static/lib/datejs/globalization/ka-GE.js diff --git a/addons/base/static/lib/datejs/globalization/kk-KZ.js b/addons/web/static/lib/datejs/globalization/kk-KZ.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/kk-KZ.js rename to addons/web/static/lib/datejs/globalization/kk-KZ.js diff --git a/addons/base/static/lib/datejs/globalization/kn-IN.js b/addons/web/static/lib/datejs/globalization/kn-IN.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/kn-IN.js rename to addons/web/static/lib/datejs/globalization/kn-IN.js diff --git a/addons/base/static/lib/datejs/globalization/ko-KR.js b/addons/web/static/lib/datejs/globalization/ko-KR.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ko-KR.js rename to addons/web/static/lib/datejs/globalization/ko-KR.js diff --git a/addons/base/static/lib/datejs/globalization/kok-IN.js b/addons/web/static/lib/datejs/globalization/kok-IN.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/kok-IN.js rename to addons/web/static/lib/datejs/globalization/kok-IN.js diff --git a/addons/base/static/lib/datejs/globalization/ky-KG.js b/addons/web/static/lib/datejs/globalization/ky-KG.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ky-KG.js rename to addons/web/static/lib/datejs/globalization/ky-KG.js diff --git a/addons/base/static/lib/datejs/globalization/lt-LT.js b/addons/web/static/lib/datejs/globalization/lt-LT.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/lt-LT.js rename to addons/web/static/lib/datejs/globalization/lt-LT.js diff --git a/addons/base/static/lib/datejs/globalization/lv-LV.js b/addons/web/static/lib/datejs/globalization/lv-LV.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/lv-LV.js rename to addons/web/static/lib/datejs/globalization/lv-LV.js diff --git a/addons/base/static/lib/datejs/globalization/mi-NZ.js b/addons/web/static/lib/datejs/globalization/mi-NZ.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/mi-NZ.js rename to addons/web/static/lib/datejs/globalization/mi-NZ.js diff --git a/addons/base/static/lib/datejs/globalization/mk-MK.js b/addons/web/static/lib/datejs/globalization/mk-MK.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/mk-MK.js rename to addons/web/static/lib/datejs/globalization/mk-MK.js diff --git a/addons/base/static/lib/datejs/globalization/mn-MN.js b/addons/web/static/lib/datejs/globalization/mn-MN.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/mn-MN.js rename to addons/web/static/lib/datejs/globalization/mn-MN.js diff --git a/addons/base/static/lib/datejs/globalization/mr-IN.js b/addons/web/static/lib/datejs/globalization/mr-IN.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/mr-IN.js rename to addons/web/static/lib/datejs/globalization/mr-IN.js diff --git a/addons/base/static/lib/datejs/globalization/ms-BN.js b/addons/web/static/lib/datejs/globalization/ms-BN.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ms-BN.js rename to addons/web/static/lib/datejs/globalization/ms-BN.js diff --git a/addons/base/static/lib/datejs/globalization/ms-MY.js b/addons/web/static/lib/datejs/globalization/ms-MY.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ms-MY.js rename to addons/web/static/lib/datejs/globalization/ms-MY.js diff --git a/addons/base/static/lib/datejs/globalization/mt-MT.js b/addons/web/static/lib/datejs/globalization/mt-MT.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/mt-MT.js rename to addons/web/static/lib/datejs/globalization/mt-MT.js diff --git a/addons/base/static/lib/datejs/globalization/nb-NO.js b/addons/web/static/lib/datejs/globalization/nb-NO.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/nb-NO.js rename to addons/web/static/lib/datejs/globalization/nb-NO.js diff --git a/addons/base/static/lib/datejs/globalization/nl-BE.js b/addons/web/static/lib/datejs/globalization/nl-BE.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/nl-BE.js rename to addons/web/static/lib/datejs/globalization/nl-BE.js diff --git a/addons/base/static/lib/datejs/globalization/nl-NL.js b/addons/web/static/lib/datejs/globalization/nl-NL.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/nl-NL.js rename to addons/web/static/lib/datejs/globalization/nl-NL.js diff --git a/addons/base/static/lib/datejs/globalization/nn-NO.js b/addons/web/static/lib/datejs/globalization/nn-NO.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/nn-NO.js rename to addons/web/static/lib/datejs/globalization/nn-NO.js diff --git a/addons/base/static/lib/datejs/globalization/ns-ZA.js b/addons/web/static/lib/datejs/globalization/ns-ZA.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ns-ZA.js rename to addons/web/static/lib/datejs/globalization/ns-ZA.js diff --git a/addons/base/static/lib/datejs/globalization/pa-IN.js b/addons/web/static/lib/datejs/globalization/pa-IN.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/pa-IN.js rename to addons/web/static/lib/datejs/globalization/pa-IN.js diff --git a/addons/base/static/lib/datejs/globalization/pl-PL.js b/addons/web/static/lib/datejs/globalization/pl-PL.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/pl-PL.js rename to addons/web/static/lib/datejs/globalization/pl-PL.js diff --git a/addons/base/static/lib/datejs/globalization/pt-BR.js b/addons/web/static/lib/datejs/globalization/pt-BR.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/pt-BR.js rename to addons/web/static/lib/datejs/globalization/pt-BR.js diff --git a/addons/base/static/lib/datejs/globalization/pt-PT.js b/addons/web/static/lib/datejs/globalization/pt-PT.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/pt-PT.js rename to addons/web/static/lib/datejs/globalization/pt-PT.js diff --git a/addons/base/static/lib/datejs/globalization/quz-BO.js b/addons/web/static/lib/datejs/globalization/quz-BO.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/quz-BO.js rename to addons/web/static/lib/datejs/globalization/quz-BO.js diff --git a/addons/base/static/lib/datejs/globalization/quz-EC.js b/addons/web/static/lib/datejs/globalization/quz-EC.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/quz-EC.js rename to addons/web/static/lib/datejs/globalization/quz-EC.js diff --git a/addons/base/static/lib/datejs/globalization/quz-PE.js b/addons/web/static/lib/datejs/globalization/quz-PE.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/quz-PE.js rename to addons/web/static/lib/datejs/globalization/quz-PE.js diff --git a/addons/base/static/lib/datejs/globalization/ro-RO.js b/addons/web/static/lib/datejs/globalization/ro-RO.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ro-RO.js rename to addons/web/static/lib/datejs/globalization/ro-RO.js diff --git a/addons/base/static/lib/datejs/globalization/ru-RU.js b/addons/web/static/lib/datejs/globalization/ru-RU.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ru-RU.js rename to addons/web/static/lib/datejs/globalization/ru-RU.js diff --git a/addons/base/static/lib/datejs/globalization/sa-IN.js b/addons/web/static/lib/datejs/globalization/sa-IN.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/sa-IN.js rename to addons/web/static/lib/datejs/globalization/sa-IN.js diff --git a/addons/base/static/lib/datejs/globalization/se-FI.js b/addons/web/static/lib/datejs/globalization/se-FI.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/se-FI.js rename to addons/web/static/lib/datejs/globalization/se-FI.js diff --git a/addons/base/static/lib/datejs/globalization/se-NO.js b/addons/web/static/lib/datejs/globalization/se-NO.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/se-NO.js rename to addons/web/static/lib/datejs/globalization/se-NO.js diff --git a/addons/base/static/lib/datejs/globalization/se-SE.js b/addons/web/static/lib/datejs/globalization/se-SE.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/se-SE.js rename to addons/web/static/lib/datejs/globalization/se-SE.js diff --git a/addons/base/static/lib/datejs/globalization/sk-SK.js b/addons/web/static/lib/datejs/globalization/sk-SK.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/sk-SK.js rename to addons/web/static/lib/datejs/globalization/sk-SK.js diff --git a/addons/base/static/lib/datejs/globalization/sl-SI.js b/addons/web/static/lib/datejs/globalization/sl-SI.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/sl-SI.js rename to addons/web/static/lib/datejs/globalization/sl-SI.js diff --git a/addons/base/static/lib/datejs/globalization/sma-NO.js b/addons/web/static/lib/datejs/globalization/sma-NO.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/sma-NO.js rename to addons/web/static/lib/datejs/globalization/sma-NO.js diff --git a/addons/base/static/lib/datejs/globalization/sma-SE.js b/addons/web/static/lib/datejs/globalization/sma-SE.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/sma-SE.js rename to addons/web/static/lib/datejs/globalization/sma-SE.js diff --git a/addons/base/static/lib/datejs/globalization/smj-NO.js b/addons/web/static/lib/datejs/globalization/smj-NO.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/smj-NO.js rename to addons/web/static/lib/datejs/globalization/smj-NO.js diff --git a/addons/base/static/lib/datejs/globalization/smj-SE.js b/addons/web/static/lib/datejs/globalization/smj-SE.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/smj-SE.js rename to addons/web/static/lib/datejs/globalization/smj-SE.js diff --git a/addons/base/static/lib/datejs/globalization/smn-FI.js b/addons/web/static/lib/datejs/globalization/smn-FI.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/smn-FI.js rename to addons/web/static/lib/datejs/globalization/smn-FI.js diff --git a/addons/base/static/lib/datejs/globalization/sms-FI.js b/addons/web/static/lib/datejs/globalization/sms-FI.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/sms-FI.js rename to addons/web/static/lib/datejs/globalization/sms-FI.js diff --git a/addons/base/static/lib/datejs/globalization/sq-AL.js b/addons/web/static/lib/datejs/globalization/sq-AL.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/sq-AL.js rename to addons/web/static/lib/datejs/globalization/sq-AL.js diff --git a/addons/base/static/lib/datejs/globalization/sr-Cyrl-BA.js b/addons/web/static/lib/datejs/globalization/sr-Cyrl-BA.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/sr-Cyrl-BA.js rename to addons/web/static/lib/datejs/globalization/sr-Cyrl-BA.js diff --git a/addons/base/static/lib/datejs/globalization/sr-Cyrl-CS.js b/addons/web/static/lib/datejs/globalization/sr-Cyrl-CS.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/sr-Cyrl-CS.js rename to addons/web/static/lib/datejs/globalization/sr-Cyrl-CS.js diff --git a/addons/base/static/lib/datejs/globalization/sr-Latn-BA.js b/addons/web/static/lib/datejs/globalization/sr-Latn-BA.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/sr-Latn-BA.js rename to addons/web/static/lib/datejs/globalization/sr-Latn-BA.js diff --git a/addons/base/static/lib/datejs/globalization/sr-Latn-CS.js b/addons/web/static/lib/datejs/globalization/sr-Latn-CS.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/sr-Latn-CS.js rename to addons/web/static/lib/datejs/globalization/sr-Latn-CS.js diff --git a/addons/base/static/lib/datejs/globalization/sv-FI.js b/addons/web/static/lib/datejs/globalization/sv-FI.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/sv-FI.js rename to addons/web/static/lib/datejs/globalization/sv-FI.js diff --git a/addons/base/static/lib/datejs/globalization/sv-SE.js b/addons/web/static/lib/datejs/globalization/sv-SE.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/sv-SE.js rename to addons/web/static/lib/datejs/globalization/sv-SE.js diff --git a/addons/base/static/lib/datejs/globalization/sw-KE.js b/addons/web/static/lib/datejs/globalization/sw-KE.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/sw-KE.js rename to addons/web/static/lib/datejs/globalization/sw-KE.js diff --git a/addons/base/static/lib/datejs/globalization/syr-SY.js b/addons/web/static/lib/datejs/globalization/syr-SY.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/syr-SY.js rename to addons/web/static/lib/datejs/globalization/syr-SY.js diff --git a/addons/base/static/lib/datejs/globalization/ta-IN.js b/addons/web/static/lib/datejs/globalization/ta-IN.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ta-IN.js rename to addons/web/static/lib/datejs/globalization/ta-IN.js diff --git a/addons/base/static/lib/datejs/globalization/te-IN.js b/addons/web/static/lib/datejs/globalization/te-IN.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/te-IN.js rename to addons/web/static/lib/datejs/globalization/te-IN.js diff --git a/addons/base/static/lib/datejs/globalization/th-TH.js b/addons/web/static/lib/datejs/globalization/th-TH.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/th-TH.js rename to addons/web/static/lib/datejs/globalization/th-TH.js diff --git a/addons/base/static/lib/datejs/globalization/tn-ZA.js b/addons/web/static/lib/datejs/globalization/tn-ZA.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/tn-ZA.js rename to addons/web/static/lib/datejs/globalization/tn-ZA.js diff --git a/addons/base/static/lib/datejs/globalization/tr-TR.js b/addons/web/static/lib/datejs/globalization/tr-TR.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/tr-TR.js rename to addons/web/static/lib/datejs/globalization/tr-TR.js diff --git a/addons/base/static/lib/datejs/globalization/tt-RU.js b/addons/web/static/lib/datejs/globalization/tt-RU.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/tt-RU.js rename to addons/web/static/lib/datejs/globalization/tt-RU.js diff --git a/addons/base/static/lib/datejs/globalization/uk-UA.js b/addons/web/static/lib/datejs/globalization/uk-UA.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/uk-UA.js rename to addons/web/static/lib/datejs/globalization/uk-UA.js diff --git a/addons/base/static/lib/datejs/globalization/ur-PK.js b/addons/web/static/lib/datejs/globalization/ur-PK.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ur-PK.js rename to addons/web/static/lib/datejs/globalization/ur-PK.js diff --git a/addons/base/static/lib/datejs/globalization/uz-Cyrl-UZ.js b/addons/web/static/lib/datejs/globalization/uz-Cyrl-UZ.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/uz-Cyrl-UZ.js rename to addons/web/static/lib/datejs/globalization/uz-Cyrl-UZ.js diff --git a/addons/base/static/lib/datejs/globalization/uz-Latn-UZ.js b/addons/web/static/lib/datejs/globalization/uz-Latn-UZ.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/uz-Latn-UZ.js rename to addons/web/static/lib/datejs/globalization/uz-Latn-UZ.js diff --git a/addons/base/static/lib/datejs/globalization/vi-VN.js b/addons/web/static/lib/datejs/globalization/vi-VN.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/vi-VN.js rename to addons/web/static/lib/datejs/globalization/vi-VN.js diff --git a/addons/base/static/lib/datejs/globalization/xh-ZA.js b/addons/web/static/lib/datejs/globalization/xh-ZA.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/xh-ZA.js rename to addons/web/static/lib/datejs/globalization/xh-ZA.js diff --git a/addons/base/static/lib/datejs/globalization/zh-CN.js b/addons/web/static/lib/datejs/globalization/zh-CN.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/zh-CN.js rename to addons/web/static/lib/datejs/globalization/zh-CN.js diff --git a/addons/base/static/lib/datejs/globalization/zh-HK.js b/addons/web/static/lib/datejs/globalization/zh-HK.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/zh-HK.js rename to addons/web/static/lib/datejs/globalization/zh-HK.js diff --git a/addons/base/static/lib/datejs/globalization/zh-MO.js b/addons/web/static/lib/datejs/globalization/zh-MO.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/zh-MO.js rename to addons/web/static/lib/datejs/globalization/zh-MO.js diff --git a/addons/base/static/lib/datejs/globalization/zh-SG.js b/addons/web/static/lib/datejs/globalization/zh-SG.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/zh-SG.js rename to addons/web/static/lib/datejs/globalization/zh-SG.js diff --git a/addons/base/static/lib/datejs/globalization/zh-TW.js b/addons/web/static/lib/datejs/globalization/zh-TW.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/zh-TW.js rename to addons/web/static/lib/datejs/globalization/zh-TW.js diff --git a/addons/base/static/lib/datejs/globalization/zu-ZA.js b/addons/web/static/lib/datejs/globalization/zu-ZA.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/zu-ZA.js rename to addons/web/static/lib/datejs/globalization/zu-ZA.js diff --git a/addons/base/static/lib/datejs/parser.js b/addons/web/static/lib/datejs/parser.js similarity index 100% rename from addons/base/static/lib/datejs/parser.js rename to addons/web/static/lib/datejs/parser.js diff --git a/addons/base/static/lib/datejs/sugarpak.js b/addons/web/static/lib/datejs/sugarpak.js similarity index 100% rename from addons/base/static/lib/datejs/sugarpak.js rename to addons/web/static/lib/datejs/sugarpak.js diff --git a/addons/base/static/lib/datejs/time.js b/addons/web/static/lib/datejs/time.js similarity index 100% rename from addons/base/static/lib/datejs/time.js rename to addons/web/static/lib/datejs/time.js diff --git a/addons/base/static/lib/jquery.ba-bbq/jquery.ba-bbq.js b/addons/web/static/lib/jquery.ba-bbq/jquery.ba-bbq.js similarity index 100% rename from addons/base/static/lib/jquery.ba-bbq/jquery.ba-bbq.js rename to addons/web/static/lib/jquery.ba-bbq/jquery.ba-bbq.js diff --git a/addons/base/static/lib/jquery.ba-bbq/jquery.ba-bbq.min.js b/addons/web/static/lib/jquery.ba-bbq/jquery.ba-bbq.min.js similarity index 100% rename from addons/base/static/lib/jquery.ba-bbq/jquery.ba-bbq.min.js rename to addons/web/static/lib/jquery.ba-bbq/jquery.ba-bbq.min.js diff --git a/addons/base/static/lib/jquery.blockUI/jquery.blockUI.js b/addons/web/static/lib/jquery.blockUI/jquery.blockUI.js similarity index 100% rename from addons/base/static/lib/jquery.blockUI/jquery.blockUI.js rename to addons/web/static/lib/jquery.blockUI/jquery.blockUI.js diff --git a/addons/base/static/lib/jquery.contextmenu/jquery.contextmenu.r2.packed.js b/addons/web/static/lib/jquery.contextmenu/jquery.contextmenu.r2.packed.js similarity index 100% rename from addons/base/static/lib/jquery.contextmenu/jquery.contextmenu.r2.packed.js rename to addons/web/static/lib/jquery.contextmenu/jquery.contextmenu.r2.packed.js diff --git a/addons/base/static/lib/jquery.form/jquery.form.js b/addons/web/static/lib/jquery.form/jquery.form.js similarity index 100% rename from addons/base/static/lib/jquery.form/jquery.form.js rename to addons/web/static/lib/jquery.form/jquery.form.js diff --git a/addons/base/static/lib/jquery.superfish/changelog.txt b/addons/web/static/lib/jquery.superfish/changelog.txt similarity index 100% rename from addons/base/static/lib/jquery.superfish/changelog.txt rename to addons/web/static/lib/jquery.superfish/changelog.txt diff --git a/addons/base/static/lib/jquery.superfish/css/superfish-navbar.css b/addons/web/static/lib/jquery.superfish/css/superfish-navbar.css similarity index 100% rename from addons/base/static/lib/jquery.superfish/css/superfish-navbar.css rename to addons/web/static/lib/jquery.superfish/css/superfish-navbar.css diff --git a/addons/base/static/lib/jquery.superfish/css/superfish-vertical.css b/addons/web/static/lib/jquery.superfish/css/superfish-vertical.css similarity index 100% rename from addons/base/static/lib/jquery.superfish/css/superfish-vertical.css rename to addons/web/static/lib/jquery.superfish/css/superfish-vertical.css diff --git a/addons/base/static/lib/jquery.superfish/css/superfish.css b/addons/web/static/lib/jquery.superfish/css/superfish.css similarity index 100% rename from addons/base/static/lib/jquery.superfish/css/superfish.css rename to addons/web/static/lib/jquery.superfish/css/superfish.css diff --git a/addons/base/static/lib/jquery.superfish/example.html b/addons/web/static/lib/jquery.superfish/example.html similarity index 100% rename from addons/base/static/lib/jquery.superfish/example.html rename to addons/web/static/lib/jquery.superfish/example.html diff --git a/addons/base/static/lib/jquery.superfish/images/arrows-ffffff.png b/addons/web/static/lib/jquery.superfish/images/arrows-ffffff.png similarity index 100% rename from addons/base/static/lib/jquery.superfish/images/arrows-ffffff.png rename to addons/web/static/lib/jquery.superfish/images/arrows-ffffff.png diff --git a/addons/base/static/lib/jquery.superfish/images/shadow.png b/addons/web/static/lib/jquery.superfish/images/shadow.png similarity index 100% rename from addons/base/static/lib/jquery.superfish/images/shadow.png rename to addons/web/static/lib/jquery.superfish/images/shadow.png diff --git a/addons/base/static/lib/jquery.superfish/js/hoverIntent.js b/addons/web/static/lib/jquery.superfish/js/hoverIntent.js similarity index 100% rename from addons/base/static/lib/jquery.superfish/js/hoverIntent.js rename to addons/web/static/lib/jquery.superfish/js/hoverIntent.js diff --git a/addons/base/static/lib/jquery.superfish/js/jquery-1.2.6.min.js b/addons/web/static/lib/jquery.superfish/js/jquery-1.2.6.min.js similarity index 100% rename from addons/base/static/lib/jquery.superfish/js/jquery-1.2.6.min.js rename to addons/web/static/lib/jquery.superfish/js/jquery-1.2.6.min.js diff --git a/addons/base/static/lib/jquery.superfish/js/jquery.bgiframe.min.js b/addons/web/static/lib/jquery.superfish/js/jquery.bgiframe.min.js similarity index 100% rename from addons/base/static/lib/jquery.superfish/js/jquery.bgiframe.min.js rename to addons/web/static/lib/jquery.superfish/js/jquery.bgiframe.min.js diff --git a/addons/base/static/lib/jquery.superfish/js/superfish.js b/addons/web/static/lib/jquery.superfish/js/superfish.js similarity index 100% rename from addons/base/static/lib/jquery.superfish/js/superfish.js rename to addons/web/static/lib/jquery.superfish/js/superfish.js diff --git a/addons/base/static/lib/jquery.superfish/js/supersubs.js b/addons/web/static/lib/jquery.superfish/js/supersubs.js similarity index 100% rename from addons/base/static/lib/jquery.superfish/js/supersubs.js rename to addons/web/static/lib/jquery.superfish/js/supersubs.js diff --git a/addons/base/static/lib/jquery.ui.notify/css/ui.notify.css b/addons/web/static/lib/jquery.ui.notify/css/ui.notify.css similarity index 100% rename from addons/base/static/lib/jquery.ui.notify/css/ui.notify.css rename to addons/web/static/lib/jquery.ui.notify/css/ui.notify.css diff --git a/addons/base/static/lib/jquery.ui.notify/js/jquery.notify.js b/addons/web/static/lib/jquery.ui.notify/js/jquery.notify.js similarity index 100% rename from addons/base/static/lib/jquery.ui.notify/js/jquery.notify.js rename to addons/web/static/lib/jquery.ui.notify/js/jquery.notify.js diff --git a/addons/base/static/lib/jquery.ui/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png similarity index 100% rename from addons/base/static/lib/jquery.ui/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png rename to addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png diff --git a/addons/base/static/lib/jquery.ui/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png similarity index 100% rename from addons/base/static/lib/jquery.ui/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png rename to addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png diff --git a/addons/base/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png similarity index 100% rename from addons/base/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png rename to addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png diff --git a/addons/base/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png similarity index 100% rename from addons/base/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png rename to addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png diff --git a/addons/base/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png similarity index 100% rename from addons/base/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png rename to addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png diff --git a/addons/base/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png similarity index 100% rename from addons/base/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png rename to addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png diff --git a/addons/base/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png similarity index 100% rename from addons/base/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png rename to addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png diff --git a/addons/base/static/lib/jquery.ui/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png similarity index 100% rename from addons/base/static/lib/jquery.ui/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png rename to addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png diff --git a/addons/base/static/lib/jquery.ui/css/smoothness/images/ui-icons_222222_256x240.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_222222_256x240.png similarity index 100% rename from addons/base/static/lib/jquery.ui/css/smoothness/images/ui-icons_222222_256x240.png rename to addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_222222_256x240.png diff --git a/addons/base/static/lib/jquery.ui/css/smoothness/images/ui-icons_2e83ff_256x240.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_2e83ff_256x240.png similarity index 100% rename from addons/base/static/lib/jquery.ui/css/smoothness/images/ui-icons_2e83ff_256x240.png rename to addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_2e83ff_256x240.png diff --git a/addons/base/static/lib/jquery.ui/css/smoothness/images/ui-icons_454545_256x240.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_454545_256x240.png similarity index 100% rename from addons/base/static/lib/jquery.ui/css/smoothness/images/ui-icons_454545_256x240.png rename to addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_454545_256x240.png diff --git a/addons/base/static/lib/jquery.ui/css/smoothness/images/ui-icons_888888_256x240.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_888888_256x240.png similarity index 100% rename from addons/base/static/lib/jquery.ui/css/smoothness/images/ui-icons_888888_256x240.png rename to addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_888888_256x240.png diff --git a/addons/base/static/lib/jquery.ui/css/smoothness/images/ui-icons_cd0a0a_256x240.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_cd0a0a_256x240.png similarity index 100% rename from addons/base/static/lib/jquery.ui/css/smoothness/images/ui-icons_cd0a0a_256x240.png rename to addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_cd0a0a_256x240.png diff --git a/addons/base/static/lib/jquery.ui/css/smoothness/jquery-ui-1.8.9.custom.css b/addons/web/static/lib/jquery.ui/css/smoothness/jquery-ui-1.8.9.custom.css similarity index 100% rename from addons/base/static/lib/jquery.ui/css/smoothness/jquery-ui-1.8.9.custom.css rename to addons/web/static/lib/jquery.ui/css/smoothness/jquery-ui-1.8.9.custom.css diff --git a/addons/base/static/lib/jquery.ui/js/jquery-ui-1.8.9.custom.min.js b/addons/web/static/lib/jquery.ui/js/jquery-ui-1.8.9.custom.min.js similarity index 100% rename from addons/base/static/lib/jquery.ui/js/jquery-ui-1.8.9.custom.min.js rename to addons/web/static/lib/jquery.ui/js/jquery-ui-1.8.9.custom.min.js diff --git a/addons/base/static/lib/jquery.ui/js/jquery-ui-timepicker-addon.js b/addons/web/static/lib/jquery.ui/js/jquery-ui-timepicker-addon.js similarity index 100% rename from addons/base/static/lib/jquery.ui/js/jquery-ui-timepicker-addon.js rename to addons/web/static/lib/jquery.ui/js/jquery-ui-timepicker-addon.js diff --git a/addons/base/static/lib/jquery.validate/jquery.validate.js b/addons/web/static/lib/jquery.validate/jquery.validate.js similarity index 100% rename from addons/base/static/lib/jquery.validate/jquery.validate.js rename to addons/web/static/lib/jquery.validate/jquery.validate.js diff --git a/addons/base/static/lib/jquery/jquery-1.6.2.js b/addons/web/static/lib/jquery/jquery-1.6.2.js similarity index 100% rename from addons/base/static/lib/jquery/jquery-1.6.2.js rename to addons/web/static/lib/jquery/jquery-1.6.2.js diff --git a/addons/base/static/lib/json/json2.js b/addons/web/static/lib/json/json2.js similarity index 100% rename from addons/base/static/lib/json/json2.js rename to addons/web/static/lib/json/json2.js diff --git a/addons/base/static/lib/labjs/LAB.src.js b/addons/web/static/lib/labjs/LAB.src.js similarity index 100% rename from addons/base/static/lib/labjs/LAB.src.js rename to addons/web/static/lib/labjs/LAB.src.js diff --git a/addons/base/static/lib/qunit/qunit-2011-23-22.css b/addons/web/static/lib/qunit/qunit-2011-23-22.css similarity index 100% rename from addons/base/static/lib/qunit/qunit-2011-23-22.css rename to addons/web/static/lib/qunit/qunit-2011-23-22.css diff --git a/addons/base/static/lib/qunit/qunit-2011-23-22.js b/addons/web/static/lib/qunit/qunit-2011-23-22.js similarity index 100% rename from addons/base/static/lib/qunit/qunit-2011-23-22.js rename to addons/web/static/lib/qunit/qunit-2011-23-22.js diff --git a/addons/base/static/lib/qweb/qweb-benchmark.html b/addons/web/static/lib/qweb/qweb-benchmark.html similarity index 100% rename from addons/base/static/lib/qweb/qweb-benchmark.html rename to addons/web/static/lib/qweb/qweb-benchmark.html diff --git a/addons/base/static/lib/qweb/qweb-benchmark.xml b/addons/web/static/lib/qweb/qweb-benchmark.xml similarity index 100% rename from addons/base/static/lib/qweb/qweb-benchmark.xml rename to addons/web/static/lib/qweb/qweb-benchmark.xml diff --git a/addons/base/static/lib/qweb/qweb-test-attributes.xml b/addons/web/static/lib/qweb/qweb-test-attributes.xml similarity index 100% rename from addons/base/static/lib/qweb/qweb-test-attributes.xml rename to addons/web/static/lib/qweb/qweb-test-attributes.xml diff --git a/addons/base/static/lib/qweb/qweb-test-call.xml b/addons/web/static/lib/qweb/qweb-test-call.xml similarity index 100% rename from addons/base/static/lib/qweb/qweb-test-call.xml rename to addons/web/static/lib/qweb/qweb-test-call.xml diff --git a/addons/base/static/lib/qweb/qweb-test-conditionals.xml b/addons/web/static/lib/qweb/qweb-test-conditionals.xml similarity index 100% rename from addons/base/static/lib/qweb/qweb-test-conditionals.xml rename to addons/web/static/lib/qweb/qweb-test-conditionals.xml diff --git a/addons/base/static/lib/qweb/qweb-test-extend.xml b/addons/web/static/lib/qweb/qweb-test-extend.xml similarity index 100% rename from addons/base/static/lib/qweb/qweb-test-extend.xml rename to addons/web/static/lib/qweb/qweb-test-extend.xml diff --git a/addons/base/static/lib/qweb/qweb-test-foreach.xml b/addons/web/static/lib/qweb/qweb-test-foreach.xml similarity index 100% rename from addons/base/static/lib/qweb/qweb-test-foreach.xml rename to addons/web/static/lib/qweb/qweb-test-foreach.xml diff --git a/addons/base/static/lib/qweb/qweb-test-output.xml b/addons/web/static/lib/qweb/qweb-test-output.xml similarity index 100% rename from addons/base/static/lib/qweb/qweb-test-output.xml rename to addons/web/static/lib/qweb/qweb-test-output.xml diff --git a/addons/base/static/lib/qweb/qweb-test-set.xml b/addons/web/static/lib/qweb/qweb-test-set.xml similarity index 100% rename from addons/base/static/lib/qweb/qweb-test-set.xml rename to addons/web/static/lib/qweb/qweb-test-set.xml diff --git a/addons/base/static/lib/qweb/qweb-test.js.html b/addons/web/static/lib/qweb/qweb-test.js.html similarity index 100% rename from addons/base/static/lib/qweb/qweb-test.js.html rename to addons/web/static/lib/qweb/qweb-test.js.html diff --git a/addons/base/static/lib/qweb/qweb.js b/addons/web/static/lib/qweb/qweb.js similarity index 100% rename from addons/base/static/lib/qweb/qweb.js rename to addons/web/static/lib/qweb/qweb.js diff --git a/addons/base/static/lib/qweb/qweb2.js b/addons/web/static/lib/qweb/qweb2.js similarity index 100% rename from addons/base/static/lib/qweb/qweb2.js rename to addons/web/static/lib/qweb/qweb2.js diff --git a/addons/base/static/lib/underscore/underscore.js b/addons/web/static/lib/underscore/underscore.js similarity index 100% rename from addons/base/static/lib/underscore/underscore.js rename to addons/web/static/lib/underscore/underscore.js diff --git a/addons/base/static/lib/underscore/underscore.string.js b/addons/web/static/lib/underscore/underscore.string.js similarity index 100% rename from addons/base/static/lib/underscore/underscore.string.js rename to addons/web/static/lib/underscore/underscore.string.js diff --git a/addons/base/static/src/css/base-ie7.css b/addons/web/static/src/css/base-ie7.css similarity index 100% rename from addons/base/static/src/css/base-ie7.css rename to addons/web/static/src/css/base-ie7.css diff --git a/addons/base/static/src/css/base.css b/addons/web/static/src/css/base.css similarity index 96% rename from addons/base/static/src/css/base.css rename to addons/web/static/src/css/base.css index a33bdce973b..c6241cd4429 100644 --- a/addons/base/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -174,7 +174,7 @@ ul.db_options li { filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#949292', endColorstr='#5B5A5A',GradientType=0 ); /* IE6-9 */ border: none; /* overriding jquery ui */ - -moz-border-radius: 0px; -webkit-border-radius: 0px; border-radius: 0px; + -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; display: block; font-weight: bold; text-transform: uppercase; @@ -324,7 +324,7 @@ label.error { filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#949292', endColorstr='#5B5A5A',GradientType=0 ); /* IE6-9 */ border: none; /* overriding jquery ui */ - -moz-border-radius: 0px; -webkit-border-radius: 0px; border-radius: 0px; + -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; } .openerp .secondary_menu h4 { padding: 0 0 2px 10px; @@ -379,7 +379,7 @@ label.error { /* Header */ .openerp .header { height: 65px; - background: url("/base/static/src/img/header-background.png") repeat-x scroll left top transparent; + background: url("/web/static/src/img/header-background.png") repeat-x scroll left top transparent; color: #FFFFFF; letter-spacing: 0.5px; text-shadow: 0 1px 0 #333333; @@ -401,7 +401,7 @@ label.error { margin-top: 7px; margin-left: 10px; display: block; - background: url(/base/static/src/img/logo.png); + background: url(/web/static/src/img/logo.png); width:180px; height:46px; } @@ -409,7 +409,7 @@ label.error { float: left; font-size: 100%; margin: 0; - padding: 4px 0; + padding: 4px 10px; text-shadow: 0 1px 0 #111111; } .openerp .header_title small { @@ -597,13 +597,13 @@ label.error { background-color: #ccc; } .openerp .searchview_group.folded .searchview_group_string { - background: url("/base/static/src/img/ui/group-folded.png") no-repeat scroll 0 50%; + background: url("/web/static/src/img/ui/group-folded.png") no-repeat scroll 0 50%; } .openerp .searchview_group.folded .searchview_group_content { display: none; } .openerp .searchview_group.expanded .searchview_group_string { - background: url("/base/static/src/img/ui/group-expanded.png") no-repeat scroll 0 50%; + background: url("/web/static/src/img/ui/group-expanded.png") no-repeat scroll 0 50%; } .openerp .searchview_group.expanded .searchview_group_content { display: block; @@ -635,13 +635,13 @@ label.error { } .openerp .oe_search-view-custom-filter-btn span { - background: url(/base/static/src/img/icons/gtk-add.png) repeat-y; + background: url(/web/static/src/img/icons/gtk-add.png) repeat-y; padding-left: 18px; } .openerp .searchview_extended_add_proposition span { font-size: 0.9em; - background: url(/base/static/src/img/icons/gtk-add.png) repeat-y; + background: url(/web/static/src/img/icons/gtk-add.png) repeat-y; padding-left: 18px; } @@ -657,7 +657,7 @@ label.error { .openerp .searchview_extended_delete_group span, .openerp .searchview_extended_delete_prop span { font-size: 0.9em; - background: url(/base/static/src/img/icons/gtk-close.png) repeat-y; + background: url(/web/static/src/img/icons/gtk-close.png) repeat-y; padding-left: 18px; } /* List */ @@ -820,7 +820,7 @@ label.error { padding: 2px; } .openerp td.oe_form_frame_cell.oe_form_group { - padding: 0px; + padding: 0; } .openerp .required.error { border: 1px solid #900; @@ -832,15 +832,17 @@ label.error { float: right; } -.openerp label.oe_form_label_help { +.openerp label.oe_label_help, .openerp label.oe_label { + display: block; +} +.openerp label.oe_label_help { cursor: help; } -.openerp label.oe_form_label, .openerp label.oe_form_label_help { - display: block; +.openerp .oe_form_field label.oe_label, .openerp .oe_form_field label.oe_label_help { text-align: right; margin: 3px 0 0 10px; } -.openerp label.oe_form_label_help span { +.openerp label.oe_label_help span { font-size: 80%; color: darkgreen; vertical-align:top; @@ -1094,7 +1096,7 @@ label.error { cursor: pointer; border: 1px solid #D2CFCF; display: block; - background: url(/base/static/src/img/toggle-a-bg.png); + background: url(/web/static/src/img/toggle-a-bg.png); width: 21px; height: 21px; z-index: 10; @@ -1109,7 +1111,7 @@ label.error { } .openerp li.oe_sidebar_print { padding-left: 20px; - background: 1px 3px url(/base/static/src/img/icons/gtk-print.png) no-repeat; + background: 1px 3px url(/web/static/src/img/icons/gtk-print.png) no-repeat; } .openerp.kitten-mode-activated .main_table { @@ -1210,10 +1212,10 @@ label.error { display: block; } .treeview-tr:first-of-type { - background: transparent url(/base/static/src/img/expand.gif) 0 50% no-repeat; + background: transparent url(/web/static/src/img/expand.gif) 0 50% no-repeat; } .oe-open .treeview-tr:first-of-type { - background-image: url(/base/static/src/img/collapse.gif); + background-image: url(/web/static/src/img/collapse.gif); } .treeview-tr:first-of-type span, .treeview-td:first-of-type span { @@ -1231,18 +1233,18 @@ label.error { width: 24px; cursor: pointer; display: block; - background: url(/base/static/src/img/add-shortcut.png) no-repeat bottom; + background: url(/web/static/src/img/add-shortcut.png) no-repeat bottom; float: left; } .oe-shortcut-remove{ - background: url(/base/static/src/img/remove-shortcut.png) no-repeat bottom; + background: url(/web/static/src/img/remove-shortcut.png) no-repeat bottom; } /* ================ */ .oe-shortcuts { position: absolute; margin: 0; - padding: 6px 5px; + padding: 6px 15px; top: 37px; left: 197px; right: 0; diff --git a/addons/base/static/src/css/data_export.css b/addons/web/static/src/css/data_export.css similarity index 81% rename from addons/base/static/src/css/data_export.css rename to addons/web/static/src/css/data_export.css index 7b4b9707b39..149fcea81e6 100644 --- a/addons/base/static/src/css/data_export.css +++ b/addons/web/static/src/css/data_export.css @@ -1,3 +1,6 @@ +.openerp .oe-export { + width: 100%; +} .openerp .oe_export_row tr{ background-color: #FFFFFF; font-size: 0.8em; @@ -20,11 +23,6 @@ background-color: #F3F3F3; } -.openerp .oe_export_fields_selector_export { - width: 100%; - height: 400px; -} - .openerp .oe_export_fields_selector_left { width: 50%; } @@ -35,9 +33,15 @@ height: 400px; border: solid #999999 1px; } +.openerp div#left_field_panel table { + width: 100%; +} .openerp .oe_export_fields_selector_center { - width: 102px; + text-align: center; +} +.openerp .oe_export_fields_selector_center button { + white-space: nowrap; } .openerp .oe_export_fields_selector_right { @@ -45,7 +49,7 @@ height: 400px; } -.openerp .oe_export_fields_selector_export select{ +.openerp .oe_export_fields_selector_right select{ width: 100%; height: 100%; } @@ -55,7 +59,7 @@ text-align: left; white-space: nowrap; padding: 4px 5px; - background: url(/base/static/src/img/header.gif); + background: url(/web/static/src/img/header.gif); } @@ -78,8 +82,3 @@ border: none; display: block; } - -.openerp .oe_export_button_export { - border: 1px solid #006; - background-color: #F3F3F3; -} diff --git a/addons/base/static/src/css/data_import.css b/addons/web/static/src/css/data_import.css similarity index 100% rename from addons/base/static/src/css/data_import.css rename to addons/web/static/src/css/data_import.css diff --git a/addons/base/static/src/img/accessories-archiver.png b/addons/web/static/src/img/accessories-archiver.png similarity index 100% rename from addons/base/static/src/img/accessories-archiver.png rename to addons/web/static/src/img/accessories-archiver.png diff --git a/addons/base/static/src/img/add-shortcut.png b/addons/web/static/src/img/add-shortcut.png similarity index 100% rename from addons/base/static/src/img/add-shortcut.png rename to addons/web/static/src/img/add-shortcut.png diff --git a/addons/base/static/src/img/attachments-close.png b/addons/web/static/src/img/attachments-close.png similarity index 100% rename from addons/base/static/src/img/attachments-close.png rename to addons/web/static/src/img/attachments-close.png diff --git a/addons/base/static/src/img/collapse.gif b/addons/web/static/src/img/collapse.gif similarity index 100% rename from addons/base/static/src/img/collapse.gif rename to addons/web/static/src/img/collapse.gif diff --git a/addons/base/static/src/img/db.png b/addons/web/static/src/img/db.png similarity index 100% rename from addons/base/static/src/img/db.png rename to addons/web/static/src/img/db.png diff --git a/addons/base/static/src/img/down-arrow.png b/addons/web/static/src/img/down-arrow.png similarity index 100% rename from addons/base/static/src/img/down-arrow.png rename to addons/web/static/src/img/down-arrow.png diff --git a/addons/base/static/src/img/expand.gif b/addons/web/static/src/img/expand.gif similarity index 100% rename from addons/base/static/src/img/expand.gif rename to addons/web/static/src/img/expand.gif diff --git a/addons/base/static/src/img/favicon.ico b/addons/web/static/src/img/favicon.ico similarity index 100% rename from addons/base/static/src/img/favicon.ico rename to addons/web/static/src/img/favicon.ico diff --git a/addons/base/static/src/img/gradientlinebg.gif b/addons/web/static/src/img/gradientlinebg.gif similarity index 100% rename from addons/base/static/src/img/gradientlinebg.gif rename to addons/web/static/src/img/gradientlinebg.gif diff --git a/addons/base/static/src/img/header-about.png b/addons/web/static/src/img/header-about.png similarity index 100% rename from addons/base/static/src/img/header-about.png rename to addons/web/static/src/img/header-about.png diff --git a/addons/base/static/src/img/header-background.png b/addons/web/static/src/img/header-background.png similarity index 100% rename from addons/base/static/src/img/header-background.png rename to addons/web/static/src/img/header-background.png diff --git a/addons/base/static/src/img/header-help.png b/addons/web/static/src/img/header-help.png similarity index 100% rename from addons/base/static/src/img/header-help.png rename to addons/web/static/src/img/header-help.png diff --git a/addons/base/static/src/img/header-home.png b/addons/web/static/src/img/header-home.png similarity index 100% rename from addons/base/static/src/img/header-home.png rename to addons/web/static/src/img/header-home.png diff --git a/addons/base/static/src/img/header-preferences.png b/addons/web/static/src/img/header-preferences.png similarity index 100% rename from addons/base/static/src/img/header-preferences.png rename to addons/web/static/src/img/header-preferences.png diff --git a/addons/base/static/src/img/header-requests.png b/addons/web/static/src/img/header-requests.png similarity index 100% rename from addons/base/static/src/img/header-requests.png rename to addons/web/static/src/img/header-requests.png diff --git a/addons/base/static/src/img/header.gif b/addons/web/static/src/img/header.gif similarity index 100% rename from addons/base/static/src/img/header.gif rename to addons/web/static/src/img/header.gif diff --git a/addons/base/static/src/img/icons/STOCK_ABOUT.png b/addons/web/static/src/img/icons/STOCK_ABOUT.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_ABOUT.png rename to addons/web/static/src/img/icons/STOCK_ABOUT.png diff --git a/addons/base/static/src/img/icons/STOCK_ADD.png b/addons/web/static/src/img/icons/STOCK_ADD.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_ADD.png rename to addons/web/static/src/img/icons/STOCK_ADD.png diff --git a/addons/base/static/src/img/icons/STOCK_APPLY.png b/addons/web/static/src/img/icons/STOCK_APPLY.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_APPLY.png rename to addons/web/static/src/img/icons/STOCK_APPLY.png diff --git a/addons/base/static/src/img/icons/STOCK_BOLD.png b/addons/web/static/src/img/icons/STOCK_BOLD.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_BOLD.png rename to addons/web/static/src/img/icons/STOCK_BOLD.png diff --git a/addons/base/static/src/img/icons/STOCK_CANCEL.png b/addons/web/static/src/img/icons/STOCK_CANCEL.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_CANCEL.png rename to addons/web/static/src/img/icons/STOCK_CANCEL.png diff --git a/addons/base/static/src/img/icons/STOCK_CDROM.png b/addons/web/static/src/img/icons/STOCK_CDROM.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_CDROM.png rename to addons/web/static/src/img/icons/STOCK_CDROM.png diff --git a/addons/base/static/src/img/icons/STOCK_CLEAR.png b/addons/web/static/src/img/icons/STOCK_CLEAR.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_CLEAR.png rename to addons/web/static/src/img/icons/STOCK_CLEAR.png diff --git a/addons/base/static/src/img/icons/STOCK_CLOSE.png b/addons/web/static/src/img/icons/STOCK_CLOSE.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_CLOSE.png rename to addons/web/static/src/img/icons/STOCK_CLOSE.png diff --git a/addons/base/static/src/img/icons/STOCK_COLOR_PICKER.png b/addons/web/static/src/img/icons/STOCK_COLOR_PICKER.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_COLOR_PICKER.png rename to addons/web/static/src/img/icons/STOCK_COLOR_PICKER.png diff --git a/addons/base/static/src/img/icons/STOCK_CONNECT.png b/addons/web/static/src/img/icons/STOCK_CONNECT.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_CONNECT.png rename to addons/web/static/src/img/icons/STOCK_CONNECT.png diff --git a/addons/base/static/src/img/icons/STOCK_CONVERT.png b/addons/web/static/src/img/icons/STOCK_CONVERT.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_CONVERT.png rename to addons/web/static/src/img/icons/STOCK_CONVERT.png diff --git a/addons/base/static/src/img/icons/STOCK_COPY.png b/addons/web/static/src/img/icons/STOCK_COPY.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_COPY.png rename to addons/web/static/src/img/icons/STOCK_COPY.png diff --git a/addons/base/static/src/img/icons/STOCK_CUT.png b/addons/web/static/src/img/icons/STOCK_CUT.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_CUT.png rename to addons/web/static/src/img/icons/STOCK_CUT.png diff --git a/addons/base/static/src/img/icons/STOCK_DELETE.png b/addons/web/static/src/img/icons/STOCK_DELETE.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_DELETE.png rename to addons/web/static/src/img/icons/STOCK_DELETE.png diff --git a/addons/base/static/src/img/icons/STOCK_DIALOG_AUTHENTICATION.png b/addons/web/static/src/img/icons/STOCK_DIALOG_AUTHENTICATION.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_DIALOG_AUTHENTICATION.png rename to addons/web/static/src/img/icons/STOCK_DIALOG_AUTHENTICATION.png diff --git a/addons/base/static/src/img/icons/STOCK_DIALOG_ERROR.png b/addons/web/static/src/img/icons/STOCK_DIALOG_ERROR.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_DIALOG_ERROR.png rename to addons/web/static/src/img/icons/STOCK_DIALOG_ERROR.png diff --git a/addons/base/static/src/img/icons/STOCK_DIALOG_INFO.png b/addons/web/static/src/img/icons/STOCK_DIALOG_INFO.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_DIALOG_INFO.png rename to addons/web/static/src/img/icons/STOCK_DIALOG_INFO.png diff --git a/addons/base/static/src/img/icons/STOCK_DIALOG_QUESTION.png b/addons/web/static/src/img/icons/STOCK_DIALOG_QUESTION.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_DIALOG_QUESTION.png rename to addons/web/static/src/img/icons/STOCK_DIALOG_QUESTION.png diff --git a/addons/base/static/src/img/icons/STOCK_DIALOG_WARNING.png b/addons/web/static/src/img/icons/STOCK_DIALOG_WARNING.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_DIALOG_WARNING.png rename to addons/web/static/src/img/icons/STOCK_DIALOG_WARNING.png diff --git a/addons/base/static/src/img/icons/STOCK_DIRECTORY.png b/addons/web/static/src/img/icons/STOCK_DIRECTORY.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_DIRECTORY.png rename to addons/web/static/src/img/icons/STOCK_DIRECTORY.png diff --git a/addons/base/static/src/img/icons/STOCK_DISCONNECT.png b/addons/web/static/src/img/icons/STOCK_DISCONNECT.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_DISCONNECT.png rename to addons/web/static/src/img/icons/STOCK_DISCONNECT.png diff --git a/addons/base/static/src/img/icons/STOCK_DND.png b/addons/web/static/src/img/icons/STOCK_DND.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_DND.png rename to addons/web/static/src/img/icons/STOCK_DND.png diff --git a/addons/base/static/src/img/icons/STOCK_DND_MULTIPLE.png b/addons/web/static/src/img/icons/STOCK_DND_MULTIPLE.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_DND_MULTIPLE.png rename to addons/web/static/src/img/icons/STOCK_DND_MULTIPLE.png diff --git a/addons/base/static/src/img/icons/STOCK_EDIT.png b/addons/web/static/src/img/icons/STOCK_EDIT.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_EDIT.png rename to addons/web/static/src/img/icons/STOCK_EDIT.png diff --git a/addons/base/static/src/img/icons/STOCK_EXECUTE.png b/addons/web/static/src/img/icons/STOCK_EXECUTE.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_EXECUTE.png rename to addons/web/static/src/img/icons/STOCK_EXECUTE.png diff --git a/addons/base/static/src/img/icons/STOCK_FILE.png b/addons/web/static/src/img/icons/STOCK_FILE.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_FILE.png rename to addons/web/static/src/img/icons/STOCK_FILE.png diff --git a/addons/base/static/src/img/icons/STOCK_FIND.png b/addons/web/static/src/img/icons/STOCK_FIND.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_FIND.png rename to addons/web/static/src/img/icons/STOCK_FIND.png diff --git a/addons/base/static/src/img/icons/STOCK_FIND_AND_REPLACE.png b/addons/web/static/src/img/icons/STOCK_FIND_AND_REPLACE.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_FIND_AND_REPLACE.png rename to addons/web/static/src/img/icons/STOCK_FIND_AND_REPLACE.png diff --git a/addons/base/static/src/img/icons/STOCK_FLOPPY.png b/addons/web/static/src/img/icons/STOCK_FLOPPY.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_FLOPPY.png rename to addons/web/static/src/img/icons/STOCK_FLOPPY.png diff --git a/addons/base/static/src/img/icons/STOCK_FULLSCREEN.png b/addons/web/static/src/img/icons/STOCK_FULLSCREEN.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_FULLSCREEN.png rename to addons/web/static/src/img/icons/STOCK_FULLSCREEN.png diff --git a/addons/base/static/src/img/icons/STOCK_GOTO_BOTTOM.png b/addons/web/static/src/img/icons/STOCK_GOTO_BOTTOM.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_GOTO_BOTTOM.png rename to addons/web/static/src/img/icons/STOCK_GOTO_BOTTOM.png diff --git a/addons/base/static/src/img/icons/STOCK_GOTO_FIRST.png b/addons/web/static/src/img/icons/STOCK_GOTO_FIRST.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_GOTO_FIRST.png rename to addons/web/static/src/img/icons/STOCK_GOTO_FIRST.png diff --git a/addons/base/static/src/img/icons/STOCK_GOTO_LAST.png b/addons/web/static/src/img/icons/STOCK_GOTO_LAST.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_GOTO_LAST.png rename to addons/web/static/src/img/icons/STOCK_GOTO_LAST.png diff --git a/addons/base/static/src/img/icons/STOCK_GOTO_TOP.png b/addons/web/static/src/img/icons/STOCK_GOTO_TOP.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_GOTO_TOP.png rename to addons/web/static/src/img/icons/STOCK_GOTO_TOP.png diff --git a/addons/base/static/src/img/icons/STOCK_GO_BACK.png b/addons/web/static/src/img/icons/STOCK_GO_BACK.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_GO_BACK.png rename to addons/web/static/src/img/icons/STOCK_GO_BACK.png diff --git a/addons/base/static/src/img/icons/STOCK_GO_DOWN.png b/addons/web/static/src/img/icons/STOCK_GO_DOWN.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_GO_DOWN.png rename to addons/web/static/src/img/icons/STOCK_GO_DOWN.png diff --git a/addons/base/static/src/img/icons/STOCK_GO_FORWARD.png b/addons/web/static/src/img/icons/STOCK_GO_FORWARD.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_GO_FORWARD.png rename to addons/web/static/src/img/icons/STOCK_GO_FORWARD.png diff --git a/addons/base/static/src/img/icons/STOCK_GO_UP.png b/addons/web/static/src/img/icons/STOCK_GO_UP.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_GO_UP.png rename to addons/web/static/src/img/icons/STOCK_GO_UP.png diff --git a/addons/base/static/src/img/icons/STOCK_HARDDISK.png b/addons/web/static/src/img/icons/STOCK_HARDDISK.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_HARDDISK.png rename to addons/web/static/src/img/icons/STOCK_HARDDISK.png diff --git a/addons/base/static/src/img/icons/STOCK_HELP.png b/addons/web/static/src/img/icons/STOCK_HELP.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_HELP.png rename to addons/web/static/src/img/icons/STOCK_HELP.png diff --git a/addons/base/static/src/img/icons/STOCK_HOME.png b/addons/web/static/src/img/icons/STOCK_HOME.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_HOME.png rename to addons/web/static/src/img/icons/STOCK_HOME.png diff --git a/addons/base/static/src/img/icons/STOCK_INDENT.png b/addons/web/static/src/img/icons/STOCK_INDENT.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_INDENT.png rename to addons/web/static/src/img/icons/STOCK_INDENT.png diff --git a/addons/base/static/src/img/icons/STOCK_INDEX.png b/addons/web/static/src/img/icons/STOCK_INDEX.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_INDEX.png rename to addons/web/static/src/img/icons/STOCK_INDEX.png diff --git a/addons/base/static/src/img/icons/STOCK_INFO.png b/addons/web/static/src/img/icons/STOCK_INFO.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_INFO.png rename to addons/web/static/src/img/icons/STOCK_INFO.png diff --git a/addons/base/static/src/img/icons/STOCK_ITALIC.png b/addons/web/static/src/img/icons/STOCK_ITALIC.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_ITALIC.png rename to addons/web/static/src/img/icons/STOCK_ITALIC.png diff --git a/addons/base/static/src/img/icons/STOCK_JUMP_TO.png b/addons/web/static/src/img/icons/STOCK_JUMP_TO.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_JUMP_TO.png rename to addons/web/static/src/img/icons/STOCK_JUMP_TO.png diff --git a/addons/base/static/src/img/icons/STOCK_JUSTIFY_CENTER.png b/addons/web/static/src/img/icons/STOCK_JUSTIFY_CENTER.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_JUSTIFY_CENTER.png rename to addons/web/static/src/img/icons/STOCK_JUSTIFY_CENTER.png diff --git a/addons/base/static/src/img/icons/STOCK_JUSTIFY_FILL.png b/addons/web/static/src/img/icons/STOCK_JUSTIFY_FILL.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_JUSTIFY_FILL.png rename to addons/web/static/src/img/icons/STOCK_JUSTIFY_FILL.png diff --git a/addons/base/static/src/img/icons/STOCK_JUSTIFY_LEFT.png b/addons/web/static/src/img/icons/STOCK_JUSTIFY_LEFT.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_JUSTIFY_LEFT.png rename to addons/web/static/src/img/icons/STOCK_JUSTIFY_LEFT.png diff --git a/addons/base/static/src/img/icons/STOCK_JUSTIFY_RIGHT.png b/addons/web/static/src/img/icons/STOCK_JUSTIFY_RIGHT.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_JUSTIFY_RIGHT.png rename to addons/web/static/src/img/icons/STOCK_JUSTIFY_RIGHT.png diff --git a/addons/base/static/src/img/icons/STOCK_LEAVE_FULLSCREEN.png b/addons/web/static/src/img/icons/STOCK_LEAVE_FULLSCREEN.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_LEAVE_FULLSCREEN.png rename to addons/web/static/src/img/icons/STOCK_LEAVE_FULLSCREEN.png diff --git a/addons/base/static/src/img/icons/STOCK_MEDIA_FORWARD.png b/addons/web/static/src/img/icons/STOCK_MEDIA_FORWARD.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_MEDIA_FORWARD.png rename to addons/web/static/src/img/icons/STOCK_MEDIA_FORWARD.png diff --git a/addons/base/static/src/img/icons/STOCK_MEDIA_NEXT.png b/addons/web/static/src/img/icons/STOCK_MEDIA_NEXT.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_MEDIA_NEXT.png rename to addons/web/static/src/img/icons/STOCK_MEDIA_NEXT.png diff --git a/addons/base/static/src/img/icons/STOCK_MEDIA_PAUSE.png b/addons/web/static/src/img/icons/STOCK_MEDIA_PAUSE.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_MEDIA_PAUSE.png rename to addons/web/static/src/img/icons/STOCK_MEDIA_PAUSE.png diff --git a/addons/base/static/src/img/icons/STOCK_MEDIA_PLAY.png b/addons/web/static/src/img/icons/STOCK_MEDIA_PLAY.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_MEDIA_PLAY.png rename to addons/web/static/src/img/icons/STOCK_MEDIA_PLAY.png diff --git a/addons/base/static/src/img/icons/STOCK_MEDIA_PREVIOUS.png b/addons/web/static/src/img/icons/STOCK_MEDIA_PREVIOUS.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_MEDIA_PREVIOUS.png rename to addons/web/static/src/img/icons/STOCK_MEDIA_PREVIOUS.png diff --git a/addons/base/static/src/img/icons/STOCK_MEDIA_RECORD.png b/addons/web/static/src/img/icons/STOCK_MEDIA_RECORD.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_MEDIA_RECORD.png rename to addons/web/static/src/img/icons/STOCK_MEDIA_RECORD.png diff --git a/addons/base/static/src/img/icons/STOCK_MEDIA_REWIND.png b/addons/web/static/src/img/icons/STOCK_MEDIA_REWIND.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_MEDIA_REWIND.png rename to addons/web/static/src/img/icons/STOCK_MEDIA_REWIND.png diff --git a/addons/base/static/src/img/icons/STOCK_MEDIA_STOP.png b/addons/web/static/src/img/icons/STOCK_MEDIA_STOP.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_MEDIA_STOP.png rename to addons/web/static/src/img/icons/STOCK_MEDIA_STOP.png diff --git a/addons/base/static/src/img/icons/STOCK_MISSING_IMAGE.png b/addons/web/static/src/img/icons/STOCK_MISSING_IMAGE.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_MISSING_IMAGE.png rename to addons/web/static/src/img/icons/STOCK_MISSING_IMAGE.png diff --git a/addons/base/static/src/img/icons/STOCK_NETWORK.png b/addons/web/static/src/img/icons/STOCK_NETWORK.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_NETWORK.png rename to addons/web/static/src/img/icons/STOCK_NETWORK.png diff --git a/addons/base/static/src/img/icons/STOCK_NEW.png b/addons/web/static/src/img/icons/STOCK_NEW.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_NEW.png rename to addons/web/static/src/img/icons/STOCK_NEW.png diff --git a/addons/base/static/src/img/icons/STOCK_NO.png b/addons/web/static/src/img/icons/STOCK_NO.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_NO.png rename to addons/web/static/src/img/icons/STOCK_NO.png diff --git a/addons/base/static/src/img/icons/STOCK_OK.png b/addons/web/static/src/img/icons/STOCK_OK.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_OK.png rename to addons/web/static/src/img/icons/STOCK_OK.png diff --git a/addons/base/static/src/img/icons/STOCK_OPEN.png b/addons/web/static/src/img/icons/STOCK_OPEN.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_OPEN.png rename to addons/web/static/src/img/icons/STOCK_OPEN.png diff --git a/addons/base/static/src/img/icons/STOCK_PASTE.png b/addons/web/static/src/img/icons/STOCK_PASTE.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_PASTE.png rename to addons/web/static/src/img/icons/STOCK_PASTE.png diff --git a/addons/base/static/src/img/icons/STOCK_PREFERENCES.png b/addons/web/static/src/img/icons/STOCK_PREFERENCES.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_PREFERENCES.png rename to addons/web/static/src/img/icons/STOCK_PREFERENCES.png diff --git a/addons/base/static/src/img/icons/STOCK_PRINT.png b/addons/web/static/src/img/icons/STOCK_PRINT.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_PRINT.png rename to addons/web/static/src/img/icons/STOCK_PRINT.png diff --git a/addons/base/static/src/img/icons/STOCK_PRINT_PREVIEW.png b/addons/web/static/src/img/icons/STOCK_PRINT_PREVIEW.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_PRINT_PREVIEW.png rename to addons/web/static/src/img/icons/STOCK_PRINT_PREVIEW.png diff --git a/addons/base/static/src/img/icons/STOCK_PROPERTIES.png b/addons/web/static/src/img/icons/STOCK_PROPERTIES.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_PROPERTIES.png rename to addons/web/static/src/img/icons/STOCK_PROPERTIES.png diff --git a/addons/base/static/src/img/icons/STOCK_QUIT.png b/addons/web/static/src/img/icons/STOCK_QUIT.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_QUIT.png rename to addons/web/static/src/img/icons/STOCK_QUIT.png diff --git a/addons/base/static/src/img/icons/STOCK_REDO.png b/addons/web/static/src/img/icons/STOCK_REDO.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_REDO.png rename to addons/web/static/src/img/icons/STOCK_REDO.png diff --git a/addons/base/static/src/img/icons/STOCK_REFRESH.png b/addons/web/static/src/img/icons/STOCK_REFRESH.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_REFRESH.png rename to addons/web/static/src/img/icons/STOCK_REFRESH.png diff --git a/addons/base/static/src/img/icons/STOCK_REMOVE.png b/addons/web/static/src/img/icons/STOCK_REMOVE.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_REMOVE.png rename to addons/web/static/src/img/icons/STOCK_REMOVE.png diff --git a/addons/base/static/src/img/icons/STOCK_REVERT_TO_SAVED.png b/addons/web/static/src/img/icons/STOCK_REVERT_TO_SAVED.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_REVERT_TO_SAVED.png rename to addons/web/static/src/img/icons/STOCK_REVERT_TO_SAVED.png diff --git a/addons/base/static/src/img/icons/STOCK_SAVE.png b/addons/web/static/src/img/icons/STOCK_SAVE.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_SAVE.png rename to addons/web/static/src/img/icons/STOCK_SAVE.png diff --git a/addons/base/static/src/img/icons/STOCK_SAVE_AS.png b/addons/web/static/src/img/icons/STOCK_SAVE_AS.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_SAVE_AS.png rename to addons/web/static/src/img/icons/STOCK_SAVE_AS.png diff --git a/addons/base/static/src/img/icons/STOCK_SELECT_COLOR.png b/addons/web/static/src/img/icons/STOCK_SELECT_COLOR.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_SELECT_COLOR.png rename to addons/web/static/src/img/icons/STOCK_SELECT_COLOR.png diff --git a/addons/base/static/src/img/icons/STOCK_SELECT_FONT.png b/addons/web/static/src/img/icons/STOCK_SELECT_FONT.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_SELECT_FONT.png rename to addons/web/static/src/img/icons/STOCK_SELECT_FONT.png diff --git a/addons/base/static/src/img/icons/STOCK_SORT_ASCENDING.png b/addons/web/static/src/img/icons/STOCK_SORT_ASCENDING.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_SORT_ASCENDING.png rename to addons/web/static/src/img/icons/STOCK_SORT_ASCENDING.png diff --git a/addons/base/static/src/img/icons/STOCK_SORT_DESCENDING.png b/addons/web/static/src/img/icons/STOCK_SORT_DESCENDING.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_SORT_DESCENDING.png rename to addons/web/static/src/img/icons/STOCK_SORT_DESCENDING.png diff --git a/addons/base/static/src/img/icons/STOCK_SPELL_CHECK.png b/addons/web/static/src/img/icons/STOCK_SPELL_CHECK.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_SPELL_CHECK.png rename to addons/web/static/src/img/icons/STOCK_SPELL_CHECK.png diff --git a/addons/base/static/src/img/icons/STOCK_STOP.png b/addons/web/static/src/img/icons/STOCK_STOP.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_STOP.png rename to addons/web/static/src/img/icons/STOCK_STOP.png diff --git a/addons/base/static/src/img/icons/STOCK_STRIKETHROUGH.png b/addons/web/static/src/img/icons/STOCK_STRIKETHROUGH.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_STRIKETHROUGH.png rename to addons/web/static/src/img/icons/STOCK_STRIKETHROUGH.png diff --git a/addons/base/static/src/img/icons/STOCK_UNDELETE.png b/addons/web/static/src/img/icons/STOCK_UNDELETE.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_UNDELETE.png rename to addons/web/static/src/img/icons/STOCK_UNDELETE.png diff --git a/addons/base/static/src/img/icons/STOCK_UNDERLINE.png b/addons/web/static/src/img/icons/STOCK_UNDERLINE.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_UNDERLINE.png rename to addons/web/static/src/img/icons/STOCK_UNDERLINE.png diff --git a/addons/base/static/src/img/icons/STOCK_UNDO.png b/addons/web/static/src/img/icons/STOCK_UNDO.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_UNDO.png rename to addons/web/static/src/img/icons/STOCK_UNDO.png diff --git a/addons/base/static/src/img/icons/STOCK_UNINDENT.png b/addons/web/static/src/img/icons/STOCK_UNINDENT.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_UNINDENT.png rename to addons/web/static/src/img/icons/STOCK_UNINDENT.png diff --git a/addons/base/static/src/img/icons/STOCK_YES.png b/addons/web/static/src/img/icons/STOCK_YES.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_YES.png rename to addons/web/static/src/img/icons/STOCK_YES.png diff --git a/addons/base/static/src/img/icons/STOCK_ZOOM_100.png b/addons/web/static/src/img/icons/STOCK_ZOOM_100.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_ZOOM_100.png rename to addons/web/static/src/img/icons/STOCK_ZOOM_100.png diff --git a/addons/base/static/src/img/icons/STOCK_ZOOM_FIT.png b/addons/web/static/src/img/icons/STOCK_ZOOM_FIT.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_ZOOM_FIT.png rename to addons/web/static/src/img/icons/STOCK_ZOOM_FIT.png diff --git a/addons/base/static/src/img/icons/STOCK_ZOOM_IN.png b/addons/web/static/src/img/icons/STOCK_ZOOM_IN.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_ZOOM_IN.png rename to addons/web/static/src/img/icons/STOCK_ZOOM_IN.png diff --git a/addons/base/static/src/img/icons/STOCK_ZOOM_OUT.png b/addons/web/static/src/img/icons/STOCK_ZOOM_OUT.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_ZOOM_OUT.png rename to addons/web/static/src/img/icons/STOCK_ZOOM_OUT.png diff --git a/addons/base/static/src/img/icons/gtk-add.png b/addons/web/static/src/img/icons/gtk-add.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-add.png rename to addons/web/static/src/img/icons/gtk-add.png diff --git a/addons/base/static/src/img/icons/gtk-apply.png b/addons/web/static/src/img/icons/gtk-apply.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-apply.png rename to addons/web/static/src/img/icons/gtk-apply.png diff --git a/addons/base/static/src/img/icons/gtk-cancel.png b/addons/web/static/src/img/icons/gtk-cancel.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-cancel.png rename to addons/web/static/src/img/icons/gtk-cancel.png diff --git a/addons/base/static/src/img/icons/gtk-close.png b/addons/web/static/src/img/icons/gtk-close.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-close.png rename to addons/web/static/src/img/icons/gtk-close.png diff --git a/addons/base/static/src/img/icons/gtk-convert.png b/addons/web/static/src/img/icons/gtk-convert.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-convert.png rename to addons/web/static/src/img/icons/gtk-convert.png diff --git a/addons/base/static/src/img/icons/gtk-delete.png b/addons/web/static/src/img/icons/gtk-delete.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-delete.png rename to addons/web/static/src/img/icons/gtk-delete.png diff --git a/addons/base/static/src/img/icons/gtk-dnd.png b/addons/web/static/src/img/icons/gtk-dnd.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-dnd.png rename to addons/web/static/src/img/icons/gtk-dnd.png diff --git a/addons/base/static/src/img/icons/gtk-edit.png b/addons/web/static/src/img/icons/gtk-edit.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-edit.png rename to addons/web/static/src/img/icons/gtk-edit.png diff --git a/addons/base/static/src/img/icons/gtk-execute.png b/addons/web/static/src/img/icons/gtk-execute.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-execute.png rename to addons/web/static/src/img/icons/gtk-execute.png diff --git a/addons/base/static/src/img/icons/gtk-find.png b/addons/web/static/src/img/icons/gtk-find.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-find.png rename to addons/web/static/src/img/icons/gtk-find.png diff --git a/addons/base/static/src/img/icons/gtk-go-back.png b/addons/web/static/src/img/icons/gtk-go-back.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-go-back.png rename to addons/web/static/src/img/icons/gtk-go-back.png diff --git a/addons/base/static/src/img/icons/gtk-go-down.png b/addons/web/static/src/img/icons/gtk-go-down.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-go-down.png rename to addons/web/static/src/img/icons/gtk-go-down.png diff --git a/addons/base/static/src/img/icons/gtk-go-forward.png b/addons/web/static/src/img/icons/gtk-go-forward.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-go-forward.png rename to addons/web/static/src/img/icons/gtk-go-forward.png diff --git a/addons/base/static/src/img/icons/gtk-go-up.png b/addons/web/static/src/img/icons/gtk-go-up.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-go-up.png rename to addons/web/static/src/img/icons/gtk-go-up.png diff --git a/addons/base/static/src/img/icons/gtk-goto-last.png b/addons/web/static/src/img/icons/gtk-goto-last.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-goto-last.png rename to addons/web/static/src/img/icons/gtk-goto-last.png diff --git a/addons/base/static/src/img/icons/gtk-indent.png b/addons/web/static/src/img/icons/gtk-indent.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-indent.png rename to addons/web/static/src/img/icons/gtk-indent.png diff --git a/addons/base/static/src/img/icons/gtk-index.png b/addons/web/static/src/img/icons/gtk-index.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-index.png rename to addons/web/static/src/img/icons/gtk-index.png diff --git a/addons/base/static/src/img/icons/gtk-jump-to.png b/addons/web/static/src/img/icons/gtk-jump-to.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-jump-to.png rename to addons/web/static/src/img/icons/gtk-jump-to.png diff --git a/addons/base/static/src/img/icons/gtk-justify-fill.png b/addons/web/static/src/img/icons/gtk-justify-fill.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-justify-fill.png rename to addons/web/static/src/img/icons/gtk-justify-fill.png diff --git a/addons/base/static/src/img/icons/gtk-media-pause.png b/addons/web/static/src/img/icons/gtk-media-pause.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-media-pause.png rename to addons/web/static/src/img/icons/gtk-media-pause.png diff --git a/addons/base/static/src/img/icons/gtk-media-play.png b/addons/web/static/src/img/icons/gtk-media-play.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-media-play.png rename to addons/web/static/src/img/icons/gtk-media-play.png diff --git a/addons/base/static/src/img/icons/gtk-network.png b/addons/web/static/src/img/icons/gtk-network.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-network.png rename to addons/web/static/src/img/icons/gtk-network.png diff --git a/addons/base/static/src/img/icons/gtk-new.png b/addons/web/static/src/img/icons/gtk-new.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-new.png rename to addons/web/static/src/img/icons/gtk-new.png diff --git a/addons/base/static/src/img/icons/gtk-no.png b/addons/web/static/src/img/icons/gtk-no.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-no.png rename to addons/web/static/src/img/icons/gtk-no.png diff --git a/addons/base/static/src/img/icons/gtk-ok.png b/addons/web/static/src/img/icons/gtk-ok.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-ok.png rename to addons/web/static/src/img/icons/gtk-ok.png diff --git a/addons/base/static/src/img/icons/gtk-open.png b/addons/web/static/src/img/icons/gtk-open.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-open.png rename to addons/web/static/src/img/icons/gtk-open.png diff --git a/addons/base/static/src/img/icons/gtk-print.png b/addons/web/static/src/img/icons/gtk-print.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-print.png rename to addons/web/static/src/img/icons/gtk-print.png diff --git a/addons/base/static/src/img/icons/gtk-redo.png b/addons/web/static/src/img/icons/gtk-redo.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-redo.png rename to addons/web/static/src/img/icons/gtk-redo.png diff --git a/addons/base/static/src/img/icons/gtk-remove.png b/addons/web/static/src/img/icons/gtk-remove.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-remove.png rename to addons/web/static/src/img/icons/gtk-remove.png diff --git a/addons/base/static/src/img/icons/gtk-save.png b/addons/web/static/src/img/icons/gtk-save.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-save.png rename to addons/web/static/src/img/icons/gtk-save.png diff --git a/addons/base/static/src/img/icons/gtk-sort-descending.png b/addons/web/static/src/img/icons/gtk-sort-descending.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-sort-descending.png rename to addons/web/static/src/img/icons/gtk-sort-descending.png diff --git a/addons/base/static/src/img/icons/gtk-stop.png b/addons/web/static/src/img/icons/gtk-stop.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-stop.png rename to addons/web/static/src/img/icons/gtk-stop.png diff --git a/addons/base/static/src/img/icons/gtk-undo.png b/addons/web/static/src/img/icons/gtk-undo.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-undo.png rename to addons/web/static/src/img/icons/gtk-undo.png diff --git a/addons/base/static/src/img/icons/gtk-yes.png b/addons/web/static/src/img/icons/gtk-yes.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-yes.png rename to addons/web/static/src/img/icons/gtk-yes.png diff --git a/addons/base/static/src/img/icons/gtk-zoom-fit.png b/addons/web/static/src/img/icons/gtk-zoom-fit.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-zoom-fit.png rename to addons/web/static/src/img/icons/gtk-zoom-fit.png diff --git a/addons/base/static/src/img/icons/gtk-zoom-in.png b/addons/web/static/src/img/icons/gtk-zoom-in.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-zoom-in.png rename to addons/web/static/src/img/icons/gtk-zoom-in.png diff --git a/addons/base/static/src/img/icons/index1.jpeg b/addons/web/static/src/img/icons/index1.jpeg similarity index 100% rename from addons/base/static/src/img/icons/index1.jpeg rename to addons/web/static/src/img/icons/index1.jpeg diff --git a/addons/base/static/src/img/icons/index2.jpeg b/addons/web/static/src/img/icons/index2.jpeg similarity index 100% rename from addons/base/static/src/img/icons/index2.jpeg rename to addons/web/static/src/img/icons/index2.jpeg diff --git a/addons/base/static/src/img/icons/terp-accessories-archiver+.png b/addons/web/static/src/img/icons/terp-accessories-archiver+.png similarity index 100% rename from addons/base/static/src/img/icons/terp-accessories-archiver+.png rename to addons/web/static/src/img/icons/terp-accessories-archiver+.png diff --git a/addons/base/static/src/img/icons/terp-accessories-archiver-minus.png b/addons/web/static/src/img/icons/terp-accessories-archiver-minus.png similarity index 100% rename from addons/base/static/src/img/icons/terp-accessories-archiver-minus.png rename to addons/web/static/src/img/icons/terp-accessories-archiver-minus.png diff --git a/addons/base/static/src/img/icons/terp-accessories-archiver.png b/addons/web/static/src/img/icons/terp-accessories-archiver.png similarity index 100% rename from addons/base/static/src/img/icons/terp-accessories-archiver.png rename to addons/web/static/src/img/icons/terp-accessories-archiver.png diff --git a/addons/base/static/src/img/icons/terp-account.png b/addons/web/static/src/img/icons/terp-account.png similarity index 100% rename from addons/base/static/src/img/icons/terp-account.png rename to addons/web/static/src/img/icons/terp-account.png diff --git a/addons/base/static/src/img/icons/terp-administration.png b/addons/web/static/src/img/icons/terp-administration.png similarity index 100% rename from addons/base/static/src/img/icons/terp-administration.png rename to addons/web/static/src/img/icons/terp-administration.png diff --git a/addons/base/static/src/img/icons/terp-calendar.png b/addons/web/static/src/img/icons/terp-calendar.png similarity index 100% rename from addons/base/static/src/img/icons/terp-calendar.png rename to addons/web/static/src/img/icons/terp-calendar.png diff --git a/addons/base/static/src/img/icons/terp-call-start.png b/addons/web/static/src/img/icons/terp-call-start.png similarity index 100% rename from addons/base/static/src/img/icons/terp-call-start.png rename to addons/web/static/src/img/icons/terp-call-start.png diff --git a/addons/base/static/src/img/icons/terp-camera_test.png b/addons/web/static/src/img/icons/terp-camera_test.png similarity index 100% rename from addons/base/static/src/img/icons/terp-camera_test.png rename to addons/web/static/src/img/icons/terp-camera_test.png diff --git a/addons/base/static/src/img/icons/terp-check.png b/addons/web/static/src/img/icons/terp-check.png similarity index 100% rename from addons/base/static/src/img/icons/terp-check.png rename to addons/web/static/src/img/icons/terp-check.png diff --git a/addons/base/static/src/img/icons/terp-crm.png b/addons/web/static/src/img/icons/terp-crm.png similarity index 100% rename from addons/base/static/src/img/icons/terp-crm.png rename to addons/web/static/src/img/icons/terp-crm.png diff --git a/addons/base/static/src/img/icons/terp-dialog-close.png b/addons/web/static/src/img/icons/terp-dialog-close.png similarity index 100% rename from addons/base/static/src/img/icons/terp-dialog-close.png rename to addons/web/static/src/img/icons/terp-dialog-close.png diff --git a/addons/base/static/src/img/icons/terp-document-new.png b/addons/web/static/src/img/icons/terp-document-new.png similarity index 100% rename from addons/base/static/src/img/icons/terp-document-new.png rename to addons/web/static/src/img/icons/terp-document-new.png diff --git a/addons/base/static/src/img/icons/terp-dolar.png b/addons/web/static/src/img/icons/terp-dolar.png similarity index 100% rename from addons/base/static/src/img/icons/terp-dolar.png rename to addons/web/static/src/img/icons/terp-dolar.png diff --git a/addons/base/static/src/img/icons/terp-dolar_ok!.png b/addons/web/static/src/img/icons/terp-dolar_ok!.png similarity index 100% rename from addons/base/static/src/img/icons/terp-dolar_ok!.png rename to addons/web/static/src/img/icons/terp-dolar_ok!.png diff --git a/addons/base/static/src/img/icons/terp-emblem-important.png b/addons/web/static/src/img/icons/terp-emblem-important.png similarity index 100% rename from addons/base/static/src/img/icons/terp-emblem-important.png rename to addons/web/static/src/img/icons/terp-emblem-important.png diff --git a/addons/base/static/src/img/icons/terp-face-plain.png b/addons/web/static/src/img/icons/terp-face-plain.png similarity index 100% rename from addons/base/static/src/img/icons/terp-face-plain.png rename to addons/web/static/src/img/icons/terp-face-plain.png diff --git a/addons/base/static/src/img/icons/terp-folder-blue.png b/addons/web/static/src/img/icons/terp-folder-blue.png similarity index 100% rename from addons/base/static/src/img/icons/terp-folder-blue.png rename to addons/web/static/src/img/icons/terp-folder-blue.png diff --git a/addons/base/static/src/img/icons/terp-folder-green.png b/addons/web/static/src/img/icons/terp-folder-green.png similarity index 100% rename from addons/base/static/src/img/icons/terp-folder-green.png rename to addons/web/static/src/img/icons/terp-folder-green.png diff --git a/addons/base/static/src/img/icons/terp-folder-orange.png b/addons/web/static/src/img/icons/terp-folder-orange.png similarity index 100% rename from addons/base/static/src/img/icons/terp-folder-orange.png rename to addons/web/static/src/img/icons/terp-folder-orange.png diff --git a/addons/base/static/src/img/icons/terp-folder-violet.png b/addons/web/static/src/img/icons/terp-folder-violet.png similarity index 100% rename from addons/base/static/src/img/icons/terp-folder-violet.png rename to addons/web/static/src/img/icons/terp-folder-violet.png diff --git a/addons/base/static/src/img/icons/terp-folder-yellow.png b/addons/web/static/src/img/icons/terp-folder-yellow.png similarity index 100% rename from addons/base/static/src/img/icons/terp-folder-yellow.png rename to addons/web/static/src/img/icons/terp-folder-yellow.png diff --git a/addons/base/static/src/img/icons/terp-gdu-smart-failing.png b/addons/web/static/src/img/icons/terp-gdu-smart-failing.png similarity index 100% rename from addons/base/static/src/img/icons/terp-gdu-smart-failing.png rename to addons/web/static/src/img/icons/terp-gdu-smart-failing.png diff --git a/addons/base/static/src/img/icons/terp-gnome-cpu-frequency-applet+.png b/addons/web/static/src/img/icons/terp-gnome-cpu-frequency-applet+.png similarity index 100% rename from addons/base/static/src/img/icons/terp-gnome-cpu-frequency-applet+.png rename to addons/web/static/src/img/icons/terp-gnome-cpu-frequency-applet+.png diff --git a/addons/base/static/src/img/icons/terp-go-home.png b/addons/web/static/src/img/icons/terp-go-home.png similarity index 100% rename from addons/base/static/src/img/icons/terp-go-home.png rename to addons/web/static/src/img/icons/terp-go-home.png diff --git a/addons/base/static/src/img/icons/terp-go-month.png b/addons/web/static/src/img/icons/terp-go-month.png similarity index 100% rename from addons/base/static/src/img/icons/terp-go-month.png rename to addons/web/static/src/img/icons/terp-go-month.png diff --git a/addons/base/static/src/img/icons/terp-go-today.png b/addons/web/static/src/img/icons/terp-go-today.png similarity index 100% rename from addons/base/static/src/img/icons/terp-go-today.png rename to addons/web/static/src/img/icons/terp-go-today.png diff --git a/addons/base/static/src/img/icons/terp-go-week.png b/addons/web/static/src/img/icons/terp-go-week.png similarity index 100% rename from addons/base/static/src/img/icons/terp-go-week.png rename to addons/web/static/src/img/icons/terp-go-week.png diff --git a/addons/base/static/src/img/icons/terp-go-year.png b/addons/web/static/src/img/icons/terp-go-year.png similarity index 100% rename from addons/base/static/src/img/icons/terp-go-year.png rename to addons/web/static/src/img/icons/terp-go-year.png diff --git a/addons/base/static/src/img/icons/terp-graph.png b/addons/web/static/src/img/icons/terp-graph.png similarity index 100% rename from addons/base/static/src/img/icons/terp-graph.png rename to addons/web/static/src/img/icons/terp-graph.png diff --git a/addons/base/static/src/img/icons/terp-gtk-go-back-ltr.png b/addons/web/static/src/img/icons/terp-gtk-go-back-ltr.png similarity index 100% rename from addons/base/static/src/img/icons/terp-gtk-go-back-ltr.png rename to addons/web/static/src/img/icons/terp-gtk-go-back-ltr.png diff --git a/addons/base/static/src/img/icons/terp-gtk-go-back-rtl.png b/addons/web/static/src/img/icons/terp-gtk-go-back-rtl.png similarity index 100% rename from addons/base/static/src/img/icons/terp-gtk-go-back-rtl.png rename to addons/web/static/src/img/icons/terp-gtk-go-back-rtl.png diff --git a/addons/base/static/src/img/icons/terp-gtk-jump-to-ltr.png b/addons/web/static/src/img/icons/terp-gtk-jump-to-ltr.png similarity index 100% rename from addons/base/static/src/img/icons/terp-gtk-jump-to-ltr.png rename to addons/web/static/src/img/icons/terp-gtk-jump-to-ltr.png diff --git a/addons/base/static/src/img/icons/terp-gtk-jump-to-rtl.png b/addons/web/static/src/img/icons/terp-gtk-jump-to-rtl.png similarity index 100% rename from addons/base/static/src/img/icons/terp-gtk-jump-to-rtl.png rename to addons/web/static/src/img/icons/terp-gtk-jump-to-rtl.png diff --git a/addons/base/static/src/img/icons/terp-gtk-media-pause.png b/addons/web/static/src/img/icons/terp-gtk-media-pause.png similarity index 100% rename from addons/base/static/src/img/icons/terp-gtk-media-pause.png rename to addons/web/static/src/img/icons/terp-gtk-media-pause.png diff --git a/addons/base/static/src/img/icons/terp-gtk-select-all.png b/addons/web/static/src/img/icons/terp-gtk-select-all.png similarity index 100% rename from addons/base/static/src/img/icons/terp-gtk-select-all.png rename to addons/web/static/src/img/icons/terp-gtk-select-all.png diff --git a/addons/base/static/src/img/icons/terp-gtk-stop.png b/addons/web/static/src/img/icons/terp-gtk-stop.png similarity index 100% rename from addons/base/static/src/img/icons/terp-gtk-stop.png rename to addons/web/static/src/img/icons/terp-gtk-stop.png diff --git a/addons/base/static/src/img/icons/terp-hr.png b/addons/web/static/src/img/icons/terp-hr.png similarity index 100% rename from addons/base/static/src/img/icons/terp-hr.png rename to addons/web/static/src/img/icons/terp-hr.png diff --git a/addons/base/static/src/img/icons/terp-idea.png b/addons/web/static/src/img/icons/terp-idea.png similarity index 100% rename from addons/base/static/src/img/icons/terp-idea.png rename to addons/web/static/src/img/icons/terp-idea.png diff --git a/addons/base/static/src/img/icons/terp-locked.png b/addons/web/static/src/img/icons/terp-locked.png similarity index 100% rename from addons/base/static/src/img/icons/terp-locked.png rename to addons/web/static/src/img/icons/terp-locked.png diff --git a/addons/base/static/src/img/icons/terp-mail-.png b/addons/web/static/src/img/icons/terp-mail-.png similarity index 100% rename from addons/base/static/src/img/icons/terp-mail-.png rename to addons/web/static/src/img/icons/terp-mail-.png diff --git a/addons/base/static/src/img/icons/terp-mail-forward.png b/addons/web/static/src/img/icons/terp-mail-forward.png similarity index 100% rename from addons/base/static/src/img/icons/terp-mail-forward.png rename to addons/web/static/src/img/icons/terp-mail-forward.png diff --git a/addons/base/static/src/img/icons/terp-mail-message-new.png b/addons/web/static/src/img/icons/terp-mail-message-new.png similarity index 100% rename from addons/base/static/src/img/icons/terp-mail-message-new.png rename to addons/web/static/src/img/icons/terp-mail-message-new.png diff --git a/addons/base/static/src/img/icons/terp-mail-replied.png b/addons/web/static/src/img/icons/terp-mail-replied.png similarity index 100% rename from addons/base/static/src/img/icons/terp-mail-replied.png rename to addons/web/static/src/img/icons/terp-mail-replied.png diff --git a/addons/base/static/src/img/icons/terp-mail_delete.png b/addons/web/static/src/img/icons/terp-mail_delete.png similarity index 100% rename from addons/base/static/src/img/icons/terp-mail_delete.png rename to addons/web/static/src/img/icons/terp-mail_delete.png diff --git a/addons/base/static/src/img/icons/terp-marketing.png b/addons/web/static/src/img/icons/terp-marketing.png similarity index 100% rename from addons/base/static/src/img/icons/terp-marketing.png rename to addons/web/static/src/img/icons/terp-marketing.png diff --git a/addons/base/static/src/img/icons/terp-mrp.png b/addons/web/static/src/img/icons/terp-mrp.png similarity index 100% rename from addons/base/static/src/img/icons/terp-mrp.png rename to addons/web/static/src/img/icons/terp-mrp.png diff --git a/addons/base/static/src/img/icons/terp-partner.png b/addons/web/static/src/img/icons/terp-partner.png similarity index 100% rename from addons/base/static/src/img/icons/terp-partner.png rename to addons/web/static/src/img/icons/terp-partner.png diff --git a/addons/base/static/src/img/icons/terp-personal+.png b/addons/web/static/src/img/icons/terp-personal+.png similarity index 100% rename from addons/base/static/src/img/icons/terp-personal+.png rename to addons/web/static/src/img/icons/terp-personal+.png diff --git a/addons/base/static/src/img/icons/terp-personal-.png b/addons/web/static/src/img/icons/terp-personal-.png similarity index 100% rename from addons/base/static/src/img/icons/terp-personal-.png rename to addons/web/static/src/img/icons/terp-personal-.png diff --git a/addons/base/static/src/img/icons/terp-personal.png b/addons/web/static/src/img/icons/terp-personal.png similarity index 100% rename from addons/base/static/src/img/icons/terp-personal.png rename to addons/web/static/src/img/icons/terp-personal.png diff --git a/addons/base/static/src/img/icons/terp-product.png b/addons/web/static/src/img/icons/terp-product.png similarity index 100% rename from addons/base/static/src/img/icons/terp-product.png rename to addons/web/static/src/img/icons/terp-product.png diff --git a/addons/base/static/src/img/icons/terp-project.png b/addons/web/static/src/img/icons/terp-project.png similarity index 100% rename from addons/base/static/src/img/icons/terp-project.png rename to addons/web/static/src/img/icons/terp-project.png diff --git a/addons/base/static/src/img/icons/terp-purchase.png b/addons/web/static/src/img/icons/terp-purchase.png similarity index 100% rename from addons/base/static/src/img/icons/terp-purchase.png rename to addons/web/static/src/img/icons/terp-purchase.png diff --git a/addons/base/static/src/img/icons/terp-rating-rated.png b/addons/web/static/src/img/icons/terp-rating-rated.png similarity index 100% rename from addons/base/static/src/img/icons/terp-rating-rated.png rename to addons/web/static/src/img/icons/terp-rating-rated.png diff --git a/addons/base/static/src/img/icons/terp-report.png b/addons/web/static/src/img/icons/terp-report.png similarity index 100% rename from addons/base/static/src/img/icons/terp-report.png rename to addons/web/static/src/img/icons/terp-report.png diff --git a/addons/base/static/src/img/icons/terp-sale.png b/addons/web/static/src/img/icons/terp-sale.png similarity index 100% rename from addons/base/static/src/img/icons/terp-sale.png rename to addons/web/static/src/img/icons/terp-sale.png diff --git a/addons/base/static/src/img/icons/terp-stage.png b/addons/web/static/src/img/icons/terp-stage.png similarity index 100% rename from addons/base/static/src/img/icons/terp-stage.png rename to addons/web/static/src/img/icons/terp-stage.png diff --git a/addons/base/static/src/img/icons/terp-stock.png b/addons/web/static/src/img/icons/terp-stock.png similarity index 100% rename from addons/base/static/src/img/icons/terp-stock.png rename to addons/web/static/src/img/icons/terp-stock.png diff --git a/addons/base/static/src/img/icons/terp-stock_align_left_24.png b/addons/web/static/src/img/icons/terp-stock_align_left_24.png similarity index 100% rename from addons/base/static/src/img/icons/terp-stock_align_left_24.png rename to addons/web/static/src/img/icons/terp-stock_align_left_24.png diff --git a/addons/base/static/src/img/icons/terp-stock_effects-object-colorize.png b/addons/web/static/src/img/icons/terp-stock_effects-object-colorize.png similarity index 100% rename from addons/base/static/src/img/icons/terp-stock_effects-object-colorize.png rename to addons/web/static/src/img/icons/terp-stock_effects-object-colorize.png diff --git a/addons/base/static/src/img/icons/terp-stock_format-default.png b/addons/web/static/src/img/icons/terp-stock_format-default.png similarity index 100% rename from addons/base/static/src/img/icons/terp-stock_format-default.png rename to addons/web/static/src/img/icons/terp-stock_format-default.png diff --git a/addons/base/static/src/img/icons/terp-stock_format-scientific.png b/addons/web/static/src/img/icons/terp-stock_format-scientific.png similarity index 100% rename from addons/base/static/src/img/icons/terp-stock_format-scientific.png rename to addons/web/static/src/img/icons/terp-stock_format-scientific.png diff --git a/addons/base/static/src/img/icons/terp-stock_symbol-selection.png b/addons/web/static/src/img/icons/terp-stock_symbol-selection.png similarity index 100% rename from addons/base/static/src/img/icons/terp-stock_symbol-selection.png rename to addons/web/static/src/img/icons/terp-stock_symbol-selection.png diff --git a/addons/base/static/src/img/icons/terp-stock_zoom.png b/addons/web/static/src/img/icons/terp-stock_zoom.png similarity index 100% rename from addons/base/static/src/img/icons/terp-stock_zoom.png rename to addons/web/static/src/img/icons/terp-stock_zoom.png diff --git a/addons/base/static/src/img/icons/terp-tools.png b/addons/web/static/src/img/icons/terp-tools.png similarity index 100% rename from addons/base/static/src/img/icons/terp-tools.png rename to addons/web/static/src/img/icons/terp-tools.png diff --git a/addons/base/static/src/img/icons/terp-translate.png b/addons/web/static/src/img/icons/terp-translate.png similarity index 100% rename from addons/base/static/src/img/icons/terp-translate.png rename to addons/web/static/src/img/icons/terp-translate.png diff --git a/addons/base/static/src/img/iconset-d-drop.gif b/addons/web/static/src/img/iconset-d-drop.gif similarity index 100% rename from addons/base/static/src/img/iconset-d-drop.gif rename to addons/web/static/src/img/iconset-d-drop.gif diff --git a/addons/base/static/src/img/logo.png b/addons/web/static/src/img/logo.png similarity index 100% rename from addons/base/static/src/img/logo.png rename to addons/web/static/src/img/logo.png diff --git a/addons/base/static/src/img/partner.png b/addons/web/static/src/img/partner.png similarity index 100% rename from addons/base/static/src/img/partner.png rename to addons/web/static/src/img/partner.png diff --git a/addons/base/static/src/img/placeholder.png b/addons/web/static/src/img/placeholder.png similarity index 100% rename from addons/base/static/src/img/placeholder.png rename to addons/web/static/src/img/placeholder.png diff --git a/addons/base/static/src/img/product.png b/addons/web/static/src/img/product.png similarity index 100% rename from addons/base/static/src/img/product.png rename to addons/web/static/src/img/product.png diff --git a/addons/base/static/src/img/remove-shortcut.png b/addons/web/static/src/img/remove-shortcut.png similarity index 100% rename from addons/base/static/src/img/remove-shortcut.png rename to addons/web/static/src/img/remove-shortcut.png diff --git a/addons/base/static/src/img/stock_person.png b/addons/web/static/src/img/stock_person.png similarity index 100% rename from addons/base/static/src/img/stock_person.png rename to addons/web/static/src/img/stock_person.png diff --git a/addons/base/static/src/img/throbber.gif b/addons/web/static/src/img/throbber.gif similarity index 100% rename from addons/base/static/src/img/throbber.gif rename to addons/web/static/src/img/throbber.gif diff --git a/addons/base/static/src/img/throbber2.gif b/addons/web/static/src/img/throbber2.gif similarity index 100% rename from addons/base/static/src/img/throbber2.gif rename to addons/web/static/src/img/throbber2.gif diff --git a/addons/base/static/src/img/toggle-a-bg.png b/addons/web/static/src/img/toggle-a-bg.png similarity index 100% rename from addons/base/static/src/img/toggle-a-bg.png rename to addons/web/static/src/img/toggle-a-bg.png diff --git a/addons/base/static/src/img/ui/field_calendar.png b/addons/web/static/src/img/ui/field_calendar.png similarity index 100% rename from addons/base/static/src/img/ui/field_calendar.png rename to addons/web/static/src/img/ui/field_calendar.png diff --git a/addons/base/static/src/img/ui/group-expanded.png b/addons/web/static/src/img/ui/group-expanded.png similarity index 100% rename from addons/base/static/src/img/ui/group-expanded.png rename to addons/web/static/src/img/ui/group-expanded.png diff --git a/addons/base/static/src/img/ui/group-folded.png b/addons/web/static/src/img/ui/group-folded.png similarity index 100% rename from addons/base/static/src/img/ui/group-folded.png rename to addons/web/static/src/img/ui/group-folded.png diff --git a/addons/base/static/src/img/warning.png b/addons/web/static/src/img/warning.png similarity index 100% rename from addons/base/static/src/img/warning.png rename to addons/web/static/src/img/warning.png diff --git a/addons/base/static/src/js/boot.js b/addons/web/static/src/js/boot.js similarity index 64% rename from addons/base/static/src/js/boot.js rename to addons/web/static/src/js/boot.js index 43f52dfac85..2c00eb3d5a5 100644 --- a/addons/base/static/src/js/boot.js +++ b/addons/web/static/src/js/boot.js @@ -26,18 +26,18 @@ var new_instance = { // links to the global openerp _openerp: openerp, - // Only base will be loaded, the rest will be by loaded by - // openerp.base.Connection on the first connection + // Only web will be loaded, the rest will be by loaded by + // openerp.web.Connection on the first connection _modules_loaded: false, // this unique id will be replaced by hostname_databasename by - // openerp.base.Connection on the first connection + // openerp.web.Connection on the first connection _session_id: "session" + session_counter++, - base: {}, + web: {}, web_mobile: {} }; openerp.sessions[new_instance._session_id] = new_instance; if (!skip_init){ - openerp.base(new_instance); + openerp.web(new_instance); } return new_instance; } @@ -45,21 +45,21 @@ })(); /*--------------------------------------------------------- - * OpenERP Web base module split + * OpenERP Web web module split *---------------------------------------------------------*/ -openerp.base = function(instance) { - openerp.base.core(instance); - if (openerp.base.dates) { - openerp.base.dates(instance); +openerp.web = function(instance) { + openerp.web.core(instance); + if (openerp.web.dates) { + openerp.web.dates(instance); } - openerp.base.formats(instance); - openerp.base.chrome(instance); - openerp.base.data(instance); - files = ["views","search","list","form","list_editable","web_mobile","view_tree","data_export","data_import"]; - for(i=0; i'}); - self.rpc("/base/database/create", {'fields': fields}, function(result) { + $.blockUI({message:''}); + self.rpc("/web/database/create", {'fields': fields}, function(result) { if (result.error) { $.unblockUI(); self.display_error(result); @@ -327,7 +326,7 @@ openerp.base.Database = openerp.base.Widget.extend({ if (!confirm("Do you really want to delete the database: " + db + " ?")) { return; } - self.rpc("/base/database/drop", {'fields': fields}, function(result) { + self.rpc("/web/database/drop", {'fields': fields}, function(result) { if (result.error) { self.display_error(result); return; @@ -339,62 +338,23 @@ openerp.base.Database = openerp.base.Widget.extend({ } }); }, - wait_for_file: function (token, cleanup) { - var self = this, - cookie_name = 'fileToken', - cookie_length = cookie_name.length; - this.backup_timer = setInterval(function () { - var cookies = document.cookie.split(';'); - for(var i=0; i'}); - // need to detect when the file is done downloading (not used - // yet, but we'll need it to fix the UI e.g. with a throbber - // while dump is being generated), iframe load event only fires - // when the iframe content loads, so we need to go smarter: - // http://geekswithblogs.net/GruffCode/archive/2010/10/28/detecting-the-file-download-dialog-in-the-browser.aspx - var $target = $('#backup-target'), - token = new Date().getTime(); - if (!$target.length) { - $target = $(' @@ -922,11 +926,11 @@
    + method="post" enctype="multipart/form-data" action="/web/binary/upload"> @@ -935,13 +939,13 @@ @@ -949,7 +953,7 @@ - + Uploading ... @@ -961,7 +965,7 @@ t-att-id="widget.element_id + '_button'" t-att-title="widget.help" style="width: 100%" class="button"> - + @@ -1011,7 +1015,7 @@ t-att-title="attrs.help" t-att-class="classes.join(' ')" t-att-autofocus="attrs.default_focus === '1' ? 'autofocus' : undefined"> - +
    @@ -1020,10 +1024,11 @@ > -
    -
    - - - - - - - - + + + + + + -
    + This wizard will export all data that matches the current search criteria to a CSV file. + You can export all data or only the fields that can be reimported after modification. +
    + + -
    - - + + + + - - - - - - - - - - - - - -
    Available fieldsFields to export - Save fields list -
    -
    -
    -
    -
    -
    - - - - - - - - - - -
    - -
    - -
    - -
    -
    - -
    - - - - + + Available fields + + + Fields to export + Save fields list +
    +
    + + + + +
    +
    + + + + + + + + + + + - - - - -
    Name
    -
    - - - - - - - - - - +
    &nbsp;
    + + +
    Name
    + + + + + + + + + + - - -
    &nbsp; + + + - - - - - - - - - - -
    - - -
    -
    + + + + + + + + + + + @@ -1350,18 +1324,15 @@ - - - - - - - + + + + @@ -1535,4 +1506,35 @@ + + +
    +

    OpenERP Web

    +

    Version

    +

    + Copyright © 2011-TODAY OpenERP SA. All Rights Reserved.
    + OpenERP is a trademark of the OpenERP SA Company. +

    +

    + Licenced under the terms of GNU Affero General Public License +

    +
    +

    About OpenERP

    +

    + OpenERP is a free enterprise-scale software system that is designed to boost + productivity and profit through data integration. It connects, improves and + manages business processes in areas such as sales, finance, supply chain, + project management, production, services, CRM, etc... +

    +

    + The system is platform-independent, and can be installed on Windows, Mac OS X, + and various Linux and other Unix-based distributions. Its architecture enables + new functionality to be rapidly created, modifications to be made to a + production system and migration to a new version to be straightforward. +

    +

    + Depending on your needs, OpenERP is available through a web or application client. +

    +
    +
    \ No newline at end of file diff --git a/addons/base/static/test/class.js b/addons/web/static/test/class.js similarity index 89% rename from addons/base/static/test/class.js rename to addons/web/static/test/class.js index 9ee6cedbcf1..ed977635a5f 100644 --- a/addons/base/static/test/class.js +++ b/addons/web/static/test/class.js @@ -1,13 +1,13 @@ $(document).ready(function () { var openerp; - module('base-class', { + module('web-class', { setup: function () { openerp = window.openerp.init(); - window.openerp.base.core(openerp); + window.openerp.web.core(openerp); } }); test('Basic class creation', function () { - var C = openerp.base.Class.extend({ + var C = openerp.web.Class.extend({ foo: function () { return this.somevar; } @@ -19,12 +19,12 @@ $(document).ready(function () { strictEqual(instance.foo(), 3); }); test('Class initialization', function () { - var C1 = openerp.base.Class.extend({ + var C1 = openerp.web.Class.extend({ init: function () { this.foo = 3; } }); - var C2 = openerp.base.Class.extend({ + var C2 = openerp.web.Class.extend({ init: function (arg) { this.foo = arg; } @@ -37,7 +37,7 @@ $(document).ready(function () { strictEqual(i2.foo, 42); }); test('Inheritance', function () { - var C0 = openerp.base.Class.extend({ + var C0 = openerp.web.Class.extend({ foo: function () { return 1; } @@ -58,7 +58,7 @@ $(document).ready(function () { strictEqual(new C2().foo(), 3); }); test('In-place extension', function () { - var C0 = openerp.base.Class.extend({ + var C0 = openerp.web.Class.extend({ foo: function () { return 3; }, @@ -84,7 +84,7 @@ $(document).ready(function () { strictEqual(new C0().qux(), 5); }); test('In-place extension and inheritance', function () { - var C0 = openerp.base.Class.extend({ + var C0 = openerp.web.Class.extend({ foo: function () { return 1; }, bar: function () { return 1; } }); @@ -102,7 +102,7 @@ $(document).ready(function () { strictEqual(new C1().bar(), 2); }); test('In-place extensions alter existing instances', function () { - var C0 = openerp.base.Class.extend({ + var C0 = openerp.web.Class.extend({ foo: function () { return 1; }, bar: function () { return 1; } }); @@ -118,7 +118,7 @@ $(document).ready(function () { strictEqual(instance.bar(), 3); }); test('In-place extension of subclassed types', function () { - var C0 = openerp.base.Class.extend({ + var C0 = openerp.web.Class.extend({ foo: function () { return 1; }, bar: function () { return 1; } }); diff --git a/addons/base/static/test/form.js b/addons/web/static/test/form.js similarity index 58% rename from addons/base/static/test/form.js rename to addons/web/static/test/form.js index 34930918ae0..8317c7bfcd2 100644 --- a/addons/base/static/test/form.js +++ b/addons/web/static/test/form.js @@ -3,13 +3,13 @@ $(document).ready(function () { module("form.widget", { setup: function () { openerp = window.openerp.init(true); - window.openerp.base.core(openerp); - window.openerp.base.chrome(openerp); + window.openerp.web.core(openerp); + window.openerp.web.chrome(openerp); // views loader stuff - window.openerp.base.data(openerp); - window.openerp.base.views(openerp); - window.openerp.base.list(openerp); - window.openerp.base.form(openerp); + window.openerp.web.data(openerp); + window.openerp.web.views(openerp); + window.openerp.web.list(openerp); + window.openerp.web.form(openerp); } }); test("compute_domain", function () { @@ -19,15 +19,15 @@ $(document).ready(function () { 'select1': {value: 'day'}, 'rrule_type': {value: 'monthly'} }; - ok(openerp.base.form.compute_domain( + ok(openerp.web.form.compute_domain( [['a', '=', 3]], fields)); - ok(openerp.base.form.compute_domain( + ok(openerp.web.form.compute_domain( [['group_method','!=','count']], fields)); - ok(openerp.base.form.compute_domain( + ok(openerp.web.form.compute_domain( [['select1','=','day'], ['rrule_type','=','monthly']], fields)); }); test("compute_domain or", function () { - var base = { + var web = { 'section_id': {value: null}, 'user_id': {value: null}, 'member_ids': {value: null} @@ -37,22 +37,22 @@ $(document).ready(function () { '|', ['user_id','=',3], ['member_ids', 'in', [3]]]; - ok(openerp.base.form.compute_domain(domain, _.extend( - {}, base, {'section_id': {value: 42}}))); - ok(openerp.base.form.compute_domain(domain, _.extend( - {}, base, {'user_id': {value: 3}}))); + ok(openerp.web.form.compute_domain(domain, _.extend( + {}, web, {'section_id': {value: 42}}))); + ok(openerp.web.form.compute_domain(domain, _.extend( + {}, web, {'user_id': {value: 3}}))); - ok(openerp.base.form.compute_domain(domain, _.extend( - {}, base, {'member_ids': {value: 3}}))); + ok(openerp.web.form.compute_domain(domain, _.extend( + {}, web, {'member_ids': {value: 3}}))); }); test("compute_domain not", function () { var fields = { 'a': {value: 5}, 'group_method': {value: 'line'} }; - ok(openerp.base.form.compute_domain( + ok(openerp.web.form.compute_domain( ['!', ['a', '=', 3]], fields)); - ok(openerp.base.form.compute_domain( + ok(openerp.web.form.compute_domain( ['!', ['group_method','=','count']], fields)); }); }); diff --git a/addons/web/static/test/formats.js b/addons/web/static/test/formats.js new file mode 100644 index 00000000000..331725dd9a5 --- /dev/null +++ b/addons/web/static/test/formats.js @@ -0,0 +1,54 @@ +$(document).ready(function () { + var openerp; + module('web-formats', { + setup: function () { + openerp = window.openerp.init(); + window.openerp.web.core(openerp); + window.openerp.web.dates(openerp); + window.openerp.web.formats(openerp); + } + }); + test("format_datetime", function () { + var date = openerp.web.str_to_datetime("2009-05-04 12:34:23"); + var str = openerp.web.format_value(date, {type:"datetime"}); + equal(str, date.toString("M/d/yyyy h:mm:ss tt")); + }); + test("format_date", function () { + var date = openerp.web.str_to_datetime("2009-05-04 12:34:23"); + var str = openerp.web.format_value(date, {type:"date"}); + equal(str, date.toString("M/d/yyyy")); + }); + test("format_time", function () { + var date = openerp.web.str_to_datetime("2009-05-04 12:34:23"); + var str = openerp.web.format_value(date, {type:"time"}); + equal(str, date.toString("h:mm:ss tt")); + }); + test("format_float", function () { + var fl = 12.1234; + var str = openerp.web.format_value(fl, {type:"float"}); + equal(str, "12.12"); + }); + test("parse_datetime", function () { + var val = openerp.web.str_to_datetime("2009-05-04 12:34:23"); + var res = openerp.web.parse_value(val.toString("M/d/yyyy h:mm:ss tt"), {type:"datetime"}); + equal(val.toString("M/d/yyyy h:mm:ss tt"), res.toString("M/d/yyyy h:mm:ss tt")); + }); + test("parse_date", function () { + var val = openerp.web.str_to_date("2009-05-04"); + var res = openerp.web.parse_value(val.toString("M/d/yyyy"), {type:"date"}); + equal(val.toString("M/d/yyyy"), res.toString("M/d/yyyy")); + }); + test("parse_time", function () { + var val = openerp.web.str_to_time("12:34:23"); + var res = openerp.web.parse_value(val.toString("h:mm:ss tt"), {type:"time"}); + equal(val.toString("h:mm:ss tt"), res.toString("h:mm:ss tt")); + }); + test("parse_float", function () { + var str = "134,112.1234"; + var val = openerp.web.parse_value(str, {type:"float"}); + equal(val, 134112.1234); + var str = "-134,112.1234"; + var val = openerp.web.parse_value(str, {type:"float"}); + equal(val, -134112.1234); + }); +}); \ No newline at end of file diff --git a/addons/base/static/test/list-utils.js b/addons/web/static/test/list-utils.js similarity index 84% rename from addons/base/static/test/list-utils.js rename to addons/web/static/test/list-utils.js index 0b15b81f544..f71da82a560 100644 --- a/addons/base/static/test/list-utils.js +++ b/addons/web/static/test/list-utils.js @@ -11,29 +11,29 @@ $(document).ready(function () { module('list-events', { setup: function () { openerp = window.openerp.init(); - window.openerp.base.list(openerp); + window.openerp.web.list(openerp); } }); test('Simple event triggering', function () { - var e = create(openerp.base.list.Events), passed = false; + var e = create(openerp.web.list.Events), passed = false; e.bind('foo', function () { passed = true; }); e.trigger('foo'); ok(passed); }); test('Bind all', function () { - var e = create(openerp.base.list.Events), event = null; + var e = create(openerp.web.list.Events), event = null; e.bind(null, function (ev) { event = ev; }); e.trigger('foo'); strictEqual(event, 'foo'); }); test('Propagate trigger params', function () { - var e = create(openerp.base.list.Events), p = false; + var e = create(openerp.web.list.Events), p = false; e.bind(null, function (_, param) { p = param }); e.trigger('foo', true); strictEqual(p, true) }); test('Bind multiple callbacks', function () { - var e = create(openerp.base.list.Events), count; + var e = create(openerp.web.list.Events), count; e.bind('foo', function () { count++; }) .bind('bar', function () { count++; }) .bind(null, function () { count++; }) @@ -54,10 +54,10 @@ $(document).ready(function () { strictEqual(count, 3); }); test('Mixin events', function () { - var cls = openerp.base.Class.extend({ + var cls = openerp.web.Class.extend({ method: function () { this.trigger('e'); } }); - cls.include(openerp.base.list.Events); + cls.include(openerp.web.list.Events); var instance = new cls, triggered = false; instance.bind('e', function () { triggered = true; }); @@ -66,7 +66,7 @@ $(document).ready(function () { ok(triggered); }); test('Unbind all handlers', function () { - var e = create(openerp.base.list.Events), passed = 0; + var e = create(openerp.web.list.Events), passed = 0; e.bind('foo', function () { passed++; }); e.trigger('foo'); strictEqual(passed, 1); @@ -75,7 +75,7 @@ $(document).ready(function () { strictEqual(passed, 1); }); test('Unbind one handler', function () { - var e = create(openerp.base.list.Events), p1 = 0, p2 = 0, + var e = create(openerp.web.list.Events), p1 = 0, p2 = 0, h1 = function () { p1++; }, h2 = function () { p2++; }; e.bind('foo', h1); e.bind('foo', h2); @@ -91,11 +91,11 @@ $(document).ready(function () { module('list-records', { setup: function () { openerp = window.openerp.init(); - window.openerp.base.list(openerp); + window.openerp.web.list(openerp); } }); test('Basic record initialization', function () { - var r = new openerp.base.list.Record({qux: 3}); + var r = new openerp.web.list.Record({qux: 3}); r.set('foo', 1); r.set('bar', 2); strictEqual(r.get('foo'), 1); @@ -103,7 +103,7 @@ $(document).ready(function () { strictEqual(r.get('qux'), 3); }); test('Change all the things', function () { - var r = new openerp.base.list.Record(), changed = false, field; + var r = new openerp.web.list.Record(), changed = false, field; r.bind('change', function () { changed = true; }); r.bind(null, function (e) { field = field || e.split(':')[1]}); r.set('foo', 1); @@ -112,7 +112,7 @@ $(document).ready(function () { strictEqual(field, 'foo'); }); test('Change single field', function () { - var r = new openerp.base.list.Record(), changed = 0; + var r = new openerp.web.list.Record(), changed = 0; r.bind('change:foo', function () { changed++; }); r.set('foo', 1); r.set('bar', 1); @@ -124,11 +124,11 @@ $(document).ready(function () { module('list-collections-degenerate', { setup: function () { openerp = window.openerp.init(); - window.openerp.base.list(openerp); + window.openerp.web.list(openerp); } }); test('Fetch from collection', function () { - var c = new openerp.base.list.Collection(); + var c = new openerp.web.list.Collection(); strictEqual(c.length, 0); c.add({id: 1, value: 2}); c.add({id: 2, value: 3}); @@ -137,16 +137,16 @@ $(document).ready(function () { strictEqual(c.length, 4); var r = c.at(2), r2 = c.get(1); - ok(r instanceof openerp.base.list.Record); + ok(r instanceof openerp.web.list.Record); strictEqual(r.get('id'), 3); strictEqual(r.get('value'), 5); - ok(r2 instanceof openerp.base.list.Record); + ok(r2 instanceof openerp.web.list.Record); strictEqual(r2.get('id'), 1); strictEqual(r2.get('value'), 2); }); test('Add at index', function () { - var c = new openerp.base.list.Collection([ + var c = new openerp.web.list.Collection([ {id: 1, value: 5}, {id: 2, value: 10}, {id: 3, value: 20} @@ -158,7 +158,7 @@ $(document).ready(function () { strictEqual(c.at(3).get('value'), 20); }); test('Remove record', function () { - var c = new openerp.base.list.Collection([ + var c = new openerp.web.list.Collection([ {id: 1, value: 5}, {id: 2, value: 10}, {id: 3, value: 20} @@ -171,7 +171,7 @@ $(document).ready(function () { strictEqual(c.at(1).get('value'), 20); }); test('Reset', function () { - var event, obj, c = new openerp.base.list.Collection([ + var event, obj, c = new openerp.web.list.Collection([ {id: 1, value: 5}, {id: 2, value: 10}, {id: 3, value: 20} @@ -193,7 +193,7 @@ $(document).ready(function () { test('Events propagation', function () { var values = []; - var c = new openerp.base.list.Collection([ + var c = new openerp.web.list.Collection([ {id: 1, value: 5}, {id: 2, value: 10}, {id: 3, value: 20} @@ -207,7 +207,7 @@ $(document).ready(function () { deepEqual(values, [6, 11, 21]); }); test('BTree', function () { - var root = new openerp.base.list.Collection(), + var root = new openerp.web.list.Collection(), c = root.proxy('admin'), total = 0; c.add({id: 1, name: "Administrator", login: 'admin'}); @@ -226,11 +226,11 @@ $(document).ready(function () { module('list-hofs', { setup: function () { openerp = window.openerp.init(); - window.openerp.base.list(openerp); + window.openerp.web.list(openerp); } }); test('each, degenerate', function () { - var c = new openerp.base.list.Collection([ + var c = new openerp.web.list.Collection([ {id: 1, value: 5}, {id: 2, value: 10}, {id: 3, value: 20} @@ -243,7 +243,7 @@ $(document).ready(function () { 'degenerate collections should be iterated in record order'); }); test('each, deep', function () { - var root = new openerp.base.list.Collection(), + var root = new openerp.web.list.Collection(), ids = []; root.proxy('foo').add([ {id: 1, value: 5}, @@ -263,7 +263,7 @@ $(document).ready(function () { 'tree collections should be deeply iterated'); }); test('map, degenerate', function () { - var c = new openerp.base.list.Collection([ + var c = new openerp.web.list.Collection([ {id: 1, value: 5}, {id: 2, value: 10}, {id: 3, value: 20} @@ -276,7 +276,7 @@ $(document).ready(function () { 'degenerate collections should be iterated in record order'); }); test('map, deep', function () { - var root = new openerp.base.list.Collection(); + var root = new openerp.web.list.Collection(); root.proxy('foo').add([ {id: 1, value: 5}, {id: 2, value: 10}, diff --git a/addons/base/static/test/qunit-doc.js b/addons/web/static/test/qunit-doc.js similarity index 100% rename from addons/base/static/test/qunit-doc.js rename to addons/web/static/test/qunit-doc.js diff --git a/addons/web/static/test/registry.js b/addons/web/static/test/registry.js new file mode 100644 index 00000000000..0a3e65e9b1c --- /dev/null +++ b/addons/web/static/test/registry.js @@ -0,0 +1,33 @@ +$(document).ready(function () { + var openerp; + module('Registry', { + setup: function () { + openerp = window.openerp.init(true); + window.openerp.web.core(openerp); + openerp.web.Foo = {}; + openerp.web.Bar = {}; + } + }); + test('key fetch', function () { + var reg = new openerp.web.Registry({ + foo: 'openerp.web.Foo', + bar: 'openerp.web.Bar', + quux: 'openerp.web.Quux' + }); + + strictEqual(reg.get_object('foo'), openerp.web.Foo); + raises(function () { reg.get_object('qux'); }, + openerp.web.KeyNotFound, + "Unknown keys should raise KeyNotFound"); + raises(function () { reg.get_object('quux'); }, + openerp.web.ObjectNotFound, + "Incorrect file paths should raise ObjectNotFound"); + }); + test('key set', function () { + var reg = new openerp.web.Registry(); + + reg.add('foo', 'openerp.web.Foo') + .add('bar', 'openerp.web.Bar'); + strictEqual(reg.get_object('bar'), openerp.web.Bar); + }); +}); diff --git a/addons/web/static/test/test.html b/addons/web/static/test/test.html new file mode 100644 index 00000000000..38237a0600a --- /dev/null +++ b/addons/web/static/test/test.html @@ -0,0 +1,53 @@ + + + + + OpenERP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    OpenERP web Test Suite

    +

    +
    +

    +
      +
      + + + + + + + diff --git a/addons/base/test/__init__.py b/addons/web/test/__init__.py similarity index 100% rename from addons/base/test/__init__.py rename to addons/web/test/__init__.py diff --git a/addons/base/test/test_dataset.py b/addons/web/test/test_dataset.py similarity index 96% rename from addons/base/test/test_dataset.py rename to addons/web/test/test_dataset.py index 702c63b0899..898ca5a582c 100644 --- a/addons/base/test/test_dataset.py +++ b/addons/web/test/test_dataset.py @@ -1,11 +1,11 @@ # -*- coding: utf-8 -*- import mock import unittest2 -import base.controllers.main +import web.controllers.main class TestDataSetController(unittest2.TestCase): def setUp(self): - self.dataset = base.controllers.main.DataSet() + self.dataset = web.controllers.main.DataSet() self.request = mock.Mock() self.read = self.request.session.model().read self.search = self.request.session.model().search diff --git a/addons/base/test/test_menu.py b/addons/web/test/test_menu.py similarity index 94% rename from addons/base/test/test_menu.py rename to addons/web/test/test_menu.py index 5b4fddd05e1..d763fd7dcb1 100644 --- a/addons/base/test/test_menu.py +++ b/addons/web/test/test_menu.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- import mock import unittest2 -import base.controllers.main +import web.controllers.main import openerpweb.openerpweb class Placeholder(object): @@ -11,7 +11,7 @@ class Placeholder(object): class LoadTest(unittest2.TestCase): def setUp(self): - self.menu = base.controllers.main.Menu() + self.menu = web.controllers.main.Menu() self.menus_mock = mock.Mock() self.request = Placeholder( session=openerpweb.openerpweb.OpenERPSession( @@ -100,7 +100,7 @@ class LoadTest(unittest2.TestCase): class ActionMungerTest(unittest2.TestCase): def setUp(self): - self.menu = base.controllers.main.Menu() + self.menu = web.controllers.main.Menu() def test_actual_treeview(self): action = { "views": [[False, "tree"], [False, "form"], @@ -111,7 +111,7 @@ class ActionMungerTest(unittest2.TestCase): } changed = action.copy() del action['view_type'] - base.controllers.main.fix_view_modes(changed) + web.controllers.main.fix_view_modes(changed) self.assertEqual(changed, action) @@ -123,7 +123,7 @@ class ActionMungerTest(unittest2.TestCase): "view_id": False, "view_mode": "tree,form,calendar" } - base.controllers.main.fix_view_modes(action) + web.controllers.main.fix_view_modes(action) self.assertEqual(action, { "views": [[False, "list"], [False, "form"], @@ -141,7 +141,7 @@ class ActionMungerTest(unittest2.TestCase): "view_id": False, "view_mode": "tree,form,calendar" } - base.controllers.main.fix_view_modes(action) + web.controllers.main.fix_view_modes(action) self.assertEqual(action, { "views": [[False, "list"], [False, "form"], diff --git a/addons/base/test/test_view.py b/addons/web/test/test_view.py similarity index 95% rename from addons/base/test/test_view.py rename to addons/web/test/test_view.py index 0070ea11cf4..677ed42eb2b 100644 --- a/addons/base/test/test_view.py +++ b/addons/web/test/test_view.py @@ -5,7 +5,7 @@ import mock import unittest2 import simplejson -import base.controllers.main +import web.controllers.main import openerpweb.nonliterals import openerpweb.openerpweb @@ -17,7 +17,7 @@ def field_attrs(fields_view_get, fieldname): #noinspection PyCompatibility class DomainsAndContextsTest(unittest2.TestCase): def setUp(self): - self.view = base.controllers.main.View() + self.view = web.controllers.main.View() def test_convert_literal_domain(self): e = xml.etree.ElementTree.Element( @@ -107,10 +107,10 @@ class DomainsAndContextsTest(unittest2.TestCase): class AttrsNormalizationTest(unittest2.TestCase): def setUp(self): - self.view = base.controllers.main.View() + self.view = web.controllers.main.View() def test_identity(self): - base_view = """ + web_view = """ @@ -120,8 +120,8 @@ class AttrsNormalizationTest(unittest2.TestCase): """ - pristine = xml.etree.ElementTree.fromstring(base_view) - transformed = self.view.transform_view(base_view, None) + pristine = xml.etree.ElementTree.fromstring(web_view) + transformed = self.view.transform_view(web_view, None) self.assertEqual( xml.etree.ElementTree.tostring(transformed), @@ -166,7 +166,7 @@ class AttrsNormalizationTest(unittest2.TestCase): '''} - parsed_view = base.controllers.main.View().fields_view_get( + parsed_view = web.controllers.main.View().fields_view_get( req, 'project.task', 42, 'tree') self.assertTrue(field_attrs(parsed_view, 'sequence')['invisible']) @@ -180,7 +180,7 @@ class AttrsNormalizationTest(unittest2.TestCase): class ListViewTest(unittest2.TestCase): def setUp(self): - self.view = base.controllers.main.ListView() + self.view = web.controllers.main.ListView() self.request = mock.Mock() self.request.context = {'set_editable': True} def test_no_editable_editable_context(self): diff --git a/addons/base_calendar/__init__.py b/addons/web_calendar/__init__.py similarity index 100% rename from addons/base_calendar/__init__.py rename to addons/web_calendar/__init__.py diff --git a/addons/base_calendar/__openerp__.py b/addons/web_calendar/__openerp__.py similarity index 88% rename from addons/base_calendar/__openerp__.py rename to addons/web_calendar/__openerp__.py index b8f6a954082..ba18ef0490e 100644 --- a/addons/base_calendar/__openerp__.py +++ b/addons/web_calendar/__openerp__.py @@ -1,7 +1,7 @@ { - "name": "Base calendar", + "name": "web calendar", "version": "2.0", - "depends": ['base'], + "depends": ['web'], "js": [ 'static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler_debug.js', 'static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_minical.js', diff --git a/addons/base_calendar/controllers/__init__.py b/addons/web_calendar/controllers/__init__.py similarity index 100% rename from addons/base_calendar/controllers/__init__.py rename to addons/web_calendar/controllers/__init__.py diff --git a/addons/base_calendar/controllers/main.py b/addons/web_calendar/controllers/main.py similarity index 68% rename from addons/base_calendar/controllers/main.py rename to addons/web_calendar/controllers/main.py index 0211b3e4632..4cf65bae77f 100644 --- a/addons/base_calendar/controllers/main.py +++ b/addons/web_calendar/controllers/main.py @@ -1,9 +1,9 @@ -import base.common as openerpweb +import web.common as openerpweb -from base.controllers.main import View +from web.controllers.main import View class CalendarView(View): - _cp_path = "/base_calendar/calendarview" + _cp_path = "/web_calendar/calendarview" @openerpweb.jsonrequest def load(self, req, model, view_id, toolbar=False): diff --git a/addons/base_calendar/po/base_calendar.pot b/addons/web_calendar/po/base_calendar.pot similarity index 100% rename from addons/base_calendar/po/base_calendar.pot rename to addons/web_calendar/po/base_calendar.pot diff --git a/addons/web_calendar/po/web_calendar.pot b/addons/web_calendar/po/web_calendar.pot new file mode 100644 index 00000000000..822614f03bf --- /dev/null +++ b/addons/web_calendar/po/web_calendar.pot @@ -0,0 +1,23 @@ +# Translations template for PROJECT. +# Copyright (C) 2011 ORGANIZATION +# This file is distributed under the same license as the PROJECT project. +# FIRST AUTHOR , 2011. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PROJECT VERSION\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2011-09-06 12:02+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 0.9.6\n" + +#: addons/web_calendar/static/src/xml/web_calendar.xml:0 +msgid " " +msgstr "" + diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/base_connector.php b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/base_connector.php similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/base_connector.php rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/base_connector.php diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/combo_connector.php b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/combo_connector.php similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/combo_connector.php rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/combo_connector.php diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/connector.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/connector.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/connector.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/connector.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/crosslink_connector.php b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/crosslink_connector.php similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/crosslink_connector.php rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/crosslink_connector.php diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/dataprocessor.php b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/dataprocessor.php similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/dataprocessor.php rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/dataprocessor.php diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/db_common.php b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/db_common.php similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/db_common.php rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/db_common.php diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/db_mssql.php b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/db_mssql.php similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/db_mssql.php rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/db_mssql.php diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/db_mysqli.php b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/db_mysqli.php similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/db_mysqli.php rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/db_mysqli.php diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/db_oracle.php b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/db_oracle.php similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/db_oracle.php rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/db_oracle.php diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/db_pdo.php b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/db_pdo.php similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/db_pdo.php rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/db_pdo.php diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/db_postgre.php b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/db_postgre.php similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/db_postgre.php rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/db_postgre.php diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/grid_connector.php b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/grid_connector.php similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/grid_connector.php rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/grid_connector.php diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/scheduler_connector.php b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/scheduler_connector.php similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/scheduler_connector.php rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/scheduler_connector.php diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/tools.php b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/tools.php similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/tools.php rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/tools.php diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/tree_connector.php b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/tree_connector.php similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/tree_connector.php rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/tree_connector.php diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/treegrid_connector.php b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/treegrid_connector.php similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/treegrid_connector.php rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/treegrid_connector.php diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/update.php b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/update.php similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/update.php rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/update.php diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler.css b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler.css similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler.css rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler.css diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler_debug.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler_debug.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler_debug.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler_debug.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler_glossy.css b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler_glossy.css similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler_glossy.css rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler_glossy.css diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler_mobile.css b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler_mobile.css similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler_mobile.css rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler_mobile.css diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler_mobile.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler_mobile.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler_mobile.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler_mobile.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_active_links.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_active_links.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_active_links.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_active_links.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_agenda_view.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_agenda_view.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_agenda_view.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_agenda_view.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_collision.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_collision.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_collision.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_collision.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_cookie.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_cookie.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_cookie.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_cookie.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_editors.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_editors.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_editors.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_editors.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_expand.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_expand.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_expand.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_expand.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_html_templates.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_html_templates.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_html_templates.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_html_templates.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_key_nav.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_key_nav.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_key_nav.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_key_nav.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_limit.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_limit.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_limit.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_limit.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_map_view.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_map_view.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_map_view.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_map_view.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_minical.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_minical.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_minical.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_minical.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_multiselect.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_multiselect.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_multiselect.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_multiselect.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_multisource.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_multisource.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_multisource.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_multisource.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_offline.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_offline.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_offline.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_offline.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_outerdrag.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_outerdrag.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_outerdrag.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_outerdrag.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_pdf.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_pdf.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_pdf.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_pdf.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_readonly.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_readonly.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_readonly.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_readonly.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_recurring.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_recurring.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_recurring.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_recurring.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_serialize.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_serialize.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_serialize.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_serialize.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_timeline.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_timeline.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_timeline.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_timeline.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_tooltip.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_tooltip.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_tooltip.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_tooltip.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_touch.css b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_touch.css similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_touch.css rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_touch.css diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_touch.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_touch.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_touch.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_touch.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_treetimeline.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_treetimeline.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_treetimeline.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_treetimeline.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_units.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_units.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_units.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_units.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_url.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_url.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_url.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_url.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_week_agenda.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_week_agenda.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_week_agenda.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_week_agenda.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_year_view.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_year_view.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_year_view.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_year_view.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs/but_repeat.gif b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/but_repeat.gif similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs/but_repeat.gif rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/but_repeat.gif diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs/buttons.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/buttons.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs/buttons.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/buttons.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs/calendar.gif b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/calendar.gif similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs/calendar.gif rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/calendar.gif diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs/clock_big.gif b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/clock_big.gif similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs/clock_big.gif rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/clock_big.gif diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs/clock_small.gif b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/clock_small.gif similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs/clock_small.gif rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/clock_small.gif diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs/colapce-expand-icon.gif b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/colapce-expand-icon.gif similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs/colapce-expand-icon.gif rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/colapce-expand-icon.gif diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controls.gif b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controls.gif similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controls.gif rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controls.gif diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg_now.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg_now.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg_now.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg_now.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs/icon.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/icon.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs/icon.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/icon.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs/loading.gif b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/loading.gif similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs/loading.gif rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/loading.gif diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/blue_tab.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/blue_tab.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/blue_tab.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/blue_tab.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/blue_tab_wide.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/blue_tab_wide.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/blue_tab_wide.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/blue_tab_wide.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/but_repeat.gif b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/but_repeat.gif similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/but_repeat.gif rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/but_repeat.gif diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/buttons.gif b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/buttons.gif similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/buttons.gif rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/buttons.gif diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/calendar.gif b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/calendar.gif similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/calendar.gif rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/calendar.gif diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/clock_big.gif b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/clock_big.gif similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/clock_big.gif rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/clock_big.gif diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/clock_small.gif b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/clock_small.gif similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/clock_small.gif rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/clock_small.gif diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/colapce-expand-icon.gif b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/colapce-expand-icon.gif similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/colapce-expand-icon.gif rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/colapce-expand-icon.gif diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/controlls5.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/controlls5.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/controlls5.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/controlls5.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/databg.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/databg.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/databg.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/databg.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/databg_now.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/databg_now.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/databg_now.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/databg_now.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/event-bg.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/event-bg.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/event-bg.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/event-bg.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/icon.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/icon.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/icon.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/icon.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/left-separator.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/left-separator.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/left-separator.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/left-separator.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/left-time-bg.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/left-time-bg.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/left-time-bg.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/left-time-bg.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/lightbox.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/lightbox.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/lightbox.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/lightbox.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/loading.gif b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/loading.gif similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/loading.gif rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/loading.gif diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/move.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/move.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/move.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/move.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/multi-days-bg.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/multi-days-bg.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/multi-days-bg.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/multi-days-bg.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/second-top-days-bg.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/second-top-days-bg.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/second-top-days-bg.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/second-top-days-bg.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/top-days-bg.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/top-days-bg.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/top-days-bg.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/top-days-bg.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/top-separator.gif b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/top-separator.gif similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/top-separator.gif rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/top-separator.gif diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/white_tab.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/white_tab.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/white_tab.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/white_tab.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/white_tab_wide.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/white_tab_wide.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/white_tab_wide.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/white_tab_wide.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_mobile/add.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_mobile/add.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_mobile/add.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_mobile/add.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_mobile/arrow_left.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_mobile/arrow_left.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_mobile/arrow_left.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_mobile/arrow_left.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_mobile/arrow_right.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_mobile/arrow_right.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_mobile/arrow_right.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_mobile/arrow_right.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_mobile/event.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_mobile/event.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_mobile/event.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_mobile/event.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_mobile/event_focus.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_mobile/event_focus.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_mobile/event_focus.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_mobile/event_focus.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_mobile/noevents.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_mobile/noevents.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_mobile/noevents.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_mobile/noevents.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/readme.txt b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/readme.txt similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/readme.txt rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/readme.txt diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/license.txt b/addons/web_calendar/static/lib/dhtmlxScheduler/license.txt similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/license.txt rename to addons/web_calendar/static/lib/dhtmlxScheduler/license.txt diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/readme.txt b/addons/web_calendar/static/lib/dhtmlxScheduler/readme.txt similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/readme.txt rename to addons/web_calendar/static/lib/dhtmlxScheduler/readme.txt diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/base.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/base.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/base.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/base.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/clear.css b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/clear.css similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/clear.css rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/clear.css diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/config.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/config.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/config.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/config.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/connector.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/connector.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/connector.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/connector.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/dataprocessor_hook.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/dataprocessor_hook.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/dataprocessor_hook.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/dataprocessor_hook.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/dayevents.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/dayevents.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/dayevents.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/dayevents.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/dhtmlxcommon.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/dhtmlxcommon.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/dhtmlxcommon.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/dhtmlxcommon.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/dhtmlxdataprocessor.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/dhtmlxdataprocessor.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/dhtmlxdataprocessor.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/dhtmlxdataprocessor.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/dhtmlxdataprocessor_debug.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/dhtmlxdataprocessor_debug.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/dhtmlxdataprocessor_debug.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/dhtmlxdataprocessor_debug.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/dhtmlxdataprocessor_jsonp.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/dhtmlxdataprocessor_jsonp.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/dhtmlxdataprocessor_jsonp.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/dhtmlxdataprocessor_jsonp.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/event.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/event.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/event.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/event.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext.css b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext.css similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext.css rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext.css diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_active_links.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_active_links.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_active_links.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_active_links.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_agenda_view.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_agenda_view.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_agenda_view.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_agenda_view.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_collision.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_collision.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_collision.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_collision.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_cookie.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_cookie.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_cookie.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_cookie.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_editors.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_editors.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_editors.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_editors.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_expand.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_expand.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_expand.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_expand.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_html_templates.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_html_templates.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_html_templates.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_html_templates.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_key_nav.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_key_nav.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_key_nav.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_key_nav.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_layer.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_layer.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_layer.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_layer.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_limit.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_limit.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_limit.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_limit.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_map_view.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_map_view.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_map_view.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_map_view.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_matrix.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_matrix.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_matrix.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_matrix.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_minical.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_minical.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_minical.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_minical.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_monthheight.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_monthheight.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_monthheight.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_monthheight.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_multiselect.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_multiselect.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_multiselect.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_multiselect.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_multisource.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_multisource.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_multisource.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_multisource.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_offline.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_offline.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_offline.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_offline.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_outerdrag.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_outerdrag.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_outerdrag.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_outerdrag.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_pdf.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_pdf.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_pdf.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_pdf.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_readonly.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_readonly.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_readonly.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_readonly.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_serialize.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_serialize.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_serialize.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_serialize.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_tooltip.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_tooltip.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_tooltip.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_tooltip.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_treetimeline.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_treetimeline.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_treetimeline.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_treetimeline.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_url.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_url.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_url.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_url.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_week_agenda.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_week_agenda.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_week_agenda.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_week_agenda.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_wp.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_wp.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_wp.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_wp.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_year_view.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_year_view.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_year_view.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_year_view.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/glossy.css b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/glossy.css similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/glossy.css rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/glossy.css diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ical.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ical.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ical.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ical.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/layout.css b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/layout.css similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/layout.css rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/layout.css diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/lightbox.css b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/lightbox.css similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/lightbox.css rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/lightbox.css diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/lightbox.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/lightbox.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/lightbox.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/lightbox.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/load.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/load.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/load.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/load.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_ar.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_ar.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_ar.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_ar.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_ca.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_ca.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_ca.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_ca.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_cn.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_cn.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_cn.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_cn.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_cs.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_cs.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_cs.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_cs.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_da.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_da.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_da.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_da.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_de.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_de.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_de.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_de.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_el.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_el.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_el.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_el.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_es.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_es.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_es.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_es.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_fi.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_fi.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_fi.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_fi.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_fr.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_fr.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_fr.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_fr.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_he.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_he.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_he.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_he.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_hu.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_hu.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_hu.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_hu.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_id.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_id.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_id.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_id.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_it.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_it.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_it.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_it.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_jp.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_jp.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_jp.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_jp.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_nb.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_nb.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_nb.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_nb.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_nl.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_nl.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_nl.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_nl.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_no.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_no.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_no.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_no.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_pl.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_pl.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_pl.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_pl.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_pt.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_pt.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_pt.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_pt.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_cn.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_cn.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_cn.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_cn.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_cs.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_cs.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_cs.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_cs.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_da.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_da.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_da.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_da.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_de.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_de.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_de.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_de.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_el.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_el.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_el.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_el.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_es.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_es.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_es.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_es.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_fi.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_fi.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_fi.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_fi.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_fr.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_fr.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_fr.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_fr.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_it.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_it.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_it.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_it.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_nb.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_nb.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_nb.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_nb.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_nl.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_nl.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_nl.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_nl.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_pl.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_pl.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_pl.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_pl.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_pt.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_pt.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_pt.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_pt.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_ru.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_ru.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_ru.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_ru.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_sv.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_sv.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_sv.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_sv.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_ua.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_ua.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_ua.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_ua.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_ru.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_ru.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_ru.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_ru.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_si.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_si.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_si.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_si.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_sv.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_sv.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_sv.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_sv.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_tr.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_tr.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_tr.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_tr.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_ua.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_ua.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_ua.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_ua.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/mobile.css b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/mobile.css similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/mobile.css rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/mobile.css diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/mobile.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/mobile.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/mobile.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/mobile.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/note.css b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/note.css similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/note.css rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/note.css diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/property.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/property.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/property.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/property.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/recurring.css b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/recurring.css similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/recurring.css rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/recurring.css diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/recurring.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/recurring.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/recurring.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/recurring.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/repeat_template.html b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/repeat_template.html similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/repeat_template.html rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/repeat_template.html diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_cn.html b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_cn.html similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_cn.html rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_cn.html diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_de.html b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_de.html similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_de.html rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_de.html diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_el.html b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_el.html similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_el.html rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_el.html diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_es.html b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_es.html similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_es.html rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_es.html diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_fr.html b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_fr.html similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_fr.html rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_fr.html diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_it.html b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_it.html similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_it.html rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_it.html diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_nl.html b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_nl.html similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_nl.html rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_nl.html diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_ru.html b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_ru.html similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_ru.html rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_ru.html diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/scheduler.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/scheduler.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/scheduler.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/scheduler.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/whatsnew.txt b/addons/web_calendar/static/lib/dhtmlxScheduler/whatsnew.txt similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/whatsnew.txt rename to addons/web_calendar/static/lib/dhtmlxScheduler/whatsnew.txt diff --git a/addons/base_calendar/static/src/js/calendar.js b/addons/web_calendar/static/src/js/calendar.js similarity index 88% rename from addons/base_calendar/static/src/js/calendar.js rename to addons/web_calendar/static/src/js/calendar.js index 808c1ba31ab..b9609da803d 100644 --- a/addons/base_calendar/static/src/js/calendar.js +++ b/addons/web_calendar/static/src/js/calendar.js @@ -1,11 +1,11 @@ /*--------------------------------------------------------- - * OpenERP base_calendar + * OpenERP web_calendar *---------------------------------------------------------*/ -openerp.base_calendar = function(openerp) { -QWeb.add_template('/base_calendar/static/src/xml/base_calendar.xml'); -openerp.base.views.add('calendar', 'openerp.base_calendar.CalendarView'); -openerp.base_calendar.CalendarView = openerp.base.View.extend({ +openerp.web_calendar = function(openerp) { +QWeb.add_template('/web_calendar/static/src/xml/web_calendar.xml'); +openerp.web.views.add('calendar', 'openerp.web_calendar.CalendarView'); +openerp.web_calendar.CalendarView = openerp.web.View.extend({ // Dhtmlx scheduler ? init: function(parent, element_id, dataset, view_id, options) { this._super(parent, element_id); @@ -19,7 +19,7 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({ this.creating_event_id = null; this.dataset_events = []; if (this.options.action_views_ids.form) { - this.form_dialog = new openerp.base_calendar.CalendarFormDialog(this, {}, this.options.action_views_ids.form, dataset); + this.form_dialog = new openerp.web_calendar.CalendarFormDialog(this, {}, this.options.action_views_ids.form, dataset); this.form_dialog.start(); } this.COLOR_PALETTE = ['#f57900', '#cc0000', '#d400a8', '#75507b', '#3465a4', '#73d216', '#c17d11', '#edd400', @@ -29,7 +29,7 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({ this.color_map = {}; }, start: function() { - this.rpc("/base_calendar/calendarview/load", {"model": this.model, "view_id": this.view_id, 'toolbar': true}, this.on_loaded); + this.rpc("/web_calendar/calendarview/load", {"model": this.model, "view_id": this.view_id, 'toolbar': true}, this.on_loaded); }, stop: function() { scheduler.clearAll(); @@ -75,10 +75,10 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({ this.$element.html(QWeb.render("CalendarView", {"fields_view": this.fields_view})); if (this.options.sidebar && this.options.sidebar_id) { - this.sidebar = new openerp.base.Sidebar(this, this.options.sidebar_id); + this.sidebar = new openerp.web.Sidebar(this, this.options.sidebar_id); this.sidebar.start(); - this.sidebar.navigator = new openerp.base_calendar.SidebarNavigator(this.sidebar, this.sidebar.add_section('navigator', "Navigator"), this); - this.sidebar.responsible = new openerp.base_calendar.SidebarResponsible(this.sidebar, this.sidebar.add_section('responsible', "Responsible"), this); + this.sidebar.navigator = new openerp.web_calendar.SidebarNavigator(this.sidebar, this.sidebar.add_section('navigator', "Navigator"), this); + this.sidebar.responsible = new openerp.web_calendar.SidebarResponsible(this.sidebar, this.sidebar.add_section('responsible', "Responsible"), this); this.sidebar.add_toolbar(data.fields_view.toolbar); this.set_common_sidebar_sections(this.sidebar); this.sidebar.do_unfold(); @@ -170,7 +170,7 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({ value: filter_value, label: (typeof filter === 'object') ? filter[1] : filter, color: this.get_color(filter_value) - } + }; if (!sidebar_items[filter_value]) { sidebar_items[filter_value] = filter_item; } @@ -180,10 +180,10 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({ } if (this.fields[this.date_start]['type'] == 'date') { - evt[this.date_start] = openerp.base.str_to_date(evt[this.date_start]).set({hour: 9}).toString('yyyy-MM-dd HH:mm:ss'); + evt[this.date_start] = openerp.web.str_to_date(evt[this.date_start]).set({hour: 9}).toString('yyyy-MM-dd HH:mm:ss'); } if (this.date_stop && evt[this.date_stop] && this.fields[this.date_stop]['type'] == 'date') { - evt[this.date_stop] = openerp.base.str_to_date(evt[this.date_stop]).set({hour: 17}).toString('yyyy-MM-dd HH:mm:ss'); + evt[this.date_stop] = openerp.web.str_to_date(evt[this.date_stop]).set({hour: 17}).toString('yyyy-MM-dd HH:mm:ss'); } res_events.push(this.convert_event(evt)); } @@ -195,8 +195,8 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({ } }, convert_event: function(evt) { - var date_start = openerp.base.str_to_datetime(evt[this.date_start]), - date_stop = this.date_stop ? openerp.base.str_to_datetime(evt[this.date_stop]) : null, + var date_start = openerp.web.str_to_datetime(evt[this.date_start]), + date_stop = this.date_stop ? openerp.web.str_to_datetime(evt[this.date_stop]) : null, date_delay = evt[this.date_delay] || null, res_text = '', res_description = []; @@ -224,7 +224,7 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({ 'text': res_text, 'id': evt.id, 'title': res_description.join() - } + }; if (evt.color) { r.color = evt.color; } @@ -280,9 +280,9 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({ var data = { name: event_obj.text }; - data[this.date_start] = openerp.base.datetime_to_str(event_obj.start_date); + data[this.date_start] = openerp.web.datetime_to_str(event_obj.start_date); if (this.date_stop) { - data[this.date_stop] = openerp.base.datetime_to_str(event_obj.end_date); + data[this.date_stop] = openerp.web.datetime_to_str(event_obj.end_date); } if (this.date_delay) { var diff_seconds = Math.round((event_obj.end_date.getTime() - event_obj.start_date.getTime()) / 1000); @@ -294,7 +294,7 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({ var self = this; scheduler.clearAll(); $.when(this.has_been_loaded).then(function() { - self.rpc('/base/session/eval_domain_and_context', { + self.rpc('/web/session/eval_domain_and_context', { domains: domains, contexts: contexts, group_by_seq: groupbys @@ -334,7 +334,7 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({ } }); -openerp.base_calendar.CalendarFormDialog = openerp.base.Dialog.extend({ +openerp.web_calendar.CalendarFormDialog = openerp.web.Dialog.extend({ init: function(view, options, view_id, dataset) { this._super(view, options); this.dataset = dataset; @@ -343,7 +343,7 @@ openerp.base_calendar.CalendarFormDialog = openerp.base.Dialog.extend({ }, start: function() { this._super(); - this.form = new openerp.base.FormView(this, this.element_id, this.dataset, this.view_id, { + this.form = new openerp.web.FormView(this, this.element_id, this.dataset, this.view_id, { sidebar: false, pager: false }); @@ -368,7 +368,7 @@ openerp.base_calendar.CalendarFormDialog = openerp.base.Dialog.extend({ } }); -openerp.base_calendar.SidebarResponsible = openerp.base.Widget.extend({ +openerp.web_calendar.SidebarResponsible = openerp.web.Widget.extend({ init: function(parent, element_id, view) { this._super(parent, element_id); this.view = view; @@ -394,7 +394,7 @@ openerp.base_calendar.SidebarResponsible = openerp.base.Widget.extend({ } }); -openerp.base_calendar.SidebarNavigator = openerp.base.Widget.extend({ +openerp.web_calendar.SidebarNavigator = openerp.web.Widget.extend({ init: function(parent, element_id, view) { this._super(parent, element_id); this.view = view; diff --git a/addons/base_calendar/static/src/xml/base_calendar.xml b/addons/web_calendar/static/src/xml/web_calendar.xml similarity index 100% rename from addons/base_calendar/static/src/xml/base_calendar.xml rename to addons/web_calendar/static/src/xml/web_calendar.xml diff --git a/addons/web_chat/__openerp__.py b/addons/web_chat/__openerp__.py index 6bd08f81e6a..c5e2fa7fc13 100644 --- a/addons/web_chat/__openerp__.py +++ b/addons/web_chat/__openerp__.py @@ -1,7 +1,7 @@ { "name": "Web Chat", "version": "2.0", - "depends": ['base'], + "depends": ['web'], "js": [ 'static/lib/AjaxIM/js/jquery.jsonp-1.1.0.js', 'static/lib/AjaxIM/js/jquery.jstore-all-min.js', diff --git a/addons/web_chat/controllers/main.py b/addons/web_chat/controllers/main.py index 5c427812d47..1e0710163f8 100644 --- a/addons/web_chat/controllers/main.py +++ b/addons/web_chat/controllers/main.py @@ -1,10 +1,8 @@ # -*- coding: utf-8 -*- -import sys, time -import cherrypy +import time import simplejson -import random -import base.common as openerpweb +import web.common as openerpweb #---------------------------------------------------------- # OpenERP Web ajaxim Controllers @@ -38,7 +36,7 @@ class PollServerMessageQueue(object): if msg['to'] == recipient: return self.messages - def gc(): + def gc(self): # remove message older than 300s from self.l # remove dead users from self.users pass @@ -72,7 +70,6 @@ class PollServer(openerpweb.Controller): #r = 'logged in' #u = generate random.randint(0,2**32) - #s = cherrypy cookie id #f = mq.userlist() # username = 'Guest'+ str(random.randint(0, 2**32)) @@ -132,8 +129,6 @@ class PollServer(openerpweb.Controller): msg = '[]' - cherrypy.response.headers['content-type'] = 'application/javascript'; - for i in range(5): received_msg = mq.read('Guest1', i) if received_msg: diff --git a/addons/web_chat/po/web_chat.pot b/addons/web_chat/po/web_chat.pot index b1700659a8f..d7f6df2d73d 100644 --- a/addons/web_chat/po/web_chat.pot +++ b/addons/web_chat/po/web_chat.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2011-08-17 13:28+0200\n" +"POT-Creation-Date: 2011-09-06 12:03+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/addons/base_dashboard/__init__.py b/addons/web_dashboard/__init__.py similarity index 100% rename from addons/base_dashboard/__init__.py rename to addons/web_dashboard/__init__.py diff --git a/addons/base_dashboard/__openerp__.py b/addons/web_dashboard/__openerp__.py similarity index 72% rename from addons/base_dashboard/__openerp__.py rename to addons/web_dashboard/__openerp__.py index e6248c2c515..e4bad9c1eaf 100644 --- a/addons/base_dashboard/__openerp__.py +++ b/addons/web_dashboard/__openerp__.py @@ -1,7 +1,7 @@ { - "name": "Base Dashboard", + "name": "web Dashboard", "version": "2.0", - "depends": ['base'], + "depends": ['web'], "js": [ 'static/src/js/dashboard.js' ], diff --git a/addons/base_dashboard/controllers.py b/addons/web_dashboard/controllers.py similarity index 91% rename from addons/base_dashboard/controllers.py rename to addons/web_dashboard/controllers.py index 2ebfefab1e8..80235492c0f 100644 --- a/addons/base_dashboard/controllers.py +++ b/addons/web_dashboard/controllers.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -import base.common as openerpweb +import web.common as openerpweb WIDGET_CONTENT_PATTERN = """ @@ -19,7 +19,7 @@ WIDGET_CONTENT_PATTERN = """ """ class Widgets(openerpweb.Controller): - _cp_path = '/base_dashboard/widgets' + _cp_path = '/web_dashboard/widgets' @openerpweb.httprequest def content(self, request, widget_id): diff --git a/addons/base_dashboard/po/base_dashboard.pot b/addons/web_dashboard/po/base_dashboard.pot similarity index 100% rename from addons/base_dashboard/po/base_dashboard.pot rename to addons/web_dashboard/po/base_dashboard.pot diff --git a/addons/web_dashboard/po/web_dashboard.pot b/addons/web_dashboard/po/web_dashboard.pot new file mode 100644 index 00000000000..3ebe95737bc --- /dev/null +++ b/addons/web_dashboard/po/web_dashboard.pot @@ -0,0 +1,47 @@ +# Translations template for PROJECT. +# Copyright (C) 2011 ORGANIZATION +# This file is distributed under the same license as the PROJECT project. +# FIRST AUTHOR , 2011. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PROJECT VERSION\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2011-09-06 12:02+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 0.9.6\n" + +#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0 +msgid "Reset" +msgstr "" + +#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0 +msgid "Undo" +msgstr "" + +#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0 +msgid "Add Widget" +msgstr "" + +#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0 +msgid "Change layout" +msgstr "" + +#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0 +msgid "Choose dashboard layout" +msgstr "" + +#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0 +msgid "progress:" +msgstr "" + +#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0 +msgid "%" +msgstr "" + diff --git a/addons/base_dashboard/static/src/css/dashboard.css b/addons/web_dashboard/static/src/css/dashboard.css similarity index 100% rename from addons/base_dashboard/static/src/css/dashboard.css rename to addons/web_dashboard/static/src/css/dashboard.css diff --git a/addons/base_dashboard/static/src/img/layout_1-1-1.png b/addons/web_dashboard/static/src/img/layout_1-1-1.png similarity index 100% rename from addons/base_dashboard/static/src/img/layout_1-1-1.png rename to addons/web_dashboard/static/src/img/layout_1-1-1.png diff --git a/addons/base_dashboard/static/src/img/layout_1-1.png b/addons/web_dashboard/static/src/img/layout_1-1.png similarity index 100% rename from addons/base_dashboard/static/src/img/layout_1-1.png rename to addons/web_dashboard/static/src/img/layout_1-1.png diff --git a/addons/base_dashboard/static/src/img/layout_1-2.png b/addons/web_dashboard/static/src/img/layout_1-2.png similarity index 100% rename from addons/base_dashboard/static/src/img/layout_1-2.png rename to addons/web_dashboard/static/src/img/layout_1-2.png diff --git a/addons/base_dashboard/static/src/img/layout_1.png b/addons/web_dashboard/static/src/img/layout_1.png similarity index 100% rename from addons/base_dashboard/static/src/img/layout_1.png rename to addons/web_dashboard/static/src/img/layout_1.png diff --git a/addons/base_dashboard/static/src/img/layout_2-1.png b/addons/web_dashboard/static/src/img/layout_2-1.png similarity index 100% rename from addons/base_dashboard/static/src/img/layout_2-1.png rename to addons/web_dashboard/static/src/img/layout_2-1.png diff --git a/addons/base_dashboard/static/src/js/dashboard.js b/addons/web_dashboard/static/src/js/dashboard.js similarity index 88% rename from addons/base_dashboard/static/src/js/dashboard.js rename to addons/web_dashboard/static/src/js/dashboard.js index f83d841d19a..855cd785a3e 100644 --- a/addons/base_dashboard/static/src/js/dashboard.js +++ b/addons/web_dashboard/static/src/js/dashboard.js @@ -1,8 +1,8 @@ -openerp.base_dashboard = function(openerp) { +openerp.web_dashboard = function(openerp) { -QWeb.add_template('/base_dashboard/static/src/xml/base_dashboard.xml'); +QWeb.add_template('/web_dashboard/static/src/xml/web_dashboard.xml'); -openerp.base.form.DashBoard = openerp.base.form.Widget.extend({ +openerp.web.form.DashBoard = openerp.web.form.Widget.extend({ init: function(view, node) { this._super(view, node); this.template = 'DashBoard'; @@ -36,7 +36,7 @@ openerp.base.form.DashBoard = openerp.base.form.Widget.extend({ delete(action.attrs.height); delete(action.attrs.colspan); self.actions_attrs[action.attrs.name] = action.attrs; - self.rpc('/base/action/load', { + self.rpc('/web/action/load', { action_id: parseInt(action.attrs.name, 10) }, self.on_load_action); }); @@ -48,20 +48,20 @@ openerp.base.form.DashBoard = openerp.base.form.Widget.extend({ }); }, on_undo: function() { - this.rpc('/base/view/undo_custom', { + this.rpc('/web/view/undo_custom', { view_id: this.view.fields_view.view_id }, this.do_reload); }, on_reset: function() { - this.rpc('/base/view/undo_custom', { + this.rpc('/web/view/undo_custom', { view_id: this.view.fields_view.view_id, reset: true }, this.do_reload); }, on_add_widget: function() { var self = this; - var action_manager = new openerp.base.ActionManager(this); - var dialog = new openerp.base.Dialog(this, { + var action_manager = new openerp.web.ActionManager(this); + var dialog = new openerp.web.Dialog(this, { title : 'Actions', width: 800, height: 600, @@ -97,16 +97,16 @@ openerp.base.form.DashBoard = openerp.base.form.Widget.extend({ qdict = { view : this.view }; // TODO: should load multiple actions at once _.each(actions, function(aid) { - self.rpc('/base/action/load', { + self.rpc('/web/action/load', { action_id: aid }, function(result) { self.actions_attrs[aid] = { name: aid, string: _.trim(result.result.name) - } + }; qdict.action = { attrs : self.actions_attrs[aid] - } + }; self.$element.find('.oe-dashboard-column:first').prepend(QWeb.render('DashBoard.action', qdict)); self.do_save_dashboard(); self.on_load_action(result) @@ -209,7 +209,7 @@ openerp.base.form.DashBoard = openerp.base.form.Widget.extend({ board.columns.push(actions); }); var arch = QWeb.render('DashBoard.xml', board); - this.rpc('/base/view/add_custom', { + this.rpc('/web/view/add_custom', { view_id: this.view.fields_view.view_id, arch: arch }, function() { @@ -225,7 +225,7 @@ openerp.base.form.DashBoard = openerp.base.form.Widget.extend({ action_buttons : false, pager: false }; - var am = new openerp.base.ActionManager(this); + var am = new openerp.web.ActionManager(this); this.action_managers.push(am); am.appendTo($("#"+this.view.element_id + '_action_' + action.id)); am.do_action(action); @@ -250,10 +250,10 @@ openerp.base.form.DashBoard = openerp.base.form.Widget.extend({ this.view.start(); } }); -openerp.base.form.DashBoardLegacy = openerp.base.form.DashBoard.extend({ +openerp.web.form.DashBoardLegacy = openerp.web.form.DashBoard.extend({ render: function() { if (this.node.tag == 'hpaned') { - this.node.attrs.style = '1-1'; + this.node.attrs.style = '2-1'; } else if (this.node.tag == 'vpaned') { this.node.attrs.style = '1'; } @@ -274,21 +274,21 @@ openerp.base.form.DashBoardLegacy = openerp.base.form.DashBoard.extend({ } }); -openerp.base.form.widgets.add('hpaned', 'openerp.base.form.DashBoardLegacy'); -openerp.base.form.widgets.add('vpaned', 'openerp.base.form.DashBoardLegacy'); -openerp.base.form.widgets.add('board', 'openerp.base.form.DashBoard'); +openerp.web.form.widgets.add('hpaned', 'openerp.web.form.DashBoardLegacy'); +openerp.web.form.widgets.add('vpaned', 'openerp.web.form.DashBoardLegacy'); +openerp.web.form.widgets.add('board', 'openerp.web.form.DashBoard'); -openerp.base.client_actions.add( - 'board.config.overview', 'openerp.base_dashboard.ConfigOverview' +openerp.web.client_actions.add( + 'board.config.overview', 'openerp.web_dashboard.ConfigOverview' ); -if (!openerp.base_dashboard) { - openerp.base_dashboard = {}; +if (!openerp.web_dashboard) { + openerp.web_dashboard = {}; } -openerp.base_dashboard.ConfigOverview = openerp.base.View.extend({ +openerp.web_dashboard.ConfigOverview = openerp.web.View.extend({ template: 'ConfigOverview', init: function (parent, element_id) { this._super(parent, element_id); - this.dataset = new openerp.base.DataSetSearch( + this.dataset = new openerp.web.DataSetSearch( this, 'ir.actions.todo'); this.dataset.domain = [['type', '=', 'manual']]; }, @@ -332,7 +332,7 @@ openerp.base_dashboard.ConfigOverview = openerp.base.View.extend({ }); }) .delegate('li:not(.oe-done)', 'click', function () { - self.execute_action({ + self.widget_parent.widget_parent.widget_parent.execute_action({ type: 'object', name: 'action_launch' }, self.dataset, @@ -345,13 +345,13 @@ openerp.base_dashboard.ConfigOverview = openerp.base.View.extend({ } }); -openerp.base.client_actions.add( - 'board.home.applications', 'openerp.base_dashboard.ApplicationTiles'); -openerp.base_dashboard.ApplicationTiles = openerp.base.View.extend({ +openerp.web.client_actions.add( + 'board.home.applications', 'openerp.web_dashboard.ApplicationTiles'); +openerp.web_dashboard.ApplicationTiles = openerp.web.View.extend({ template: 'ApplicationTiles', start: function () { var self = this; - return new openerp.base.DataSetSearch( + return new openerp.web.DataSetSearch( this, 'ir.ui.menu', null, [['parent_id', '=', false]]) .read_slice( ['name', 'web_icon_data', 'web_icon_hover_data'], {}, function (applications) { // Create a matrix of 3*x applications @@ -371,16 +371,16 @@ openerp.base_dashboard.ApplicationTiles = openerp.base.View.extend({ }); } }); -openerp.base.client_actions.add( - 'board.home.widgets', 'openerp.base_dashboard.Widget'); -openerp.base_dashboard.Widget = openerp.base.View.extend(/** @lends openerp.base_dashboard.Widgets# */{ +openerp.web.client_actions.add( + 'board.home.widgets', 'openerp.web_dashboard.Widget'); +openerp.web_dashboard.Widget = openerp.web.View.extend(/** @lends openerp.web_dashboard.Widgets# */{ template: 'HomeWidget', /** * Initializes a "HomeWidget" client widget: handles the display of a given * res.widget objects in an OpenERP view (mainly a dashboard). * * @constructs - * @extends openerp.base.View + * @extends openerp.web.View * @param {Object} parent * @param {Object} options * @param {Number} options.widget_id @@ -390,13 +390,13 @@ openerp.base_dashboard.Widget = openerp.base.View.extend(/** @lends openerp.base this.widget_id = options.widget_id; }, start: function () { - return new openerp.base.DataSet(this, 'res.widget').read_ids( + return new openerp.web.DataSet(this, 'res.widget').read_ids( [this.widget_id], ['title'], this.on_widget_loaded); }, on_widget_loaded: function (widgets) { var widget = widgets[0]; var url = _.sprintf( - '/base_dashboard/widgets/content?session_id=%s&widget_id=%d', + '/web_dashboard/widgets/content?session_id=%s&widget_id=%d', this.session.session_id, widget.id); this.$element.html(QWeb.render('HomeWidget.content', { widget: widget, diff --git a/addons/base_dashboard/static/src/xml/base_dashboard.xml b/addons/web_dashboard/static/src/xml/web_dashboard.xml similarity index 88% rename from addons/base_dashboard/static/src/xml/base_dashboard.xml rename to addons/web_dashboard/static/src/xml/web_dashboard.xml index b60e466964b..e03e21b6487 100644 --- a/addons/base_dashboard/static/src/xml/base_dashboard.xml +++ b/addons/web_dashboard/static/src/xml/web_dashboard.xml @@ -2,19 +2,19 @@ @@ -32,7 +32,7 @@

      - + @@ -48,9 +48,9 @@

      • - + + src="/web/static/src/img/icons/gtk-apply.png" width="16" height="16" class="oe-selected-layout"/>

      diff --git a/addons/base/controllers/__init__.py b/addons/web_default_home/__init__.py similarity index 100% rename from addons/base/controllers/__init__.py rename to addons/web_default_home/__init__.py diff --git a/addons/base_default_home/__openerp__.py b/addons/web_default_home/__openerp__.py similarity index 86% rename from addons/base_default_home/__openerp__.py rename to addons/web_default_home/__openerp__.py index 097ff0e19c0..2093e6236f0 100644 --- a/addons/base_default_home/__openerp__.py +++ b/addons/web_default_home/__openerp__.py @@ -1,7 +1,7 @@ { "name" : "OpenERP Web installer home", "version" : "2.0", - "depends" : ['base'], + "depends" : ['web'], 'active': True, 'js': ['static/src/js/home.js'], 'css': ['static/src/css/home.css'] diff --git a/addons/base_default_home/po/base_default_home.pot b/addons/web_default_home/po/base_default_home.pot similarity index 100% rename from addons/base_default_home/po/base_default_home.pot rename to addons/web_default_home/po/base_default_home.pot diff --git a/addons/web_default_home/po/web_default_home.pot b/addons/web_default_home/po/web_default_home.pot new file mode 100644 index 00000000000..2b533ee15e6 --- /dev/null +++ b/addons/web_default_home/po/web_default_home.pot @@ -0,0 +1,39 @@ +# Translations template for PROJECT. +# Copyright (C) 2011 ORGANIZATION +# This file is distributed under the same license as the PROJECT project. +# FIRST AUTHOR , 2011. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PROJECT VERSION\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2011-09-06 12:02+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 0.9.6\n" + +#: addons/web_default_home/static/src/xml/web_default_home.xml:0 +msgid "Welcome to your new OpenERP instance." +msgstr "" + +#: addons/web_default_home/static/src/xml/web_default_home.xml:0 +msgid "Remember to bookmark this page." +msgstr "" + +#: addons/web_default_home/static/src/xml/web_default_home.xml:0 +msgid "Remember your login:" +msgstr "" + +#: addons/web_default_home/static/src/xml/web_default_home.xml:0 +msgid "Choose the first OpenERP Application you want to install.." +msgstr "" + +#: addons/web_default_home/static/src/xml/web_default_home.xml:0 +msgid "Install" +msgstr "" + diff --git a/addons/base_default_home/static/src/css/home.css b/addons/web_default_home/static/src/css/home.css similarity index 100% rename from addons/base_default_home/static/src/css/home.css rename to addons/web_default_home/static/src/css/home.css diff --git a/addons/base_default_home/static/src/img/account_voucher.png b/addons/web_default_home/static/src/img/account_voucher.png similarity index 100% rename from addons/base_default_home/static/src/img/account_voucher.png rename to addons/web_default_home/static/src/img/account_voucher.png diff --git a/addons/base_default_home/static/src/img/crm.png b/addons/web_default_home/static/src/img/crm.png similarity index 100% rename from addons/base_default_home/static/src/img/crm.png rename to addons/web_default_home/static/src/img/crm.png diff --git a/addons/base_default_home/static/src/img/hr.png b/addons/web_default_home/static/src/img/hr.png similarity index 100% rename from addons/base_default_home/static/src/img/hr.png rename to addons/web_default_home/static/src/img/hr.png diff --git a/addons/base_default_home/static/src/img/knowledge.png b/addons/web_default_home/static/src/img/knowledge.png similarity index 100% rename from addons/base_default_home/static/src/img/knowledge.png rename to addons/web_default_home/static/src/img/knowledge.png diff --git a/addons/base_default_home/static/src/img/marketing.png b/addons/web_default_home/static/src/img/marketing.png similarity index 100% rename from addons/base_default_home/static/src/img/marketing.png rename to addons/web_default_home/static/src/img/marketing.png diff --git a/addons/base_default_home/static/src/img/mrp.png b/addons/web_default_home/static/src/img/mrp.png similarity index 100% rename from addons/base_default_home/static/src/img/mrp.png rename to addons/web_default_home/static/src/img/mrp.png diff --git a/addons/base_default_home/static/src/img/point_of_sale.png b/addons/web_default_home/static/src/img/point_of_sale.png similarity index 100% rename from addons/base_default_home/static/src/img/point_of_sale.png rename to addons/web_default_home/static/src/img/point_of_sale.png diff --git a/addons/base_default_home/static/src/img/profile_tools.png b/addons/web_default_home/static/src/img/profile_tools.png similarity index 100% rename from addons/base_default_home/static/src/img/profile_tools.png rename to addons/web_default_home/static/src/img/profile_tools.png diff --git a/addons/base_default_home/static/src/img/project.png b/addons/web_default_home/static/src/img/project.png similarity index 100% rename from addons/base_default_home/static/src/img/project.png rename to addons/web_default_home/static/src/img/project.png diff --git a/addons/base_default_home/static/src/img/purchase.png b/addons/web_default_home/static/src/img/purchase.png similarity index 100% rename from addons/base_default_home/static/src/img/purchase.png rename to addons/web_default_home/static/src/img/purchase.png diff --git a/addons/base_default_home/static/src/img/sale.png b/addons/web_default_home/static/src/img/sale.png similarity index 100% rename from addons/base_default_home/static/src/img/sale.png rename to addons/web_default_home/static/src/img/sale.png diff --git a/addons/base_default_home/static/src/img/stock.png b/addons/web_default_home/static/src/img/stock.png similarity index 100% rename from addons/base_default_home/static/src/img/stock.png rename to addons/web_default_home/static/src/img/stock.png diff --git a/addons/base_default_home/static/src/js/home.js b/addons/web_default_home/static/src/js/home.js similarity index 86% rename from addons/base_default_home/static/src/js/home.js rename to addons/web_default_home/static/src/js/home.js index 57b5fab71f3..0d7386f14d6 100644 --- a/addons/base_default_home/static/src/js/home.js +++ b/addons/web_default_home/static/src/js/home.js @@ -1,7 +1,7 @@ -openerp.base_default_home = function (openerp) { - QWeb.add_template('/base_default_home/static/src/xml/base_default_home.xml'); +openerp.web_default_home = function (openerp) { + QWeb.add_template('/web_default_home/static/src/xml/web_default_home.xml'); - openerp.base_default_home = { + openerp.web_default_home = { applications: [ [ { @@ -49,7 +49,7 @@ openerp.base_default_home = function (openerp) { ] }; - openerp.base.WebClient.include({ + openerp.web.WebClient.include({ default_home: function () { var self = this, // resig class can't handle _super in async contexts, by the @@ -57,7 +57,7 @@ openerp.base_default_home = function (openerp) { // reset to a baseline value of this.prototype (or something // like that) old_home = this._super; - var Installer = new openerp.base.DataSet( + var Installer = new openerp.web.DataSet( this, 'base.setup.installer'); Installer.call('already_installed', [], function (installed_modules) { if (!_(installed_modules).isEmpty()) { @@ -74,9 +74,9 @@ openerp.base_default_home = function (openerp) { } }); - openerp.base.client_actions.add( - 'home.default', 'openerp.base_default_home.DefaultHome'); - openerp.base_default_home.DefaultHome = openerp.base.View.extend({ + openerp.web.client_actions.add( + 'home.default', 'openerp.web_default_home.DefaultHome'); + openerp.web_default_home.DefaultHome = openerp.web.View.extend({ template: 'StaticHome', start: function () { var r = this._super(), self = this; @@ -89,15 +89,15 @@ openerp.base_default_home = function (openerp) { return this._super({ url: window.location.protocol + '//' + window.location.host + window.location.pathname, session: this.session, - rows: openerp.base_default_home.applications + rows: openerp.web_default_home.applications }) }, install_module: function (module_name) { - var Modules = new openerp.base.DataSetSearch( + var Modules = new openerp.web.DataSetSearch( this, 'ir.module.module', null, [['name', '=', module_name], ['state', '=', 'uninstalled']]); - var Upgrade = new openerp.base.DataSet(this, 'base.module.upgrade'); + var Upgrade = new openerp.web.DataSet(this, 'base.module.upgrade'); - $.blockUI({message:''}); + $.blockUI({message:''}); Modules.read_slice(['id'], {}, function (records) { if (!(records.length === 1)) { return; } Modules.call('state_update', diff --git a/addons/base_default_home/static/src/xml/base_default_home.xml b/addons/web_default_home/static/src/xml/web_default_home.xml similarity index 92% rename from addons/base_default_home/static/src/xml/base_default_home.xml rename to addons/web_default_home/static/src/xml/web_default_home.xml index 9ed7415afb6..5ee11387db9 100644 --- a/addons/base_default_home/static/src/xml/base_default_home.xml +++ b/addons/web_default_home/static/src/xml/web_default_home.xml @@ -14,7 +14,7 @@ diff --git a/addons/base_diagram/__init__.py b/addons/web_diagram/__init__.py similarity index 100% rename from addons/base_diagram/__init__.py rename to addons/web_diagram/__init__.py diff --git a/addons/web_diagram/__openerp__.py b/addons/web_diagram/__openerp__.py new file mode 100644 index 00000000000..c1851af362b --- /dev/null +++ b/addons/web_diagram/__openerp__.py @@ -0,0 +1,16 @@ +{ + "name" : "OpenERP Web Diagram", + "version" : "2.0", + "depends" : ["base"], + "js": [ + 'static/lib/js/raphael-min.js', + 'static/lib/js/dracula_graffle.js', + 'static/lib/js/dracula_graph.js', + 'static/lib/js/dracula_algorithms.js', + 'static/src/js/diagram.js' + ], + 'css' : [ + "static/src/css/base_diagram.css", + ], + 'active': True, +} diff --git a/addons/base_diagram/controllers/__init__.py b/addons/web_diagram/controllers/__init__.py similarity index 100% rename from addons/base_diagram/controllers/__init__.py rename to addons/web_diagram/controllers/__init__.py diff --git a/addons/base_diagram/controllers/main.py b/addons/web_diagram/controllers/main.py similarity index 82% rename from addons/base_diagram/controllers/main.py rename to addons/web_diagram/controllers/main.py index 8e258810eca..c443b048ea6 100644 --- a/addons/base_diagram/controllers/main.py +++ b/addons/web_diagram/controllers/main.py @@ -1,62 +1,52 @@ -import base.common as openerpweb -from base.controllers.main import View +import web.common as openerpweb +from web.controllers.main import View class DiagramView(View): - _cp_path = "/base_diagram/diagram" + _cp_path = "/web_diagram/diagram" @openerpweb.jsonrequest def load(self, req, model, view_id): - print req - print dir(req) fields_view = self.fields_view_get(req, model, view_id, 'diagram') return {'fields_view': fields_view} - + @openerpweb.jsonrequest - def get_diagram_info(self, req, **kw): - id = kw['id'] - model = kw['model'] - node = kw['node'] - connector = kw['connector'] - src_node = kw['src_node'] - des_node = kw['des_node'] - + def get_diagram_info(self, req, id, model, node, connector, src_node, des_node, **kw): + visible_node_fields = kw.get('visible_node_fields',[]) invisible_node_fields = kw.get('invisible_node_fields',[]) node_fields_string = kw.get('node_fields_string',[]) connector_fields = kw.get('connector_fields',[]) connector_fields_string = kw.get('connector_fields_string',[]) - + bgcolors = {} shapes = {} bgcolor = kw.get('bgcolor','') shape = kw.get('shape','') - + if bgcolor: for color_spec in bgcolor.split(';'): if color_spec: colour, color_state = color_spec.split(':') bgcolors[colour] = color_state - + if shape: for shape_spec in shape.split(';'): if shape_spec: shape_colour, shape_color_state = shape_spec.split(':') shapes[shape_colour] = shape_color_state - + ir_view = req.session.model('ir.ui.view') - graphs = ir_view.graph_get(id, model, node, connector, src_node, des_node, False, + graphs = ir_view.graph_get(int(id), model, node, connector, src_node, des_node, False, (140, 180), req.session.context) - nodes = graphs['nodes'] transitions = graphs['transitions'] isolate_nodes = {} - - for node in graphs['blank_nodes']: - isolate_nodes[node['id']] = node + for blnk_node in graphs['blank_nodes']: + isolate_nodes[blnk_node['id']] = blnk_node else: y = map(lambda t: t['y'],filter(lambda x: x['y'] if x['x']==20 else None, nodes.values())) y_max = (y and max(y)) or 120 - + connectors = {} list_tr = [] @@ -69,29 +59,29 @@ class DiagramView(View): }) connector_tr = req.session.model(connector) connector_ids = connector_tr.search([('id', 'in', list_tr)], 0, 0, 0, req.session.context) - + data_connectors =connector_tr.read(connector_ids, connector_fields, req.session.context) - - + + for tr in data_connectors: t = connectors.get(str(tr['id'])) t.update({ 'source': tr[src_node][1], 'destination': tr[des_node][1], - 'options': {} + 'options': {}, + 'signal': tr['signal'] }) for i, fld in enumerate(connector_fields): t['options'][connector_fields_string[i]] = tr[fld] - + fields = req.session.model('ir.model.fields') field_ids = fields.search([('model', '=', model), ('relation', '=', node)], 0, 0, 0, req.session.context) field_data = fields.read(field_ids, ['relation_field'], req.session.context) - node_act = req.session.model(node) search_acts = node_act.search([(field_data[0]['relation_field'], '=', id)], 0, 0, 0, req.session.context) data_acts = node_act.read(search_acts, invisible_node_fields + visible_node_fields, req.session.context) - + for act in data_acts: n = nodes.get(str(act['id'])) if not n: @@ -116,7 +106,7 @@ class DiagramView(View): for i, fld in enumerate(visible_node_fields): n['options'][node_fields_string[i]] = act[fld] - + #to relate m2o field of transition to corresponding o2m in activity in_transition_field_id = fields.search([('relation', '=', connector), ('relation_field', '=', des_node), ('model', '=', node)], 0, 0, 0, req.session.context) in_transition_field = fields.read(in_transition_field_id[0], ['name'], req.session.context)['name'] @@ -124,4 +114,5 @@ class DiagramView(View): out_transition_field_id = fields.search([('relation', '=', connector), ('relation_field', '=', src_node), ('model', '=', node)], 0, 0, 0, req.session.context) out_transition_field = fields.read(out_transition_field_id[0], ['name'], req.session.context)['name'] - return dict(nodes=nodes, conn=connectors, in_transition_field=in_transition_field, out_transition_field=out_transition_field) + id_model = req.session.model(model).read([id],['name'], req.session.context)[0]['name'] + return dict(nodes=nodes, conn=connectors, id_model = id_model) diff --git a/addons/base_diagram/po/base_diagram.pot b/addons/web_diagram/po/base_diagram.pot similarity index 100% rename from addons/base_diagram/po/base_diagram.pot rename to addons/web_diagram/po/base_diagram.pot diff --git a/addons/web_diagram/po/web_diagram.pot b/addons/web_diagram/po/web_diagram.pot new file mode 100644 index 00000000000..3fb8462aff3 --- /dev/null +++ b/addons/web_diagram/po/web_diagram.pot @@ -0,0 +1,55 @@ +# Translations template for PROJECT. +# Copyright (C) 2011 ORGANIZATION +# This file is distributed under the same license as the PROJECT project. +# FIRST AUTHOR , 2011. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PROJECT VERSION\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2011-09-06 12:02+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 0.9.6\n" + +#: addons/web_diagram/static/src/xml/base_diagram.xml:0 +msgid "New Node" +msgstr "" + +#: addons/web_diagram/static/src/xml/base_diagram.xml:0 +msgid "New Edge" +msgstr "" + +#: addons/web_diagram/static/src/xml/base_diagram.xml:0 +msgid "Show Grid:" +msgstr "" + +#: addons/web_diagram/static/src/xml/base_diagram.xml:0 +msgid "First" +msgstr "" + +#: addons/web_diagram/static/src/xml/base_diagram.xml:0 +msgid "<<" +msgstr "" + +#: addons/web_diagram/static/src/xml/base_diagram.xml:0 +msgid "0" +msgstr "" + +#: addons/web_diagram/static/src/xml/base_diagram.xml:0 +msgid "/" +msgstr "" + +#: addons/web_diagram/static/src/xml/base_diagram.xml:0 +msgid ">>" +msgstr "" + +#: addons/web_diagram/static/src/xml/base_diagram.xml:0 +msgid "Last" +msgstr "" + diff --git a/addons/base_diagram/static/lib/js/Curry-1.0.1.js b/addons/web_diagram/static/lib/js/Curry-1.0.1.js similarity index 100% rename from addons/base_diagram/static/lib/js/Curry-1.0.1.js rename to addons/web_diagram/static/lib/js/Curry-1.0.1.js diff --git a/addons/base_diagram/static/lib/js/dracula_algorithms.js b/addons/web_diagram/static/lib/js/dracula_algorithms.js similarity index 100% rename from addons/base_diagram/static/lib/js/dracula_algorithms.js rename to addons/web_diagram/static/lib/js/dracula_algorithms.js diff --git a/addons/base_diagram/static/lib/js/dracula_graffle.js b/addons/web_diagram/static/lib/js/dracula_graffle.js similarity index 100% rename from addons/base_diagram/static/lib/js/dracula_graffle.js rename to addons/web_diagram/static/lib/js/dracula_graffle.js diff --git a/addons/base_diagram/static/lib/js/dracula_graph.coffee b/addons/web_diagram/static/lib/js/dracula_graph.coffee similarity index 100% rename from addons/base_diagram/static/lib/js/dracula_graph.coffee rename to addons/web_diagram/static/lib/js/dracula_graph.coffee diff --git a/addons/base_diagram/static/lib/js/dracula_graph.js b/addons/web_diagram/static/lib/js/dracula_graph.js similarity index 96% rename from addons/base_diagram/static/lib/js/dracula_graph.js rename to addons/web_diagram/static/lib/js/dracula_graph.js index f7069c5d2e5..df9945882a7 100644 --- a/addons/base_diagram/static/lib/js/dracula_graph.js +++ b/addons/web_diagram/static/lib/js/dracula_graph.js @@ -58,7 +58,7 @@ var Graph = function() { this.edgeFactory = new EdgeFactory(); }; Graph.prototype = { - /* + /* * add a node * @id the node's ID (string or number) * @content (optional, dictionary) can contain any information that is @@ -83,7 +83,7 @@ Graph.prototype = { // NOTE: Even directed edges are added to both nodes. t.edges.push(edge); }, - + /* TODO to be implemented * Preserve a copy of the graph state (nodes, positions, ...) * @comment a comment describing the state @@ -154,19 +154,21 @@ Graph.Renderer.Raphael = function(element, graph, width, height) { return; } } - + /* * Dragging */ this.isDrag = false; this.dragger = function (e) { - this.dx = e.clientX; - this.dy = e.clientY; - selfRef.isDrag = this; - this.set && this.set.animate({"fill-opacity": .1}, 200) && this.set.toFront(); - e.preventDefault && e.preventDefault(); + if(e.detail < 2) { + this.dx = e.clientX; + this.dy = e.clientY; + selfRef.isDrag = this; + this.set && this.set.animate({"fill-opacity": .1}, 200) && this.set.toFront(); + e.preventDefault && e.preventDefault(); + } }; - + var d = document.getElementById(element); d.onmousemove = function (e) { e = e || window.event; @@ -234,7 +236,7 @@ Graph.Renderer.Raphael.prototype = { var shape; - /* if a node renderer function is provided by the user, then use it + /* if a node renderer function is provided by the user, then use it or the default render function instead */ if(!node.render) { node.render = function(r, node) { @@ -305,7 +307,7 @@ Graph.Layout.Spring.prototype = { } this.layoutCalcBounds(); }, - + layoutPrepare: function() { for (i in this.graph.nodes) { var node = this.graph.nodes[i]; @@ -314,16 +316,16 @@ Graph.Layout.Spring.prototype = { node.layoutForceX = 0; node.layoutForceY = 0; } - + }, - + layoutCalcBounds: function() { var minx = Infinity, maxx = -Infinity, miny = Infinity, maxy = -Infinity; for (i in this.graph.nodes) { var x = this.graph.nodes[i].layoutPosX; var y = this.graph.nodes[i].layoutPosY; - + if(x > maxx) maxx = x; if(x < minx) minx = x; if(y > maxy) maxy = y; @@ -335,7 +337,7 @@ Graph.Layout.Spring.prototype = { this.graph.layoutMinY = miny; this.graph.layoutMaxY = maxy; }, - + layoutIteration: function() { // Forces on nodes due to node-node repulsions @@ -345,17 +347,17 @@ Graph.Layout.Spring.prototype = { for (var d in prev) { var node2 = this.graph.nodes[prev[d]]; this.layoutRepulsive(node1, node2); - + } prev.push(c); } - + // Forces on nodes due to edge attractions for (var i = 0; i < this.graph.edges.length; i++) { var edge = this.graph.edges[i]; - this.layoutAttractive(edge); + this.layoutAttractive(edge); } - + // Move by the given force for (i in this.graph.nodes) { var node = this.graph.nodes[i]; @@ -367,7 +369,7 @@ Graph.Layout.Spring.prototype = { if(xmove < -max) xmove = -max; if(ymove > max) ymove = max; if(ymove < -max) ymove = -max; - + node.layoutPosX += xmove; node.layoutPosY += ymove; node.layoutForceX = 0; @@ -397,7 +399,7 @@ Graph.Layout.Spring.prototype = { layoutAttractive: function(edge) { var node1 = edge.source; var node2 = edge.target; - + var dx = node2.layoutPosX - node1.layoutPosX; var dy = node2.layoutPosY - node1.layoutPosY; var d2 = dx * dx + dy * dy; @@ -414,7 +416,7 @@ Graph.Layout.Spring.prototype = { var attractiveForce = (d2 - this.k * this.k) / this.k; if(edge.attraction == undefined) edge.attraction = 1; attractiveForce *= Math.log(edge.attraction) * 0.5 + 1; - + node2.layoutForceX -= attractiveForce * dx / d; node2.layoutForceY -= attractiveForce * dy / d; node1.layoutForceX += attractiveForce * dx / d; @@ -432,7 +434,7 @@ Graph.Layout.Ordered.prototype = { this.layoutPrepare(); this.layoutCalcBounds(); }, - + layoutPrepare: function(order) { for (i in this.graph.nodes) { var node = this.graph.nodes[i]; @@ -447,14 +449,14 @@ Graph.Layout.Ordered.prototype = { counter++; } }, - + layoutCalcBounds: function() { var minx = Infinity, maxx = -Infinity, miny = Infinity, maxy = -Infinity; for (i in this.graph.nodes) { var x = this.graph.nodes[i].layoutPosX; var y = this.graph.nodes[i].layoutPosY; - + if(x > maxx) maxx = x; if(x < minx) minx = x; if(y > maxy) maxy = y; @@ -470,7 +472,7 @@ Graph.Layout.Ordered.prototype = { }; /* - * usefull JavaScript extensions, + * usefull JavaScript extensions, */ function log(a) {console.log&&console.log(a);} @@ -491,14 +493,14 @@ Raphael.el.tooltip = function (tp) { this.tp.o = {x: 0, y: 0}; this.tp.hide(); this.hover( - function(event){ - this.mousemove(function(event){ - this.tp.translate(event.clientX - + function(event){ + this.mousemove(function(event){ + this.tp.translate(event.clientX - this.tp.o.x,event.clientY - this.tp.o.y); this.tp.o = {x: event.clientX, y: event.clientY}; }); this.tp.show().toFront(); - }, + }, function(event){ this.tp.hide(); this.unmousemove(); diff --git a/addons/base_diagram/static/lib/js/raphael-min.js b/addons/web_diagram/static/lib/js/raphael-min.js similarity index 100% rename from addons/base_diagram/static/lib/js/raphael-min.js rename to addons/web_diagram/static/lib/js/raphael-min.js diff --git a/addons/base_diagram/static/lib/js/seedrandom.js b/addons/web_diagram/static/lib/js/seedrandom.js similarity index 100% rename from addons/base_diagram/static/lib/js/seedrandom.js rename to addons/web_diagram/static/lib/js/seedrandom.js diff --git a/addons/web_diagram/static/src/css/base_diagram.css b/addons/web_diagram/static/src/css/base_diagram.css new file mode 100644 index 00000000000..9ba2f6b0c83 --- /dev/null +++ b/addons/web_diagram/static/src/css/base_diagram.css @@ -0,0 +1,18 @@ +.openerp .diagram { + border: 1px solid #999; + -moz-border-radius: 8px; + -webkit-border-radius: 8px; +} + +.openerp .show_grid { + background: url("/web_diagram/static/src/img/grid.jpg") repeat; +} + +.openerp .oe_diagram_pager { + text-align: right; + white-space: nowrap; +} + +.openerp .oe_diagram_buttons { + float: left; +} diff --git a/addons/web_diagram/static/src/img/grid.jpg b/addons/web_diagram/static/src/img/grid.jpg new file mode 100644 index 00000000000..5254207b964 Binary files /dev/null and b/addons/web_diagram/static/src/img/grid.jpg differ diff --git a/addons/web_diagram/static/src/js/diagram.js b/addons/web_diagram/static/src/js/diagram.js new file mode 100644 index 00000000000..d46aadde68f --- /dev/null +++ b/addons/web_diagram/static/src/js/diagram.js @@ -0,0 +1,295 @@ +/*--------------------------------------------------------- + * OpenERP diagram library + *---------------------------------------------------------*/ + +openerp.web_diagram = function (openerp) { +QWeb.add_template('/web_diagram/static/src/xml/base_diagram.xml'); +openerp.web.views.add('diagram', 'openerp.web.DiagramView'); +openerp.web.DiagramView = openerp.web.View.extend({ + searchable: false, + init: function(parent, element_id, dataset, view_id, options) { + this._super(parent, element_id); + this.set_default_options(options); + this.view_manager = parent; + this.dataset = dataset; + this.model = this.dataset.model; + this.view_id = view_id; + this.domain = this.dataset._domain || []; + this.context = {}; + this.ids = this.dataset.ids; + }, + start: function() { + return this.rpc("/web_diagram/diagram/load", {"model": this.model, "view_id": this.view_id}, this.on_loaded); + }, + + toTitleCase: function(str) { + return str.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();}); + }, + + on_loaded: function(result) { + + var self = this; + if(this.ids && this.ids.length) { + this.id = this.ids[self.dataset.index || 0]; + } + + this.fields_view = result.fields_view, + this.view_id = this.fields_view.view_id, + this.fields = this.fields_view.fields, + this.nodes = this.fields_view.arch.children[0], + this.connectors = this.fields_view.arch.children[1], + this.node = this.nodes.attrs.object, + this.connector = this.connectors.attrs.object; + + this.$element.html(QWeb.render("DiagramView", this)); + + this.$element.find('div.oe_diagram_pager button[data-pager-action]').click(function() { + var action = $(this).data('pager-action'); + self.on_pager_action(action); + }); + + this.do_update_pager(); + + // New Node,Edge + this.$element.find('#new_node.oe_diagram_button_new').click(function(){self.add_edit_node(null, self.node);}); + this.$element.find('#new_edge.oe_diagram_button_new').click(function(){self.add_edit_node(null, self.connector);}); + + this.$element.find('#toggle_grid').click(function() { + self.$element.find('.diagram').toggleClass('show_grid'); + }); + + if(this.id) { + self.get_diagram_info(); + } + + }, + + get_diagram_info: function() { + var self = this; + var params = { + 'id': this.id, + 'model': this.model, + 'node': this.node, + 'connector': this.connector, + 'bgcolor': this.nodes.attrs.bgcolor, + 'shape': this.nodes.attrs.shape, + 'src_node': this.connectors.attrs.source, + 'des_node': this.connectors.attrs.destination, + 'visible_nodes': [], + 'invisible_nodes': [], + 'node_fields': [], + 'connectors': [], + 'connectors_fields': [] + }; + + _.each(this.nodes.children, function(child) { + if(child.attrs.invisible == '1') + params['invisible_nodes'].push(child.attrs.name); + else { + params['visible_nodes'].push(child.attrs.name); + params['node_fields'].push(self.fields[child.attrs.name]['string']|| this.toTitleCase(child.attrs.name)); + } + }); + + _.each(this.connectors.children, function(conn) { + params['connectors_fields'].push(self.fields[conn.attrs.name]['string']|| this.toTitleCase(conn.attrs.name)); + params['connectors'].push(conn.attrs.name); + }); + + this.rpc( + '/web_diagram/diagram/get_diagram_info',params, + function(result) { + self.draw_diagram(result); + } + ); + }, + + on_diagram_loaded: function(record) { + var id_record = record['id']; + if(id_record) { + this.id = id_record; + this.get_diagram_info(); + } + }, + + draw_diagram: function(result) { + var diagram = new Graph(); + + this.active_model = result['id_model']; + + var res_nodes = result['nodes']; + var res_connectors = result['conn']; + + //Custom logic + var self = this; + var renderer = function(r, n) { + var node; + var set; + var shape = n.node.shape; + if(shape == 'rectangle') + shape = 'rect'; + node = r[shape](n.node.x, n.node.y).attr({ + "fill": n.node.color + }).dblclick(function() { + self.add_edit_node(n.node.id, self.node); + }); + set = r.set() + .push(node) + .push( + r.text(n.node.x, n.node.y, (n.label || n.id)) + .attr({"cursor":"pointer"}) + .dblclick(function() { + self.add_edit_node(n.node.id, self.node); + }) + ); + node.attr({cursor: "pointer"}); + + if(shape == "ellipse") + node.attr({rx: "40", ry: "20"}); + else if(shape == 'rect') { + node.attr({width: "60", height: "44"}); + node.next.attr({"text-anchor": "middle", x: n.node.x + 20, y: n.node.y + 20}); + } + return set; + }; + + _.each(res_nodes, function(res_node) { + diagram.addNode(res_node['name'],{node: res_node,render: renderer}); + }); + + // Id for Path(Edges) + var edge_ids = []; + + _.each(res_connectors, function(connector, index) { + edge_ids.push(index); + diagram.addEdge(connector['source'], connector['destination'], {directed : true, label: connector['signal']}); + }); + + + if ($('div#dia-canvas').children().length > 0) { + $('div#dia-canvas').children().remove(); + } + + var layouter = new Graph.Layout.Ordered(diagram); + var render_diagram = new Graph.Renderer.Raphael('dia-canvas', diagram, $('div#dia-canvas').width(), $('div#dia-canvas').height()); + + _.each(diagram.edges, function(edge, index) { + if(edge.connection) { + edge.connection.fg.attr({cursor: "pointer"}).dblclick(function() { + self.add_edit_node(edge_ids[index], self.connector); + }); + } + }); + }, + + add_edit_node: function(id, model) { + var self = this; + + if(!model) + model = self.node; + if(id) + id = parseInt(id, 10); + var action_manager = new openerp.web.ActionManager(this); + var dialog = new openerp.web.Dialog(this, { + width: 800, + height: 600, + buttons : { + Cancel : function() { + $(this).dialog('destroy'); + }, + Save : function() { + var form_view = action_manager.inner_viewmanager.views.form.controller; + + form_view.do_save(function() { + self.dataset.read_index(_.keys(self.fields_view.fields), self.on_diagram_loaded); + }); + $(this).dialog('destroy'); + } + } + }).start().open(); + action_manager.appendTo(dialog.$element); + action_manager.do_action({ + res_model : model, + res_id: id, + views : [[false, 'form']], + type : 'ir.actions.act_window', + auto_search : false, + flags : { + search_view: false, + sidebar : false, + views_switcher : false, + action_buttons : false, + pager: false + } + }); + + var form_controller = action_manager.inner_viewmanager.views.form.controller; + + var form_fields; + + if(model == self.node) { + form_fields = ['wkf_id']; + } else { + form_fields = ['act_from', 'act_to']; + } + + if(model == self.node || id) { + $.each(form_fields, function(index, fld) { + form_controller.on_record_loaded.add_first(function() { + form_controller.fields[fld].modifiers.readonly = true; + form_controller.fields[fld].$input.attr('disabled', true); + form_controller.fields[fld].$drop_down.unbind(); + form_controller.fields[fld].$menu_btn.unbind(); + }); + }); + } + if(!id && (model == self.node)) { + $.each(form_fields, function(index, fld) { + form_controller.on_record_loaded.add_last(function() { + form_controller.fields[fld].set_value([self.id,self.active_model]); + form_controller.fields[fld].dirty = true; + }); + }); + } + }, + + on_pager_action: function(action) { + switch (action) { + case 'first': + this.dataset.index = 0; + break; + case 'previous': + this.dataset.previous(); + break; + case 'next': + this.dataset.next(); + break; + case 'last': + this.dataset.index = this.dataset.ids.length - 1; + break; + } + this.dataset.read_index(_.keys(this.fields_view.fields), this.on_diagram_loaded); + this.do_update_pager(); + }, + + do_update_pager: function(hide_index) { + var $pager = this.$element.find('div.oe_diagram_pager'); + var index = hide_index ? '-' : this.dataset.index + 1; + if(!this.dataset.count) { + this.dataset.count = this.dataset.ids.length; + } + $pager.find('span.oe_pager_index').html(index); + $pager.find('span.oe_pager_count').html(this.dataset.count); + }, + + do_show: function () { + this.$element.show(); + }, + + do_hide: function () { + this.$element.hide(); + } +}); +}; + +// vim:et fdc=0 fdl=0 foldnestmax=3 fdm=syntax: diff --git a/addons/web_diagram/static/src/xml/base_diagram.xml b/addons/web_diagram/static/src/xml/base_diagram.xml new file mode 100644 index 00000000000..f57505d81ac --- /dev/null +++ b/addons/web_diagram/static/src/xml/base_diagram.xml @@ -0,0 +1,22 @@ + \ No newline at end of file diff --git a/addons/base_gantt/__init__.py b/addons/web_gantt/__init__.py similarity index 100% rename from addons/base_gantt/__init__.py rename to addons/web_gantt/__init__.py diff --git a/addons/base_gantt/__openerp__.py b/addons/web_gantt/__openerp__.py similarity index 84% rename from addons/base_gantt/__openerp__.py rename to addons/web_gantt/__openerp__.py index c23f352a4f7..6d857e5dc48 100644 --- a/addons/base_gantt/__openerp__.py +++ b/addons/web_gantt/__openerp__.py @@ -1,7 +1,7 @@ { - "name": "Base Gantt", + "name": "web Gantt", "version": "2.0", - "depends": ['base'], + "depends": ['web'], "js": [ 'static/lib/dhtmlxGantt/sources/dhtmlxcommon.js', 'static/lib/dhtmlxGantt/sources/dhtmlxgantt.js', diff --git a/addons/base_gantt/controllers/__init__.py b/addons/web_gantt/controllers/__init__.py similarity index 100% rename from addons/base_gantt/controllers/__init__.py rename to addons/web_gantt/controllers/__init__.py diff --git a/addons/base_gantt/controllers/main.py b/addons/web_gantt/controllers/main.py similarity index 65% rename from addons/base_gantt/controllers/main.py rename to addons/web_gantt/controllers/main.py index 56fb2b7e79f..4f7e9201b38 100644 --- a/addons/base_gantt/controllers/main.py +++ b/addons/web_gantt/controllers/main.py @@ -1,8 +1,8 @@ -import base.common as openerpweb -from base.controllers.main import View +import web.common as openerpweb +from web.controllers.main import View class GanttView(View): - _cp_path = "/base_gantt/ganttview" + _cp_path = "/web_gantt/ganttview" @openerpweb.jsonrequest def load(self, req, model, view_id): diff --git a/addons/base_gantt/po/base_gantt.pot b/addons/web_gantt/po/base_gantt.pot similarity index 100% rename from addons/base_gantt/po/base_gantt.pot rename to addons/web_gantt/po/base_gantt.pot diff --git a/addons/web_gantt/po/web_gantt.pot b/addons/web_gantt/po/web_gantt.pot new file mode 100644 index 00000000000..945fa401fd2 --- /dev/null +++ b/addons/web_gantt/po/web_gantt.pot @@ -0,0 +1,19 @@ +# Translations template for PROJECT. +# Copyright (C) 2011 ORGANIZATION +# This file is distributed under the same license as the PROJECT project. +# FIRST AUTHOR , 2011. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PROJECT VERSION\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2011-09-06 12:02+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 0.9.6\n" + diff --git a/addons/base_gantt/static/lib/dhtmlxGantt/License_GPL.html b/addons/web_gantt/static/lib/dhtmlxGantt/License_GPL.html similarity index 100% rename from addons/base_gantt/static/lib/dhtmlxGantt/License_GPL.html rename to addons/web_gantt/static/lib/dhtmlxGantt/License_GPL.html diff --git a/addons/base_gantt/static/lib/dhtmlxGantt/codebase/dhtmlxcommon.js b/addons/web_gantt/static/lib/dhtmlxGantt/codebase/dhtmlxcommon.js similarity index 100% rename from addons/base_gantt/static/lib/dhtmlxGantt/codebase/dhtmlxcommon.js rename to addons/web_gantt/static/lib/dhtmlxGantt/codebase/dhtmlxcommon.js diff --git a/addons/base_gantt/static/lib/dhtmlxGantt/codebase/dhtmlxgantt.css b/addons/web_gantt/static/lib/dhtmlxGantt/codebase/dhtmlxgantt.css similarity index 100% rename from addons/base_gantt/static/lib/dhtmlxGantt/codebase/dhtmlxgantt.css rename to addons/web_gantt/static/lib/dhtmlxGantt/codebase/dhtmlxgantt.css diff --git a/addons/base_gantt/static/lib/dhtmlxGantt/codebase/dhtmlxgantt.js b/addons/web_gantt/static/lib/dhtmlxGantt/codebase/dhtmlxgantt.js similarity index 100% rename from addons/base_gantt/static/lib/dhtmlxGantt/codebase/dhtmlxgantt.js rename to addons/web_gantt/static/lib/dhtmlxGantt/codebase/dhtmlxgantt.js diff --git a/addons/base_gantt/static/lib/dhtmlxGantt/codebase/imgs/arr.gif b/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/arr.gif similarity index 100% rename from addons/base_gantt/static/lib/dhtmlxGantt/codebase/imgs/arr.gif rename to addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/arr.gif diff --git a/addons/base_gantt/static/lib/dhtmlxGantt/codebase/imgs/bg.png b/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/bg.png similarity index 100% rename from addons/base_gantt/static/lib/dhtmlxGantt/codebase/imgs/bg.png rename to addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/bg.png diff --git a/addons/base_gantt/static/lib/dhtmlxGantt/codebase/imgs/bg_week.png b/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/bg_week.png similarity index 100% rename from addons/base_gantt/static/lib/dhtmlxGantt/codebase/imgs/bg_week.png rename to addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/bg_week.png diff --git a/addons/base_gantt/static/lib/dhtmlxGantt/codebase/imgs/menu/menu_bg.png b/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/menu/menu_bg.png similarity index 100% rename from addons/base_gantt/static/lib/dhtmlxGantt/codebase/imgs/menu/menu_bg.png rename to addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/menu/menu_bg.png diff --git a/addons/base_gantt/static/lib/dhtmlxGantt/codebase/imgs/menu/menu_selection.png b/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/menu/menu_selection.png similarity index 100% rename from addons/base_gantt/static/lib/dhtmlxGantt/codebase/imgs/menu/menu_selection.png rename to addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/menu/menu_selection.png diff --git a/addons/base_gantt/static/lib/dhtmlxGantt/codebase/imgs/menu/window_tr.png b/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/menu/window_tr.png similarity index 100% rename from addons/base_gantt/static/lib/dhtmlxGantt/codebase/imgs/menu/window_tr.png rename to addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/menu/window_tr.png diff --git a/addons/base_gantt/static/lib/dhtmlxGantt/codebase/imgs/minus.gif b/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/minus.gif similarity index 100% rename from addons/base_gantt/static/lib/dhtmlxGantt/codebase/imgs/minus.gif rename to addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/minus.gif diff --git a/addons/base_gantt/static/lib/dhtmlxGantt/codebase/imgs/parentnode_filled.png b/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/parentnode_filled.png similarity index 100% rename from addons/base_gantt/static/lib/dhtmlxGantt/codebase/imgs/parentnode_filled.png rename to addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/parentnode_filled.png diff --git a/addons/base_gantt/static/lib/dhtmlxGantt/codebase/imgs/plus.gif b/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/plus.gif similarity index 100% rename from addons/base_gantt/static/lib/dhtmlxGantt/codebase/imgs/plus.gif rename to addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/plus.gif diff --git a/addons/base_gantt/static/lib/dhtmlxGantt/codebase/imgs/progress_bg.png b/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/progress_bg.png similarity index 100% rename from addons/base_gantt/static/lib/dhtmlxGantt/codebase/imgs/progress_bg.png rename to addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/progress_bg.png diff --git a/addons/base_gantt/static/lib/dhtmlxGantt/codebase/imgs/progress_filled.png b/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/progress_filled.png similarity index 100% rename from addons/base_gantt/static/lib/dhtmlxGantt/codebase/imgs/progress_filled.png rename to addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/progress_filled.png diff --git a/addons/base_gantt/static/lib/dhtmlxGantt/index.html b/addons/web_gantt/static/lib/dhtmlxGantt/index.html similarity index 100% rename from addons/base_gantt/static/lib/dhtmlxGantt/index.html rename to addons/web_gantt/static/lib/dhtmlxGantt/index.html diff --git a/addons/base_gantt/static/lib/dhtmlxGantt/readme.txt b/addons/web_gantt/static/lib/dhtmlxGantt/readme.txt similarity index 100% rename from addons/base_gantt/static/lib/dhtmlxGantt/readme.txt rename to addons/web_gantt/static/lib/dhtmlxGantt/readme.txt diff --git a/addons/base_gantt/static/lib/dhtmlxGantt/sources/dhtmlxcommon.js b/addons/web_gantt/static/lib/dhtmlxGantt/sources/dhtmlxcommon.js similarity index 100% rename from addons/base_gantt/static/lib/dhtmlxGantt/sources/dhtmlxcommon.js rename to addons/web_gantt/static/lib/dhtmlxGantt/sources/dhtmlxcommon.js diff --git a/addons/base_gantt/static/lib/dhtmlxGantt/sources/dhtmlxgantt.js b/addons/web_gantt/static/lib/dhtmlxGantt/sources/dhtmlxgantt.js similarity index 100% rename from addons/base_gantt/static/lib/dhtmlxGantt/sources/dhtmlxgantt.js rename to addons/web_gantt/static/lib/dhtmlxGantt/sources/dhtmlxgantt.js diff --git a/addons/base_gantt/static/src/js/gantt.js b/addons/web_gantt/static/src/js/gantt.js similarity index 93% rename from addons/base_gantt/static/src/js/gantt.js rename to addons/web_gantt/static/src/js/gantt.js index ad44382397b..a2da2d99671 100644 --- a/addons/base_gantt/static/src/js/gantt.js +++ b/addons/web_gantt/static/src/js/gantt.js @@ -1,14 +1,14 @@ /*--------------------------------------------------------- - * OpenERP base_gantt + * OpenERP web_gantt *---------------------------------------------------------*/ -openerp.base_gantt = function (openerp) { -QWeb.add_template('/base_gantt/static/src/xml/base_gantt.xml'); -openerp.base.views.add('gantt', 'openerp.base_gantt.GanttView'); -openerp.base_gantt.GanttView = openerp.base.View.extend({ +openerp.web_gantt = function (openerp) { +QWeb.add_template('/web_gantt/static/src/xml/web_gantt.xml'); +openerp.web.views.add('gantt', 'openerp.web_gantt.GanttView'); +openerp.web_gantt.GanttView = openerp.web.View.extend({ init: function(parent, element_id, dataset, view_id) { this._super(parent, element_id); - this.view_manager = parent || new openerp.base.NullViewManager(); + this.view_manager = parent || new openerp.web.NullViewManager(); this.dataset = dataset; this.model = dataset.model; this.view_id = view_id; @@ -31,7 +31,7 @@ init: function(parent, element_id, dataset, view_id) { }, start: function() { - this.rpc("/base_gantt/ganttview/load", + this.rpc("/web_gantt/ganttview/load", {"model": this.model, "view_id": this.view_id}, this.on_loaded); }, @@ -67,7 +67,7 @@ init: function(parent, element_id, dataset, view_id) { create_gantt: function() { ganttChartControl = new GanttChart(this.day_length); - ganttChartControl.setImagePath("/base_gantt/static/lib/dhtmlxGantt/codebase/imgs/"); + ganttChartControl.setImagePath("/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/"); ganttChartControl.setEditable(true); ganttChartControl.showTreePanel(true); ganttChartControl.showContextMenu(true); @@ -94,7 +94,7 @@ init: function(parent, element_id, dataset, view_id) { COLOR_PALETTE = ['#ccccff', '#cc99ff', '#75507b', '#3465a4', '#73d216', '#c17d11', '#edd400', '#fcaf3e', '#ef2929', '#ff00c9', '#ad7fa8', '#729fcf', '#8ae234', '#e9b96e', '#fce94f', '#ff8e00', '#ff0000', '#b0008c', '#9000ff', '#0078ff', '#00ff00', '#e6ff00', '#ffff00', - '#905000', '#9b0000', '#840067', '#510090', '#0000c9', '#009b00', '#9abe00', '#ffc900'] + '#905000', '#9b0000', '#840067', '#510090', '#0000c9', '#009b00', '#9abe00', '#ffc900']; if (result.length != 0){ var show_event = []; @@ -141,7 +141,7 @@ init: function(parent, element_id, dataset, view_id) { var color = res[this.color_field][0] || res[this.color_field]; if (color_box[color] == undefined){ color_box[color] = COLOR_PALETTE[k]; - k = k + 1; + k += 1; } if (this.date_stop != undefined){ @@ -156,8 +156,8 @@ init: function(parent, element_id, dataset, view_id) { else{ var duration = res[this.date_delay]; } - if (duration == false) - duration = 0 + if (!duration) + duration = 0; if (self.grp.length){ for (var j in self.grp){ @@ -169,7 +169,7 @@ init: function(parent, element_id, dataset, view_id) { grp_key = res[self.grp[j]['group_by']]; } - if (grp_key == false){ + if (!grp_key){ grp_key = "Undefined"; } @@ -233,7 +233,7 @@ init: function(parent, element_id, dataset, view_id) { evt_date = all_events[evt_id]['evt'][2]; evt_duration = all_events[evt_id]['evt'][3]; - evt_str_date = this.convert_date_str(evt_date); + var evt_str_date = this.convert_date_str(evt_date); evt_end_date = this.end_date(evt_str_date, evt_duration); while (all_events[evt_id]['parent'] != "") { @@ -396,14 +396,14 @@ init: function(parent, element_id, dataset, view_id) { "type":"ir.actions.act_window", "view_type":"form", "view_mode":"form" - } + }; action.flags = { search_view: false, sidebar : false, views_switcher : false, pager: false - } + }; var element_id = _.uniqueId("act_window_dialog"); var dialog = jQuery('
      ', { 'id': element_id @@ -425,7 +425,7 @@ init: function(parent, element_id, dataset, view_id) { } } }); - var action_manager = new openerp.base.ActionManager(this, element_id); + var action_manager = new openerp.web.ActionManager(this, element_id); action_manager.start(); action_manager.do_action(action); @@ -474,24 +474,24 @@ init: function(parent, element_id, dataset, view_id) { convert_str_date: function (str){ if (str.length == 19){ this.format = "yyyy-MM-dd HH:mm:ss"; - return openerp.base.str_to_datetime(str); + return openerp.web.str_to_datetime(str); } else if (str.length == 10){ this.format = "yyyy-MM-dd"; - return openerp.base.str_to_date(str); + return openerp.web.str_to_date(str); } else if (str.length == 8){ this.format = "HH:mm:ss"; - return openerp.base.str_to_time(str); + return openerp.web.str_to_time(str); } throw "Unrecognized date/time format"; }, convert_date_str: function(full_date) { if (this.format == "yyyy-MM-dd HH:mm:ss"){ - return openerp.base.datetime_to_str(full_date); + return openerp.web.datetime_to_str(full_date); } else if (this.format == "yyyy-MM-dd"){ - return openerp.base.date_to_str(full_date); + return openerp.web.date_to_str(full_date); } else if (this.format == "HH:mm:ss"){ - return openerp.base.time_to_str(full_date); + return openerp.web.time_to_str(full_date); } throw "Unrecognized date/time format"; }, @@ -508,7 +508,7 @@ init: function(parent, element_id, dataset, view_id) { do_search: function (domains, contexts, groupbys) { var self = this; this.grp = groupbys; - return this.rpc('/base/session/eval_domain_and_context', { + return this.rpc('/web/session/eval_domain_and_context', { domains: domains, contexts: contexts, group_by_seq: groupbys diff --git a/addons/base_gantt/static/src/xml/base_gantt.xml b/addons/web_gantt/static/src/xml/web_gantt.xml similarity index 100% rename from addons/base_gantt/static/src/xml/base_gantt.xml rename to addons/web_gantt/static/src/xml/web_gantt.xml diff --git a/addons/base_graph/__init__.py b/addons/web_graph/__init__.py similarity index 100% rename from addons/base_graph/__init__.py rename to addons/web_graph/__init__.py diff --git a/addons/base_graph/__openerp__.py b/addons/web_graph/__openerp__.py similarity index 80% rename from addons/base_graph/__openerp__.py rename to addons/web_graph/__openerp__.py index c393953b9fd..4a1c4a6576f 100644 --- a/addons/base_graph/__openerp__.py +++ b/addons/web_graph/__openerp__.py @@ -1,7 +1,7 @@ { - "name": "Base Graph", + "name": "web Graph", "version": "2.0", - "depends": ['base'], + "depends": ['web'], "js": [ "static/lib/dhtmlxGraph/codebase/dhtmlxchart.js", "static/src/js/graph.js"], diff --git a/addons/base_graph/controllers/__init__.py b/addons/web_graph/controllers/__init__.py similarity index 100% rename from addons/base_graph/controllers/__init__.py rename to addons/web_graph/controllers/__init__.py diff --git a/addons/base_graph/controllers/main.py b/addons/web_graph/controllers/main.py similarity index 72% rename from addons/base_graph/controllers/main.py rename to addons/web_graph/controllers/main.py index f326faf3854..cda868c0809 100644 --- a/addons/base_graph/controllers/main.py +++ b/addons/web_graph/controllers/main.py @@ -1,8 +1,8 @@ -from base.controllers.main import View -import base.common as openerpweb +from web.controllers.main import View +import web.common as openerpweb class GraphView(View): - _cp_path = "/base_graph/graphview" + _cp_path = "/web_graph/graphview" @openerpweb.jsonrequest def load(self, req, model, view_id): diff --git a/addons/base_graph/po/base_graph.pot b/addons/web_graph/po/base_graph.pot similarity index 100% rename from addons/base_graph/po/base_graph.pot rename to addons/web_graph/po/base_graph.pot diff --git a/addons/web_graph/po/web_graph.pot b/addons/web_graph/po/web_graph.pot new file mode 100644 index 00000000000..945fa401fd2 --- /dev/null +++ b/addons/web_graph/po/web_graph.pot @@ -0,0 +1,19 @@ +# Translations template for PROJECT. +# Copyright (C) 2011 ORGANIZATION +# This file is distributed under the same license as the PROJECT project. +# FIRST AUTHOR , 2011. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PROJECT VERSION\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2011-09-06 12:02+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 0.9.6\n" + diff --git a/addons/base_graph/static/lib/dhtmlxGraph/License_GPL.html b/addons/web_graph/static/lib/dhtmlxGraph/License_GPL.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/License_GPL.html rename to addons/web_graph/static/lib/dhtmlxGraph/License_GPL.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/codebase/dhtmlxchart.css b/addons/web_graph/static/lib/dhtmlxGraph/codebase/dhtmlxchart.css similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/codebase/dhtmlxchart.css rename to addons/web_graph/static/lib/dhtmlxGraph/codebase/dhtmlxchart.css diff --git a/addons/base_graph/static/lib/dhtmlxGraph/codebase/dhtmlxchart.js b/addons/web_graph/static/lib/dhtmlxGraph/codebase/dhtmlxchart.js similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/codebase/dhtmlxchart.js rename to addons/web_graph/static/lib/dhtmlxGraph/codebase/dhtmlxchart.js diff --git a/addons/base_graph/static/lib/dhtmlxGraph/codebase/dhtmlxchart_debug.css b/addons/web_graph/static/lib/dhtmlxGraph/codebase/dhtmlxchart_debug.css similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/codebase/dhtmlxchart_debug.css rename to addons/web_graph/static/lib/dhtmlxGraph/codebase/dhtmlxchart_debug.css diff --git a/addons/base_graph/static/lib/dhtmlxGraph/codebase/dhtmlxchart_debug.js b/addons/web_graph/static/lib/dhtmlxGraph/codebase/dhtmlxchart_debug.js similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/codebase/dhtmlxchart_debug.js rename to addons/web_graph/static/lib/dhtmlxGraph/codebase/dhtmlxchart_debug.js diff --git a/addons/base_graph/static/lib/dhtmlxGraph/codebase/thirdparty/excanvas/AUTHORS b/addons/web_graph/static/lib/dhtmlxGraph/codebase/thirdparty/excanvas/AUTHORS similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/codebase/thirdparty/excanvas/AUTHORS rename to addons/web_graph/static/lib/dhtmlxGraph/codebase/thirdparty/excanvas/AUTHORS diff --git a/addons/base_graph/static/lib/dhtmlxGraph/codebase/thirdparty/excanvas/COPYING b/addons/web_graph/static/lib/dhtmlxGraph/codebase/thirdparty/excanvas/COPYING similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/codebase/thirdparty/excanvas/COPYING rename to addons/web_graph/static/lib/dhtmlxGraph/codebase/thirdparty/excanvas/COPYING diff --git a/addons/base_graph/static/lib/dhtmlxGraph/codebase/thirdparty/excanvas/README b/addons/web_graph/static/lib/dhtmlxGraph/codebase/thirdparty/excanvas/README similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/codebase/thirdparty/excanvas/README rename to addons/web_graph/static/lib/dhtmlxGraph/codebase/thirdparty/excanvas/README diff --git a/addons/base_graph/static/lib/dhtmlxGraph/codebase/thirdparty/excanvas/excanvas.js b/addons/web_graph/static/lib/dhtmlxGraph/codebase/thirdparty/excanvas/excanvas.js similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/codebase/thirdparty/excanvas/excanvas.js rename to addons/web_graph/static/lib/dhtmlxGraph/codebase/thirdparty/excanvas/excanvas.js diff --git a/addons/base_graph/static/lib/dhtmlxGraph/dhtmlxchart_full.zip b/addons/web_graph/static/lib/dhtmlxGraph/dhtmlxchart_full.zip similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/dhtmlxchart_full.zip rename to addons/web_graph/static/lib/dhtmlxGraph/dhtmlxchart_full.zip diff --git a/addons/base_graph/static/lib/dhtmlxGraph/readme.txt b/addons/web_graph/static/lib/dhtmlxGraph/readme.txt similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/readme.txt rename to addons/web_graph/static/lib/dhtmlxGraph/readme.txt diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/01_initialization/01_load_xml.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/01_initialization/01_load_xml.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/01_initialization/01_load_xml.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/01_initialization/01_load_xml.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/01_initialization/02_load_json.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/01_initialization/02_load_json.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/01_initialization/02_load_json.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/01_initialization/02_load_json.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/01_initialization/03_load_csv.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/01_initialization/03_load_csv.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/01_initialization/03_load_csv.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/01_initialization/03_load_csv.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/01_initialization/04_load_jsarray.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/01_initialization/04_load_jsarray.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/01_initialization/04_load_jsarray.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/01_initialization/04_load_jsarray.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/01_initialization/05_series.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/01_initialization/05_series.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/01_initialization/05_series.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/01_initialization/05_series.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/02_color/01_default.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/02_color/01_default.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/02_color/01_default.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/02_color/01_default.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/02_color/02_custom.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/02_color/02_custom.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/02_color/02_custom.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/02_color/02_custom.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/02_color/03_custom_logic.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/02_color/03_custom_logic.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/02_color/03_custom_logic.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/02_color/03_custom_logic.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/02_color/04_gradient.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/02_color/04_gradient.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/02_color/04_gradient.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/02_color/04_gradient.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/03_group/01_basic.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/03_group/01_basic.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/03_group/01_basic.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/03_group/01_basic.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/03_group/02_scales.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/03_group/02_scales.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/03_group/02_scales.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/03_group/02_scales.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/04_pie_chart/01_init.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/04_pie_chart/01_init.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/04_pie_chart/01_init.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/04_pie_chart/01_init.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/04_pie_chart/02_text.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/04_pie_chart/02_text.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/04_pie_chart/02_text.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/04_pie_chart/02_text.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/04_pie_chart/03_3d_chart.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/04_pie_chart/03_3d_chart.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/04_pie_chart/03_3d_chart.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/04_pie_chart/03_3d_chart.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/04_pie_chart/04_legend.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/04_pie_chart/04_legend.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/04_pie_chart/04_legend.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/04_pie_chart/04_legend.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/05_line_chart/01_init.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/05_line_chart/01_init.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/05_line_chart/01_init.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/05_line_chart/01_init.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/05_line_chart/02_style.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/05_line_chart/02_style.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/05_line_chart/02_style.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/05_line_chart/02_style.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/05_line_chart/03_scale.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/05_line_chart/03_scale.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/05_line_chart/03_scale.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/05_line_chart/03_scale.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/05_line_chart/04_spline.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/05_line_chart/04_spline.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/05_line_chart/04_spline.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/05_line_chart/04_spline.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/05_line_chart/05_series.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/05_line_chart/05_series.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/05_line_chart/05_series.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/05_line_chart/05_series.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/01_init.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/01_init.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/01_init.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/01_init.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/02_text.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/02_text.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/02_text.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/02_text.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/03_scales.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/03_scales.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/03_scales.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/03_scales.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/04_styles.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/04_styles.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/04_styles.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/04_styles.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/05_stacked_chart.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/05_stacked_chart.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/05_stacked_chart.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/05_stacked_chart.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/06_series.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/06_series.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/06_series.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/06_series.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/07_horizonal_bars.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/07_horizonal_bars.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/07_horizonal_bars.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/07_horizonal_bars.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/08_horizonal_stacked_bars.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/08_horizonal_stacked_bars.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/08_horizonal_stacked_bars.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/08_horizonal_stacked_bars.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/07_area_chart/01_init.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/07_area_chart/01_init.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/07_area_chart/01_init.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/07_area_chart/01_init.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/07_area_chart/02_scale.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/07_area_chart/02_scale.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/07_area_chart/02_scale.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/07_area_chart/02_scale.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/07_area_chart/03_series.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/07_area_chart/03_series.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/07_area_chart/03_series.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/07_area_chart/03_series.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/07_area_chart/03_stacked_area.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/07_area_chart/03_stacked_area.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/07_area_chart/03_stacked_area.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/07_area_chart/03_stacked_area.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/08_dynamic/01_add.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/08_dynamic/01_add.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/08_dynamic/01_add.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/08_dynamic/01_add.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/08_dynamic/02_events.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/08_dynamic/02_events.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/08_dynamic/02_events.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/08_dynamic/02_events.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/08_dynamic/03_sorting.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/08_dynamic/03_sorting.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/08_dynamic/03_sorting.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/08_dynamic/03_sorting.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/08_dynamic/04_filtering.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/08_dynamic/04_filtering.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/08_dynamic/04_filtering.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/08_dynamic/04_filtering.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/09_integration/01_dhtmlxgrid.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/09_integration/01_dhtmlxgrid.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/09_integration/01_dhtmlxgrid.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/09_integration/01_dhtmlxgrid.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/09_integration/02_dhtmlxgrid_group.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/09_integration/02_dhtmlxgrid_group.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/09_integration/02_dhtmlxgrid_group.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/09_integration/02_dhtmlxgrid_group.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/09_integration/03_windows.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/09_integration/03_windows.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/09_integration/03_windows.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/09_integration/03_windows.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/common/config.php b/addons/web_graph/static/lib/dhtmlxGraph/samples/common/config.php similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/common/config.php rename to addons/web_graph/static/lib/dhtmlxGraph/samples/common/config.php diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/common/data.php b/addons/web_graph/static/lib/dhtmlxGraph/samples/common/data.php similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/common/data.php rename to addons/web_graph/static/lib/dhtmlxGraph/samples/common/data.php diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/common/sales.xml b/addons/web_graph/static/lib/dhtmlxGraph/samples/common/sales.xml similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/common/sales.xml rename to addons/web_graph/static/lib/dhtmlxGraph/samples/common/sales.xml diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/common/stat.xml b/addons/web_graph/static/lib/dhtmlxGraph/samples/common/stat.xml similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/common/stat.xml rename to addons/web_graph/static/lib/dhtmlxGraph/samples/common/stat.xml diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/readme.txt b/addons/web_graph/static/lib/dhtmlxGraph/samples/readme.txt similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/readme.txt rename to addons/web_graph/static/lib/dhtmlxGraph/samples/readme.txt diff --git a/addons/base_graph/static/lib/dhtmlxGraph/sources/dhtmlxchart.js b/addons/web_graph/static/lib/dhtmlxGraph/sources/dhtmlxchart.js similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/sources/dhtmlxchart.js rename to addons/web_graph/static/lib/dhtmlxGraph/sources/dhtmlxchart.js diff --git a/addons/base_graph/static/src/js/graph.js b/addons/web_graph/static/src/js/graph.js similarity index 97% rename from addons/base_graph/static/src/js/graph.js rename to addons/web_graph/static/src/js/graph.js index e76d38b33bc..f5fd7c1953d 100644 --- a/addons/base_graph/static/src/js/graph.js +++ b/addons/web_graph/static/src/js/graph.js @@ -1,8 +1,8 @@ /*--------------------------------------------------------- - * OpenERP base_graph + * OpenERP web_graph *---------------------------------------------------------*/ -openerp.base_graph = function (openerp) { +openerp.web_graph = function (openerp) { var COLOR_PALETTE = [ '#cc99ff', '#ccccff', '#48D1CC', '#CFD784', '#8B7B8B', '#75507b', '#b0008c', '#ff0000', '#ff8e00', '#9000ff', '#0078ff', '#00ff00', @@ -12,9 +12,9 @@ var COLOR_PALETTE = [ '#ad7fa8', '#729fcf', '#8ae234', '#e9b96e', '#fce94f', '#f57900', '#cc0000', '#d400a8']; -QWeb.add_template('/base_graph/static/src/xml/base_graph.xml'); -openerp.base.views.add('graph', 'openerp.base_graph.GraphView'); -openerp.base_graph.GraphView = openerp.base.View.extend({ +QWeb.add_template('/web_graph/static/src/xml/web_graph.xml'); +openerp.web.views.add('graph', 'openerp.web_graph.GraphView'); +openerp.web_graph.GraphView = openerp.web.View.extend({ init: function(parent, element_id, dataset, view_id) { this._super(parent, element_id); @@ -32,7 +32,7 @@ openerp.base_graph.GraphView = openerp.base.View.extend({ this.$element.hide(); }, start: function() { - return this.rpc("/base_graph/graphview/load", {"model": this.model, "view_id": this.view_id}, this.on_loaded); + return this.rpc("/web_graph/graphview/load", {"model": this.model, "view_id": this.view_id}, this.on_loaded); }, on_loaded: function(data) { this.all_fields = data.all_fields; @@ -455,7 +455,7 @@ openerp.base_graph.GraphView = openerp.base.View.extend({ do_search: function(domains, contexts, groupbys) { var self = this; - this.rpc('/base/session/eval_domain_and_context', { + this.rpc('/web/session/eval_domain_and_context', { domains: domains, contexts: contexts, group_by_seq: groupbys diff --git a/addons/base_graph/static/src/xml/base_graph.xml b/addons/web_graph/static/src/xml/web_graph.xml similarity index 100% rename from addons/base_graph/static/src/xml/base_graph.xml rename to addons/web_graph/static/src/xml/web_graph.xml diff --git a/addons/base_hello/__init__.py b/addons/web_hello/__init__.py similarity index 100% rename from addons/base_hello/__init__.py rename to addons/web_hello/__init__.py diff --git a/addons/base_hello/__openerp__.py b/addons/web_hello/__openerp__.py similarity index 100% rename from addons/base_hello/__openerp__.py rename to addons/web_hello/__openerp__.py diff --git a/addons/base_hello/po/base_hello.pot b/addons/web_hello/po/base_hello.pot similarity index 100% rename from addons/base_hello/po/base_hello.pot rename to addons/web_hello/po/base_hello.pot diff --git a/addons/web_hello/po/web_hello.pot b/addons/web_hello/po/web_hello.pot new file mode 100644 index 00000000000..d7f6df2d73d --- /dev/null +++ b/addons/web_hello/po/web_hello.pot @@ -0,0 +1,19 @@ +# Translations template for PROJECT. +# Copyright (C) 2011 ORGANIZATION +# This file is distributed under the same license as the PROJECT project. +# FIRST AUTHOR , 2011. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PROJECT VERSION\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2011-09-06 12:03+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 0.9.6\n" + diff --git a/addons/base_hello/static/openerp/base_hello.js b/addons/web_hello/static/openerp/base_hello.js similarity index 80% rename from addons/base_hello/static/openerp/base_hello.js rename to addons/web_hello/static/openerp/base_hello.js index 5d6a02d355b..99c97006eac 100644 --- a/addons/base_hello/static/openerp/base_hello.js +++ b/addons/web_hello/static/openerp/base_hello.js @@ -2,9 +2,9 @@ * OpenERP base_hello (Example module) *---------------------------------------------------------*/ -openerp.base_hello = function(openerp) { +openerp.web_hello = function(openerp) { -openerp.base.SearchView = openerp.base.SearchView.extend({ +openerp.web.SearchView = openerp.web.SearchView.extend({ init:function() { this._super.apply(this,arguments); this.on_search.add(function(){console.log('hello');}); diff --git a/addons/web_mobile/controllers/__init__.py b/addons/web_mobile/controllers/__init__.py index 8ee9bae18d9..e69de29bb2d 100644 --- a/addons/web_mobile/controllers/__init__.py +++ b/addons/web_mobile/controllers/__init__.py @@ -1 +0,0 @@ -import main diff --git a/addons/web_mobile/controllers/main.py b/addons/web_mobile/controllers/main.py deleted file mode 100644 index 8fa3e32a775..00000000000 --- a/addons/web_mobile/controllers/main.py +++ /dev/null @@ -1,12 +0,0 @@ -# -*- coding: utf-8 -*- -#import glob, os -#import pprint -# -#import simplejson -# -#import openerpweb -#import openerpweb.ast -#import openerpweb.nonliterals -# -#import cherrypy -# diff --git a/addons/web_mobile/po/web_mobile.pot b/addons/web_mobile/po/web_mobile.pot index b8582b3f12f..37b557def1d 100644 --- a/addons/web_mobile/po/web_mobile.pot +++ b/addons/web_mobile/po/web_mobile.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2011-08-17 13:28+0200\n" +"POT-Creation-Date: 2011-09-06 12:03+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -21,18 +21,10 @@ msgstr "" msgid "OpenERP" msgstr "" -#: addons/web_mobile/static/src/xml/web_mobile.xml:0 -msgid "Home" -msgstr "" - #: addons/web_mobile/static/src/xml/web_mobile.xml:0 msgid "Database:" msgstr "" -#: addons/web_mobile/static/src/xml/web_mobile.xml:0 -msgid "Choose Database..." -msgstr "" - #: addons/web_mobile/static/src/xml/web_mobile.xml:0 msgid "Login:" msgstr "" @@ -46,7 +38,11 @@ msgid "Login" msgstr "" #: addons/web_mobile/static/src/xml/web_mobile.xml:0 -msgid ":" +msgid "Bad username or password" +msgstr "" + +#: addons/web_mobile/static/src/xml/web_mobile.xml:0 +msgid "Home" msgstr "" #: addons/web_mobile/static/src/xml/web_mobile.xml:0 @@ -69,3 +65,7 @@ msgstr "" msgid "Preferences" msgstr "" +#: addons/web_mobile/static/src/xml/web_mobile.xml:0 +msgid ":" +msgstr "" + diff --git a/addons/web_mobile/static/src/js/chrome_mobile.js b/addons/web_mobile/static/src/js/chrome_mobile.js index 551856e01fb..ff5601d56df 100644 --- a/addons/web_mobile/static/src/js/chrome_mobile.js +++ b/addons/web_mobile/static/src/js/chrome_mobile.js @@ -5,21 +5,20 @@ openerp.web_mobile.chrome_mobile = function(openerp) { openerp.web_mobile.mobilewebclient = function(element_id) { - // TODO Helper to start mobile webclient rename it openerp.base.webclient + // TODO Helper to start mobile webclient rename it openerp.web.webclient var client = new openerp.web_mobile.MobileWebClient(element_id); client.start(); return client; }; -openerp.web_mobile.MobileWebClient = openerp.base.Widget.extend({ +openerp.web_mobile.MobileWebClient = openerp.web.Widget.extend({ init: function(element_id) { - var self = this; this._super(null, element_id); QWeb.add_template("xml/web_mobile.xml"); var params = {}; this.$element.html(QWeb.render("WebClient", {})); - this.session = new openerp.base.Session("oe_errors"); - this.crashmanager = new openerp.base.CrashManager(this); + this.session = new openerp.web.Session("oe_errors"); + this.crashmanager = new openerp.web.CrashManager(this); this.login = new openerp.web_mobile.Login(this, "oe_app"); // this.session.on_session_invalid.add(this.login.do_ask_login); }, @@ -29,14 +28,11 @@ openerp.web_mobile.MobileWebClient = openerp.base.Widget.extend({ } }); -openerp.web_mobile.Login = openerp.base.Widget.extend({ - init: function(session, element_id) { - this._super(session, element_id); - }, +openerp.web_mobile.Login = openerp.web.Widget.extend({ start: function() { var self = this; jQuery("#oe_header").children().remove(); - this.rpc("/base/database/get_list", {}, function(result) { + this.rpc("/web/database/get_list", {}, function(result) { var selection = new openerp.web_mobile.Selection(); self.db_list = result.db_list; self.$element.html(QWeb.render("Login", self)); @@ -87,7 +83,7 @@ openerp.web_mobile.Login = openerp.base.Widget.extend({ } }); -openerp.web_mobile.HomePage = openerp.base.Widget.extend({ +openerp.web_mobile.HomePage = openerp.web.Widget.extend({ init: function(session, element_id) { this._super(session, element_id); }, @@ -106,7 +102,7 @@ openerp.web_mobile.HomePage = openerp.base.Widget.extend({ } }); -openerp.web_mobile.Header = openerp.base.Widget.extend({ +openerp.web_mobile.Header = openerp.web.Widget.extend({ init: function(session, element_id) { this._super(session, element_id); }, @@ -116,8 +112,8 @@ openerp.web_mobile.Header = openerp.base.Widget.extend({ self.$element.find("a").click(this.on_clicked); }, on_clicked: function(ev) { - $opt = $(ev.currentTarget); - current_id = $opt.attr('id'); + var $opt = $(ev.currentTarget); + var current_id = $opt.attr('id'); if (current_id == 'home') { this.homepage = new openerp.web_mobile.HomePage(this, "oe_app"); this.homepage.start(); @@ -125,28 +121,28 @@ openerp.web_mobile.Header = openerp.base.Widget.extend({ } }); -openerp.web_mobile.Shortcuts = openerp.base.Widget.extend({ +openerp.web_mobile.Shortcuts = openerp.web.Widget.extend({ init: function(session, element_id) { this._super(session, element_id); }, start: function() { var self = this; - this.rpc('/base/session/sc_list',{} ,function(res){ - self.$element.html(QWeb.render("Shortcuts", {'sc' : res})) + this.rpc('/web/session/sc_list',{} ,function(res){ + self.$element.html(QWeb.render("Shortcuts", {'sc' : res})); self.$element.find("a").click(self.on_clicked); }) }, on_clicked: function(ev) { - $shortcut = $(ev.currentTarget); - id = $shortcut.data('menu'); - res_id = $shortcut.data('res'); + var $shortcut = $(ev.currentTarget); + var id = $shortcut.data('menu'); + var res_id = $shortcut.data('res'); jQuery("#oe_header").find("h1").html($shortcut.data('name')); this.listview = new openerp.web_mobile.ListView(this, "oe_app", res_id); this.listview.start(); } }); -openerp.web_mobile.Menu = openerp.base.Widget.extend({ +openerp.web_mobile.Menu = openerp.web.Widget.extend({ init: function(session, element_id, secondary_menu_id) { this._super(session, element_id); this.secondary_menu_id = secondary_menu_id; @@ -154,7 +150,7 @@ openerp.web_mobile.Menu = openerp.base.Widget.extend({ this.menu = false; }, start: function() { - this.rpc("/base/menu/load", {}, this.on_loaded); + this.rpc("/web/menu/load", {}, this.on_loaded); }, on_loaded: function(data) { this.data = data; @@ -162,7 +158,7 @@ openerp.web_mobile.Menu = openerp.base.Widget.extend({ this.$element.add(this.$secondary_menu).find("a").click(this.on_menu_click); }, on_menu_click: function(ev, id) { - $menu = $(ev.currentTarget); + var $menu = $(ev.currentTarget); id = $menu.data('menu'); for (var i = 0; i < this.data.data.children.length; i++) { if (this.data.data.children[i].id == id) { @@ -179,7 +175,7 @@ openerp.web_mobile.Menu = openerp.base.Widget.extend({ } }); -openerp.web_mobile.Secondary = openerp.base.Widget.extend({ +openerp.web_mobile.Secondary = openerp.web.Widget.extend({ init: function(session, element_id, secondary_menu_id) { this._super(session, element_id); this.data = secondary_menu_id; @@ -190,7 +186,7 @@ openerp.web_mobile.Secondary = openerp.base.Widget.extend({ this.$element.add(this.$secondary_menu).find("a").click(this.on_menu_click); }, on_menu_click: function(ev, id) { - $menu = $(ev.currentTarget); + var $menu = $(ev.currentTarget); id = $menu.data('menu'); for (var i = 0; i < this.data.children.length; i++) { if (this.data.children[i].id == id) { @@ -216,10 +212,7 @@ openerp.web_mobile.Secondary = openerp.base.Widget.extend({ } }); -openerp.web_mobile.Options = openerp.base.Widget.extend({ - init: function(session, element_id) { - this._super(session, element_id); - }, +openerp.web_mobile.Options = openerp.web.Widget.extend({ start: function() { var self = this; this.$element.html(QWeb.render("Options", this)); @@ -232,18 +225,11 @@ openerp.web_mobile.Options = openerp.base.Widget.extend({ } }); -openerp.web_mobile.Selection = openerp.base.Widget.extend({ - init: function (){ - this._super(); - }, - start: function(){ - this._super(); - var self = this; - }, +openerp.web_mobile.Selection = openerp.web.Widget.extend({ on_select_option: function(ev){ ev.preventDefault(); var $this = ev.currentTarget; $($this).prev().find(".ui-btn-text").html($($this).find("option:selected").text()); } }); -} +}; diff --git a/addons/web_mobile/static/src/js/form_mobile.js b/addons/web_mobile/static/src/js/form_mobile.js index 4a3e2167c02..03291a70bfa 100644 --- a/addons/web_mobile/static/src/js/form_mobile.js +++ b/addons/web_mobile/static/src/js/form_mobile.js @@ -4,7 +4,7 @@ openerp.web_mobile.form_mobile = function (openerp) { -openerp.web_mobile.FormView = openerp.base.Widget.extend({ +openerp.web_mobile.FormView = openerp.web.Widget.extend({ init: function(session, element_id, list_id, action) { this._super(session, element_id); this.list_id = list_id; @@ -18,17 +18,17 @@ openerp.web_mobile.FormView = openerp.base.Widget.extend({ }, start: function() { var self = this; - id = this.list_id; - model = this.action.res_model; - view_id = this.action.views[1][0]; - this.dataset = new openerp.base.DataSetSearch(this, this.action.res_model, null, null); + var id = this.list_id; + var model = this.action.res_model; + var view_id = this.action.views[1][0]; + this.dataset = new openerp.web.DataSetSearch(this, this.action.res_model, null, null); this.dataset.read_slice([],{}, function (result) { for (var i = 0; i < result.length; i++) { if (result[i].id == id) { var data = result[i]; } } - self.rpc("/base/formview/load", {"model": model, "view_id": view_id }, function (result) { + self.rpc("/web/formview/load", {"model": model, "view_id": view_id }, function (result) { var fields = result.fields_view.fields; var view_fields = result.fields_view.arch.children; var get_fields = self.get_fields(view_fields); @@ -128,4 +128,4 @@ openerp.web_mobile.FormView = openerp.base.Widget.extend({ next.addClass(this.collapsed_class); } }); -} \ No newline at end of file +}; diff --git a/addons/web_mobile/static/src/js/list_mobile.js b/addons/web_mobile/static/src/js/list_mobile.js index b4ba5e08cc3..9bcdc0a72ce 100644 --- a/addons/web_mobile/static/src/js/list_mobile.js +++ b/addons/web_mobile/static/src/js/list_mobile.js @@ -4,13 +4,13 @@ openerp.web_mobile.list_mobile = function (openerp) { -openerp.web_mobile.ListView = openerp.base.Widget.extend({ +openerp.web_mobile.ListView = openerp.web.Widget.extend({ init: function(session, element_id, list_id) { this._super(session, element_id); this.list_id = list_id; }, start: function() { - this.rpc('/base/menu/action', {'menu_id': this.list_id}, + this.rpc('/web/menu/action', {'menu_id': this.list_id}, this.on_menu_action_loaded); }, on_menu_action_loaded: function(data) { @@ -41,7 +41,7 @@ openerp.web_mobile.ListView = openerp.base.Widget.extend({ } var self = this; - var dataset = new openerp.base.DataSetStatic(this, this.action.res_model, this.action.context); + var dataset = new openerp.web.DataSetStatic(this, this.action.res_model, this.action.context); dataset.domain=[['name','ilike',search_val]]; dataset.name_search(search_val, dataset.domain, 'ilike',false ,function(result){ self.$element.html(QWeb.render("ListView", {'records' : result})); @@ -63,11 +63,11 @@ openerp.web_mobile.ListView = openerp.base.Widget.extend({ }); }, on_list_click: function(ev) { - $record = $(ev.currentTarget); + var $record = $(ev.currentTarget); var self = this; - id = $record.data('id'); + var id = $record.data('id'); this.formview = new openerp.web_mobile.FormView(this, "oe_app", id, this.action); this.formview.start(); } }); -} \ No newline at end of file +}; diff --git a/addons/web_mobile/static/src/web_mobile.html b/addons/web_mobile/static/src/web_mobile.html index 6efc28b6532..254c4a6ea36 100755 --- a/addons/web_mobile/static/src/web_mobile.html +++ b/addons/web_mobile/static/src/web_mobile.html @@ -15,7 +15,7 @@ - + @@ -27,6 +27,7 @@