From 066f4425f059bd287b56d9b4a9d69e3b86f30a0f Mon Sep 17 00:00:00 2001 From: Christophe Simonis Date: Mon, 10 Oct 2011 14:31:16 +0200 Subject: [PATCH 01/37] [IMP] allow overwrite of default dbname and login from querystring bzr revid: chs@openerp.com-20111010123116-8ibjek78ub83u7mp --- addons/web/static/src/js/chrome.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/addons/web/static/src/js/chrome.js b/addons/web/static/src/js/chrome.js index 1955298ba27..399751f00c0 100644 --- a/addons/web/static/src/js/chrome.js +++ b/addons/web/static/src/js/chrome.js @@ -487,6 +487,15 @@ openerp.web.Login = openerp.web.Widget.extend(/** @lends openerp.web.Login# */{ this.selected_password = localStorage.getItem('last_password_login_success'); } } + + var qs = jQuery.deparam(jQuery.param.querystring()); + if (qs.db) { + this.selected_db = qs.db; + } + if (qs.login) { + this.selected_login = qs.login; + } + }, start: function() { var self = this; From 27869cac8b76baea212575cf95c351a3cf5aa7d2 Mon Sep 17 00:00:00 2001 From: Christophe Simonis Date: Mon, 10 Oct 2011 14:34:32 +0200 Subject: [PATCH 02/37] [IMP] change the way the sections and items are added to the sidebar bzr revid: chs@openerp.com-20111010123432-619o61elz09jm9sy --- addons/web/static/src/js/view_form.js | 12 +- addons/web/static/src/js/views.js | 139 +++++++++++------- addons/web/static/src/xml/base.xml | 11 +- addons/web_calendar/static/src/js/calendar.js | 18 ++- 4 files changed, 111 insertions(+), 69 deletions(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index f1fab7702c3..af0a9370933 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -119,7 +119,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# this.sidebar = new openerp.web.Sidebar(this, this.options.sidebar_id); this.sidebar.start(); this.sidebar.do_unfold(); - this.sidebar.attachments = new openerp.web.form.SidebarAttachments(this.sidebar, this.sidebar.add_section('attachments', "Attachments"), this); + this.sidebar.attachments = new openerp.web.form.SidebarAttachments(this.sidebar, this); this.sidebar.add_toolbar(this.fields_view.toolbar); this.set_common_sidebar_sections(this.sidebar); } @@ -541,8 +541,12 @@ openerp.web.FormDialog = openerp.web.Dialog.extend({ openerp.web.form = {}; openerp.web.form.SidebarAttachments = openerp.web.Widget.extend({ - init: function(parent, element_id, form_view) { - this._super(parent, element_id); + init: function(parent, form_view) { + var $section = parent.add_section('Attachments'); + this.$div = $('
'); + $section.append(this.$div); + + this._super(parent, $section.attr('id')); this.view = form_view; }, do_update: function() { @@ -560,7 +564,7 @@ openerp.web.form.SidebarAttachments = openerp.web.Widget.extend({ }, on_attachments_loaded: function(attachments) { this.attachments = attachments; - this.$element.html(QWeb.render('FormView.sidebar.attachments', this)); + this.$div.html(QWeb.render('FormView.sidebar.attachments', this)); this.$element.find('.oe-binary-file').change(this.on_attachment_changed); this.$element.find('.oe-sidebar-attachment-delete').click(this.on_attachment_delete); }, diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index aeedee706d8..50ffb4bbbc5 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -512,6 +512,52 @@ db.web.Sidebar = db.web.Widget.extend({ self.do_toggle(); }); }, + + call_default_on_sidebar: function(item) { + var func_name = 'on_sidebar_' + _.underscored(item.label); + var fn = this.widget_parent[func_name]; + if(typeof fn === 'function') { + fn(item); + } + }, + + add_default_sections: function() { + this.add_items('Customize', [ + { + label: "Manage Views", + callback: this.call_default_on_sidebar, + title: "Manage views of the current object" + }, { + label: "Edit Workflow", + callback: this.call_default_on_sidebar, + title: "Manage views of the current object", + classname: 'oe_hide oe_sidebar_edit_workflow' + }, { + label: "Customize Object", + callback: this.call_default_on_sidebar, + title: "Manage views of the current object" + } + ]); + + this.add_items('Other Options', [ + { + label: "Import", + callback: this.call_default_on_sidebar, + }, { + label: "Export", + callback: this.call_default_on_sidebar, + }, { + label: "Translate", + callback: this.call_default_on_sidebar, + classname: 'oe_sidebar_translate oe_hide' + }, { + label: "View Log", + callback: this.call_default_on_sidebar, + classname: 'oe_hide oe_sidebar_view_log' + } + ]); + }, + add_toolbar: function(toolbar) { var self = this; _.each([['print', "Reports"], ['action', "Actions"], ['relate', "Links"]], function(type) { @@ -524,15 +570,29 @@ db.web.Sidebar = db.web.Widget.extend({ classname: 'oe_sidebar_' + type[0] } } - self.add_section(type[0], type[1], items); + self.add_items(type[1], items); } }); }, - add_section: function(code, name, items) { - // For each section, we pass a name/label and optionally an array of items. - // If no items are passed, then the section will be created as a custom section - // returning back an element_id to be used by a custom controller. - // Else, the section is a standard section with items displayed as links. + + add_section: function(name) { + var code = _.underscored(name), + $section = this.sections[code]; + + if(!$section) { + section_id = _.uniqueId(this.element_id + '_section_' + code + '_'); + var $section = $(db.web.qweb.render("Sidebar.section", { + section_id: section_id, + name: name, + classname: 'oe_sidebar_' + code, + })); + $section.appendTo(this.$element.find('div.sidebar-actions')); + this.sections[code] = $section; + } + return $section; + }, + + add_items: function(section_name, items) { // An item is a dictonary : { // label: label to be displayed for the link, // action: action to be launch when the link is clicked, @@ -541,25 +601,24 @@ db.web.Sidebar = db.web.Widget.extend({ // title: optional title for the link // } // Note: The item should have one action or/and a callback + // + var self = this, - section_id = _.uniqueId(this.element_id + '_section_' + code + '_'); + $section = this.add_section(section_name), + section_id = $section.attr('id'); + if (items) { for (var i = 0; i < items.length; i++) { items[i].element_id = _.uniqueId(section_id + '_item_'); this.items[items[i].element_id] = items[i]; } - } - var $section = $(db.web.qweb.render("Sidebar.section", { - section_id: section_id, - name: name, - classname: 'oe_sidebar_' + code, - items: items - })); - if (items) { - $section.find('a.oe_sidebar_action_a').click(function() { + + var $items = $(db.web.qweb.render("Sidebar.section.items", {items: items})); + + $items.find('a.oe_sidebar_action_a').click(function() { var item = self.items[$(this).attr('id')]; if (item.callback) { - item.callback(); + item.callback.apply(self, [item]); } if (item.action) { var ids = self.widget_parent.get_selected_ids(); @@ -589,10 +648,13 @@ db.web.Sidebar = db.web.Widget.extend({ } return false; }); + + var $ul = $section.find('ul'); + if(!$ul.length) { + $ul = $(' - +
  • Fields
  • diff --git a/addons/web_calendar/static/src/js/calendar.js b/addons/web_calendar/static/src/js/calendar.js index da13012608f..e312de5c431 100644 --- a/addons/web_calendar/static/src/js/calendar.js +++ b/addons/web_calendar/static/src/js/calendar.js @@ -84,8 +84,8 @@ openerp.web_calendar.CalendarView = openerp.web.View.extend({ if (this.options.sidebar && this.options.sidebar_id) { this.sidebar = new openerp.web.Sidebar(this, this.options.sidebar_id); this.sidebar.start(); - 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.navigator = new openerp.web_calendar.SidebarNavigator(this.sidebar, this); + this.sidebar.responsible = new openerp.web_calendar.SidebarResponsible(this.sidebar, this); this.sidebar.add_toolbar(this.fields_view.toolbar); this.set_common_sidebar_sections(this.sidebar); this.sidebar.do_unfold(); @@ -362,13 +362,16 @@ openerp.web_calendar.CalendarFormDialog = openerp.web.Dialog.extend({ }); openerp.web_calendar.SidebarResponsible = openerp.web.Widget.extend({ - init: function(parent, element_id, view) { - this._super(parent, element_id); + init: function(parent, view) { + var $section = parent.add_section('Responsible'); + this.$div = $('
    '); + $section.append(this.$div); + this._super(parent, $section.attr('id')); this.view = view; this.$element.delegate('input:checkbox', 'change', this.on_filter_click); }, on_events_loaded: function(filters) { - this.$element.html(QWeb.render('CalendarView.sidebar.responsible', { filters: filters })); + this.$div.html(QWeb.render('CalendarView.sidebar.responsible', { filters: filters })); }, on_filter_click: function(e) { var responsibles = [], @@ -388,8 +391,9 @@ openerp.web_calendar.SidebarResponsible = openerp.web.Widget.extend({ }); openerp.web_calendar.SidebarNavigator = openerp.web.Widget.extend({ - init: function(parent, element_id, view) { - this._super(parent, element_id); + init: function(parent, view) { + var $section = parent.add_section('Navigator'); + this._super(parent, $section.attr('id')); this.view = view; }, on_events_loaded: function(events) { From 23f6c03942c03bdd0823bbee44f7692250da6eb4 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Wed, 12 Oct 2011 10:25:34 +0200 Subject: [PATCH 03/37] [fix] forgot to return promise in the do_save() of the form view bzr revid: nicolas.vanhoren@openerp.com-20111012082534-dzz1upvvntjs4b1s --- addons/web/static/src/js/view_form.js | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index c940f4909e9..3121a91b7dc 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -405,6 +405,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# } }; this.save_lock = this.save_lock.pipe(action, action); + return this.save_lock; }, do_save_edit: function() { this.do_save(); From 2e9c6392ea6c7b11e213db1a8d82793323aa47a4 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 12 Oct 2011 10:57:13 +0200 Subject: [PATCH 04/37] [FIX] remove default_home entirely bzr revid: xmo@openerp.com-20111012085713-upc0xto0dqf9k4fb --- addons/web/static/src/js/core.js | 1 - addons/web_default_home/po/da.po | 38 -------------------------------- 2 files changed, 39 deletions(-) delete mode 100644 addons/web_default_home/po/da.po diff --git a/addons/web/static/src/js/core.js b/addons/web/static/src/js/core.js index 0d5b95ef669..da9c21bf551 100644 --- a/addons/web/static/src/js/core.js +++ b/addons/web/static/src/js/core.js @@ -74,7 +74,6 @@ openerp.web.qweb.debug = (window.location.search.indexOf('?debug') !== -1); } return this; } - // This should NOT be used, like callbackenable it's too hackish not enough javasish Class.include = function (properties) { for (var name in properties) { if (typeof properties[name] !== 'function' diff --git a/addons/web_default_home/po/da.po b/addons/web_default_home/po/da.po deleted file mode 100644 index a56583755e5..00000000000 --- a/addons/web_default_home/po/da.po +++ /dev/null @@ -1,38 +0,0 @@ -# Danish translation for openerp-web -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2011-10-07 10:39+0200\n" -"PO-Revision-Date: 2011-10-11 14:02+0000\n" -"Last-Translator: Jonas Mortensen \n" -"Language-Team: Danish \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-10-12 04:44+0000\n" -"X-Generator: Launchpad (build 14124)\n" - -#: addons/web_default_home/static/src/xml/web_default_home.xml:0 -msgid "Welcome to your new OpenERP instance." -msgstr "Velkommen til din nye OpenERP instans." - -#: addons/web_default_home/static/src/xml/web_default_home.xml:0 -msgid "Remember to bookmark this page." -msgstr "Husk at tilføje denne side til dine favoritter." - -#: addons/web_default_home/static/src/xml/web_default_home.xml:0 -msgid "Remember your login:" -msgstr "Husk dit log ind:" - -#: addons/web_default_home/static/src/xml/web_default_home.xml:0 -msgid "Choose the first OpenERP Application you want to install.." -msgstr "Vælg den første OpenERP Applikation som du ønsker at installere." - -#: addons/web_default_home/static/src/xml/web_default_home.xml:0 -msgid "Install" -msgstr "Installér" From 12e97f3e8e0fa87da5eabcd62c61cf586ac48c6f Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Wed, 12 Oct 2011 10:58:52 +0200 Subject: [PATCH 05/37] [fix] problem with get_value() on o2m when it is called without calling is_dirty() first. bzr revid: nicolas.vanhoren@openerp.com-20111012085852-6tcqn1rmn00qoaqy --- addons/web/static/src/js/view_form.js | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 3121a91b7dc..55957388720 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -2003,6 +2003,7 @@ openerp.web.form.FieldOne2Many = openerp.web.form.Field.extend({ var self = this; if (!this.dataset) return []; + this.save_form_view(); var val = this.dataset.delete_all ? [commands.delete_all()] : []; val = val.concat(_.map(this.dataset.ids, function(id) { var alter_order = _.detect(self.dataset.to_create, function(x) {return x.id === id;}); From bfbfbc4ac64bd135d5116f4094a78b24d31ba0f2 Mon Sep 17 00:00:00 2001 From: Vo Minh Thu Date: Wed, 12 Oct 2011 11:03:57 +0200 Subject: [PATCH 06/37] [FIX] orm.copy(): corrected return value in docstring. bzr revid: vmt@openerp.com-20111012090357-2lt8md5s37qp2vm1 --- openerp/osv/orm.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index ad40ac66093..ac84d6df713 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -4598,7 +4598,7 @@ class BaseModel(object): :type default: dictionary :param context: context arguments, like lang, time zone :type context: dictionary - :return: True + :return: id of the newly created record """ if context is None: From bd8f7a36a65f40b8f9112de219297daa725ae320 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Wed, 12 Oct 2011 11:11:47 +0200 Subject: [PATCH 07/37] [fix] occasional problem when a form try to validate a o2m before it finished updating bzr revid: nicolas.vanhoren@openerp.com-20111012091147-k9nm1yzftm2oalo1 --- addons/web/static/src/js/view_form.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 55957388720..02832f49250 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -2041,6 +2041,8 @@ openerp.web.form.FieldOne2Many = openerp.web.form.Field.extend({ }, validate: function() { this.invalid = false; + if (!this.viewmanager.views[this.viewmanager.active_view]) + return; var view = this.viewmanager.views[this.viewmanager.active_view].controller; if (this.viewmanager.active_view === "form") { for (var f in view.fields) { From a7a73ee0c0efa56144f2d6c9572b06079d2d3a92 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 12 Oct 2011 11:00:38 +0200 Subject: [PATCH 08/37] [FIX] don't hide errors under the carpet bzr revid: xmo@openerp.com-20111012090038-o52egjn334s53a1s --- addons/web_dashboard/controllers.py | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/addons/web_dashboard/controllers.py b/addons/web_dashboard/controllers.py index ebf74837899..37fe039366c 100644 --- a/addons/web_dashboard/controllers.py +++ b/addons/web_dashboard/controllers.py @@ -22,11 +22,7 @@ class Widgets(openerpweb.Controller): _cp_path = '/web_dashboard/widgets' @openerpweb.httprequest - def content(self, req, widget_id): - Widget = req.session.model('res.widget') - w = Widget.read([widget_id], ['content'], req.session.eval_context(req.context)) - if w: - r = WIDGET_CONTENT_PATTERN % w[0] - else: - r = "Widget unavailable" - return r + def content(self, request, widget_id): + return WIDGET_CONTENT_PATTERN % request.session.model('res.widget').read( + [widget_id], ['content'], request.session.eval_context(request.context) + )[0] From 8b00901409337144b339b32c6a3209ab7e452ac3 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 12 Oct 2011 11:03:35 +0200 Subject: [PATCH 09/37] [FIX] widgets not being correctly fetched: widget ids are integers, HTTP GET provides strings, need to convert bzr revid: xmo@openerp.com-20111012090335-f2ljdgmhmz7pyurg --- addons/web_dashboard/controllers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/web_dashboard/controllers.py b/addons/web_dashboard/controllers.py index 37fe039366c..0f6ae5dad7d 100644 --- a/addons/web_dashboard/controllers.py +++ b/addons/web_dashboard/controllers.py @@ -24,5 +24,5 @@ class Widgets(openerpweb.Controller): @openerpweb.httprequest def content(self, request, widget_id): return WIDGET_CONTENT_PATTERN % request.session.model('res.widget').read( - [widget_id], ['content'], request.session.eval_context(request.context) + [int(widget_id)], ['content'], request.session.eval_context(request.context) )[0] From 7a8d4be486e38b840329351308b45c00d1057ab1 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Wed, 12 Oct 2011 11:30:31 +0200 Subject: [PATCH 10/37] [FIX] Menus, manual triggering of menus does not work when folded bzr revid: fme@openerp.com-20111012093031-3htkczhktnascdcg --- addons/web/static/src/js/chrome.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/addons/web/static/src/js/chrome.js b/addons/web/static/src/js/chrome.js index 1955298ba27..3b08cc9d36d 100644 --- a/addons/web/static/src/js/chrome.js +++ b/addons/web/static/src/js/chrome.js @@ -823,7 +823,9 @@ openerp.web.Menu = openerp.web.Widget.extend(/** @lends openerp.web.Menu# */{ this.session.active_id = id; this.rpc('/web/menu/action', {'menu_id': id}, this.on_menu_action_loaded); } - ev.stopPropagation(); + if (ev) { + ev.stopPropagation(); + } return false; }, do_menu_click: function($clicked_menu, manual) { @@ -866,6 +868,7 @@ openerp.web.Menu = openerp.web.Widget.extend(/** @lends openerp.web.Menu# */{ $sub_menu.hide(); return true; } + return manual; } else { return true; } From 4d582fbd0628a6bb37b5b6499ab757205e03c568 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Wed, 12 Oct 2011 11:31:53 +0200 Subject: [PATCH 11/37] [IMP] Homepage: use manual menu triggering for application tiles bzr revid: fme@openerp.com-20111012093153-50sh65dvhw3cds8k --- addons/web_dashboard/static/src/js/dashboard.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/addons/web_dashboard/static/src/js/dashboard.js b/addons/web_dashboard/static/src/js/dashboard.js index 3163453a122..545f453a27e 100644 --- a/addons/web_dashboard/static/src/js/dashboard.js +++ b/addons/web_dashboard/static/src/js/dashboard.js @@ -446,10 +446,8 @@ openerp.web_dashboard.ApplicationTiles = openerp.web.View.extend({ self.$element.append(tiles) .find('.oe-dashboard-home-tile') .click(function () { - var $this = $(this); - $this.closest('.openerp') - .find('.menu a[data-menu=' + $this.data('menuid') + ']') - .click();}); + openerp.webclient.menu.on_menu_click(null, $(this).data('menuid')) + }); }); return r; }, From 2ec5a68b255f3785766727b6487eb58d78f98e4e Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Wed, 12 Oct 2011 11:38:00 +0200 Subject: [PATCH 12/37] [fix] removed useless key record_id in many menu items in accounting, was useless and made web client crash bzr revid: nicolas.vanhoren@openerp.com-20111012093800-jhspdvekym3czv19 --- addons/account/test/account_change_currency.yml | 6 +++--- addons/account/wizard/account_automatic_reconcile_view.xml | 2 +- addons/account/wizard/account_change_currency_view.xml | 2 +- .../wizard/account_reconcile_partner_process_view.xml | 2 +- .../wizard/account_report_aged_partner_balance_view.xml | 2 +- .../account/wizard/account_report_partner_balance_view.xml | 2 +- .../account/wizard/account_report_partner_ledger_view.xml | 2 +- addons/account/wizard/account_state_open_view.xml | 2 +- addons/account/wizard/account_unreconcile_view.xml | 2 +- addons/account/wizard/account_validate_move_view.xml | 2 +- 10 files changed, 12 insertions(+), 12 deletions(-) diff --git a/addons/account/test/account_change_currency.yml b/addons/account/test/account_change_currency.yml index 479afd2f2e2..5ec7405d719 100644 --- a/addons/account/test/account_change_currency.yml +++ b/addons/account/test/account_change_currency.yml @@ -33,11 +33,11 @@ - !python {model: account.change.currency}: | self.view_init(cr, uid, [ref("account_change_currency_0")], {"lang": 'en_US', - "active_model": "account.invoice", "tz": False, "record_id": 4, "active_ids": + "active_model": "account.invoice", "tz": False, "active_ids": [ref("account_invoice_currency")], "type": "out_invoice", "active_id": ref("account_invoice_currency"), }) self.change_currency(cr, uid, [ref("account_change_currency_0")], {"lang": 'en_US', - "active_model": "account.invoice", "tz": False, "record_id": 4, "active_ids": + "active_model": "account.invoice", "tz": False, "active_ids": [ref("account_invoice_currency")], "type": "out_invoice", "active_id": ref("account_invoice_currency"), }) - @@ -71,7 +71,7 @@ - !python {model: account.change.currency}: | self.change_currency(cr, uid, [ref("account_change_currency_0")], {"lang": 'en_US', - "active_model": "account.invoice", "tz": False, "record_id": 4, "active_ids": + "active_model": "account.invoice", "tz": False, "active_ids": [ref("account_invoice_currency")], "type": "out_invoice", "active_id": ref("account_invoice_currency"), }) - diff --git a/addons/account/wizard/account_automatic_reconcile_view.xml b/addons/account/wizard/account_automatic_reconcile_view.xml index a18adaa0320..a2fe0b3c689 100644 --- a/addons/account/wizard/account_automatic_reconcile_view.xml +++ b/addons/account/wizard/account_automatic_reconcile_view.xml @@ -42,7 +42,7 @@ form tree,form - {'record_id':active_id} + {} new diff --git a/addons/account/wizard/account_change_currency_view.xml b/addons/account/wizard/account_change_currency_view.xml index 336766a2f42..4504f064a1d 100644 --- a/addons/account/wizard/account_change_currency_view.xml +++ b/addons/account/wizard/account_change_currency_view.xml @@ -25,7 +25,7 @@ form form - {'record_id' : active_id} + {} new diff --git a/addons/account/wizard/account_reconcile_partner_process_view.xml b/addons/account/wizard/account_reconcile_partner_process_view.xml index 457e144e4ab..d7ac5e85d07 100644 --- a/addons/account/wizard/account_reconcile_partner_process_view.xml +++ b/addons/account/wizard/account_reconcile_partner_process_view.xml @@ -28,7 +28,7 @@ form tree,form - {'record_id':active_id} + {} new diff --git a/addons/account/wizard/account_report_aged_partner_balance_view.xml b/addons/account/wizard/account_report_aged_partner_balance_view.xml index fb0952e4614..bd54b925eea 100644 --- a/addons/account/wizard/account_report_aged_partner_balance_view.xml +++ b/addons/account/wizard/account_report_aged_partner_balance_view.xml @@ -37,7 +37,7 @@ form tree,form - {'record_id':active_id} + {} new diff --git a/addons/account/wizard/account_report_partner_balance_view.xml b/addons/account/wizard/account_report_partner_balance_view.xml index 679ef1aa456..6dbe6d7b77b 100644 --- a/addons/account/wizard/account_report_partner_balance_view.xml +++ b/addons/account/wizard/account_report_partner_balance_view.xml @@ -29,7 +29,7 @@ form tree,form - {'record_id':active_id} + {} new This report is analysis by partner. It is a PDF report containing one line per partner representing the cumulative credit balance. diff --git a/addons/account/wizard/account_report_partner_ledger_view.xml b/addons/account/wizard/account_report_partner_ledger_view.xml index 97dcdf8d3f2..c3c731c1954 100644 --- a/addons/account/wizard/account_report_partner_ledger_view.xml +++ b/addons/account/wizard/account_report_partner_ledger_view.xml @@ -34,7 +34,7 @@ form tree,form - {'record_id':active_id} + {} new diff --git a/addons/account/wizard/account_state_open_view.xml b/addons/account/wizard/account_state_open_view.xml index 563a15bff73..d3b68cb5186 100644 --- a/addons/account/wizard/account_state_open_view.xml +++ b/addons/account/wizard/account_state_open_view.xml @@ -27,7 +27,7 @@ form form - {'record_id' : active_id} + {} new diff --git a/addons/account/wizard/account_unreconcile_view.xml b/addons/account/wizard/account_unreconcile_view.xml index 714d64fb400..2efe457b1e2 100644 --- a/addons/account/wizard/account_unreconcile_view.xml +++ b/addons/account/wizard/account_unreconcile_view.xml @@ -64,7 +64,7 @@ form form - {'record_id' : active_id} + {} new diff --git a/addons/account/wizard/account_validate_move_view.xml b/addons/account/wizard/account_validate_move_view.xml index fa3a2774a77..d12ae8d847f 100644 --- a/addons/account/wizard/account_validate_move_view.xml +++ b/addons/account/wizard/account_validate_move_view.xml @@ -66,7 +66,7 @@ form form - {'record_id' : active_id} + {} new This wizard will validate all journal entries of a particular journal and period. Once journal entries are validated, you can not update them anymore. From aaee11e85a1f0b340ed79dee9fae1f3ce56b3746 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Wed, 12 Oct 2011 12:15:04 +0200 Subject: [PATCH 13/37] [IMP] Improved dashboard styling bzr revid: fme@openerp.com-20111012101504-6xv34uolwizdb7t6 --- addons/web_dashboard/static/src/css/dashboard.css | 4 ++++ addons/web_dashboard/static/src/xml/web_dashboard.xml | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/addons/web_dashboard/static/src/css/dashboard.css b/addons/web_dashboard/static/src/css/dashboard.css index 4d48cd4ffbd..54b1cc7d2b5 100644 --- a/addons/web_dashboard/static/src/css/dashboard.css +++ b/addons/web_dashboard/static/src/css/dashboard.css @@ -34,6 +34,10 @@ -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; } +.openerp h2.oe-dashboard-action-header-empty { + padding-top: 0; + padding-bottom: 2px; +} .openerp a.oe-dashboard-action-rename { float: left; diff --git a/addons/web_dashboard/static/src/xml/web_dashboard.xml b/addons/web_dashboard/static/src/xml/web_dashboard.xml index fe96d72855d..87222baa5fd 100644 --- a/addons/web_dashboard/static/src/xml/web_dashboard.xml +++ b/addons/web_dashboard/static/src/xml/web_dashboard.xml @@ -30,9 +30,10 @@
    -

    +

    + &nbsp; From 8ae08903824e467c4352395d2c2a973d77a8c31a Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 12 Oct 2011 11:28:51 +0200 Subject: [PATCH 14/37] [IMP] simplify finding out if a category is installed bzr revid: xmo@openerp.com-20111012092851-ce1klfj272bscn89 --- addons/web_dashboard/static/src/js/dashboard.js | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/addons/web_dashboard/static/src/js/dashboard.js b/addons/web_dashboard/static/src/js/dashboard.js index 545f453a27e..0eac5623b45 100644 --- a/addons/web_dashboard/static/src/js/dashboard.js +++ b/addons/web_dashboard/static/src/js/dashboard.js @@ -420,18 +420,15 @@ openerp.web_dashboard.ApplicationTiles = openerp.web.View.extend({ // Check for installed application var Installer = new openerp.web.DataSet(this, 'base.setup.installer'); Installer.call('default_get', [], function (installed_modules) { - var installed = false; - _.each(installed_modules, function(v,k) { - if(_.startsWith(k,"cat")) { - installed =installed || v; - } - }); + var installed = _(installed_modules).any(function (active, name) { + return _.startsWith(name, 'cat') && active; }); + if(installed) { self.do_display_root_menu(); } else { self.do_display_installer(); } - } ); + }); }, do_display_root_menu: function() { var self = this; From 5d7cf9c8f83b58138fba0fe7bfa8827d8895912a Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Wed, 12 Oct 2011 13:09:28 +0200 Subject: [PATCH 15/37] [IMP] Reload menu after installation wizardsi Hardcoded check for action.context.active_model === 'base.module.upgrade' in ir_actions_act_window_close. If you have a better solution, do not hesitate to propose it bzr revid: fme@openerp.com-20111012110928-kcjstqt28sh7nhky --- addons/web/static/src/js/views.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index f996b4149ed..210be479818 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -121,6 +121,9 @@ db.web.ActionManager = db.web.Widget.extend({ if (!this.dialog && on_closed) { on_closed(); } + if (this.dialog && action.context && action.context.active_model === 'base.module.upgrade') { + db.webclient.menu.reload(); + } this.dialog_stop(); }, ir_actions_server: function (action, on_closed) { From 492facf3c51fc224637ae0197d57c6c6688dc4fc Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Wed, 12 Oct 2011 13:11:42 +0200 Subject: [PATCH 16/37] [fix] problem with osv defining the "id" field, it must always be readonly bzr revid: nicolas.vanhoren@openerp.com-20111012111142-2ejg2u85364al7jy --- addons/base_calendar/base_calendar.py | 2 +- addons/crm/crm_lead.py | 2 +- addons/crm/crm_meeting.py | 2 +- addons/crm/crm_phonecall.py | 2 +- addons/crm_fundraising/crm_fundraising.py | 2 +- addons/project/project.py | 2 +- addons/project_issue/project_issue.py | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/addons/base_calendar/base_calendar.py b/addons/base_calendar/base_calendar.py index 3c6a36b965e..18f267a1df1 100644 --- a/addons/base_calendar/base_calendar.py +++ b/addons/base_calendar/base_calendar.py @@ -1005,7 +1005,7 @@ class calendar_event(osv.osv): return result _columns = { - 'id': fields.integer('ID'), + 'id': fields.integer('ID', readonly=True), 'sequence': fields.integer('Sequence'), 'name': fields.char('Description', size=64, required=False, states={'done': [('readonly', True)]}), 'date': fields.datetime('Date', states={'done': [('readonly', True)]}), diff --git a/addons/crm/crm_lead.py b/addons/crm/crm_lead.py index d09e0bf8ba5..b53028c952a 100644 --- a/addons/crm/crm_lead.py +++ b/addons/crm/crm_lead.py @@ -133,7 +133,7 @@ class crm_lead(crm_case, osv.osv): 'partner_id': fields.many2one('res.partner', 'Partner', ondelete='set null', select=True, help="Optional linked partner, usually after conversion of the lead"), - 'id': fields.integer('ID'), + 'id': fields.integer('ID', readonly=True), 'name': fields.char('Name', size=64, select=1), 'active': fields.boolean('Active', required=False), 'date_action_last': fields.datetime('Last Action', readonly=1), diff --git a/addons/crm/crm_meeting.py b/addons/crm/crm_meeting.py index c3381601cbf..40ba8662f13 100644 --- a/addons/crm/crm_meeting.py +++ b/addons/crm/crm_meeting.py @@ -52,7 +52,7 @@ class crm_meeting(crm_base, osv.osv): 'section_id': fields.many2one('crm.case.section', 'Sales Team', states={'done': [('readonly', True)]}, \ select=True, help='Sales team to which Case belongs to.'), 'email_from': fields.char('Email', size=128, states={'done': [('readonly', True)]}, help="These people will receive email."), - 'id': fields.integer('ID'), + 'id': fields.integer('ID', readonly=True), 'create_date': fields.datetime('Creation Date' , readonly=True), 'write_date': fields.datetime('Write Date' , readonly=True), 'date_action_last': fields.datetime('Last Action', readonly=1), diff --git a/addons/crm/crm_phonecall.py b/addons/crm/crm_phonecall.py index d5d7d6c5614..748f85ad063 100644 --- a/addons/crm/crm_phonecall.py +++ b/addons/crm/crm_phonecall.py @@ -34,7 +34,7 @@ class crm_phonecall(crm_base, osv.osv): _order = "id desc" _columns = { # From crm.case - 'id': fields.integer('ID'), + 'id': fields.integer('ID', readonly=True), 'name': fields.char('Call Summary', size=64), 'active': fields.boolean('Active', required=False), 'date_action_last': fields.datetime('Last Action', readonly=1), diff --git a/addons/crm_fundraising/crm_fundraising.py b/addons/crm_fundraising/crm_fundraising.py index a935162e98e..07ba7460dec 100644 --- a/addons/crm_fundraising/crm_fundraising.py +++ b/addons/crm_fundraising/crm_fundraising.py @@ -33,7 +33,7 @@ class crm_fundraising(crm.crm_case, osv.osv): _order = "id desc" _inherit = ['mail.thread'] _columns = { - 'id': fields.integer('ID'), + 'id': fields.integer('ID', readonly=True), 'name': fields.char('Name', size=128, required=True), 'active': fields.boolean('Active', required=False), 'date_action_last': fields.datetime('Last Action', readonly=1), diff --git a/addons/project/project.py b/addons/project/project.py index 967bd4ebbd3..05bed8a9b9a 100644 --- a/addons/project/project.py +++ b/addons/project/project.py @@ -469,7 +469,7 @@ class task(osv.osv): 'work_ids': fields.one2many('project.task.work', 'task_id', 'Work done'), 'manager_id': fields.related('project_id', 'analytic_account_id', 'user_id', type='many2one', relation='res.users', string='Project Manager'), 'company_id': fields.many2one('res.company', 'Company'), - 'id': fields.integer('ID'), + 'id': fields.integer('ID', readonly=True), 'color': fields.integer('Color Index'), } diff --git a/addons/project_issue/project_issue.py b/addons/project_issue/project_issue.py index 74a78a9808a..e94349e028f 100644 --- a/addons/project_issue/project_issue.py +++ b/addons/project_issue/project_issue.py @@ -180,7 +180,7 @@ class project_issue(crm.crm_case, osv.osv): return res _columns = { - 'id': fields.integer('ID'), + 'id': fields.integer('ID', readonly=True), 'name': fields.char('Issue', size=128, required=True), 'active': fields.boolean('Active', required=False), 'create_date': fields.datetime('Creation Date', readonly=True,select=True), From 56fdc587afed0dcebdf169b7b72dfc7ebf295786 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 12 Oct 2011 13:14:29 +0200 Subject: [PATCH 17/37] [FIX} incorrect condition for not going into colors management on tree views bzr revid: xmo@openerp.com-20111012111429-duldg0ko9wuq2zje --- addons/web/static/src/js/view_tree.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/web/static/src/js/view_tree.js b/addons/web/static/src/js/view_tree.js index 78818c069c0..5143adb3838 100644 --- a/addons/web/static/src/js/view_tree.js +++ b/addons/web/static/src/js/view_tree.js @@ -110,7 +110,7 @@ openerp.web.TreeView = openerp.web.View.extend(/** @lends openerp.web.TreeView# } }); - if (this.fields_view.arch.attrs.colors) { + if (!this.fields_view.arch.attrs.colors) { return; } this.colors = _(this.fields_view.arch.attrs.colors.split(';')).chain() From 230d99a228f73152c14cfd2e75dbfd8e351e700d Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Wed, 12 Oct 2011 13:43:31 +0200 Subject: [PATCH 18/37] [IMP] Added condition for menu reloading bzr revid: fme@openerp.com-20111012114331-7h9hask2nvy0m93d --- addons/web/static/src/js/views.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index 210be479818..1fa963b5180 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -121,8 +121,11 @@ db.web.ActionManager = db.web.Widget.extend({ if (!this.dialog && on_closed) { on_closed(); } - if (this.dialog && action.context && action.context.active_model === 'base.module.upgrade') { - db.webclient.menu.reload(); + if (this.dialog && action.context) { + var model = action.context.active_model; + if (model === 'base.module.upgrade' || model === 'base.setup.installer') { + db.webclient.menu.reload(); + } } this.dialog_stop(); }, From 4ece4f2d3cc58adf89abec5ddb99c1dea008d490 Mon Sep 17 00:00:00 2001 From: Antony Lesuisse Date: Wed, 12 Oct 2011 14:04:16 +0200 Subject: [PATCH 19/37] [FIX] default database of pos to work on runbot bzr revid: al@openerp.com-20111012120416-73of3xsubvnopyng --- addons/point_of_sale/static/src/pos.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/point_of_sale/static/src/pos.html b/addons/point_of_sale/static/src/pos.html index e87b6cc64a4..2484e0a612c 100644 --- a/addons/point_of_sale/static/src/pos.html +++ b/addons/point_of_sale/static/src/pos.html @@ -33,7 +33,7 @@ var db = openerp.init(); openerp.point_of_sale(db); var session = new db.web.Session('DEBUG'); - session.session_login('addons-trunk', 'admin', 'admin').then(function() { + session.session_login('addons-trunk_all', 'admin', 'admin').then(function() { var pos = new db.point_of_sale.PointOfSale({session: session}); pos.appendTo($("body")); }); From 177ca871c9a220543bbe2012f95339a679b8c27a Mon Sep 17 00:00:00 2001 From: "Quentin (OpenERP)" Date: Tue, 11 Oct 2011 16:47:44 +0200 Subject: [PATCH 20/37] [FIX] account_voucher: amount currency in voucher entries bzr revid: qdp-launchpad@openerp.com-20111011144744-pqf9tth1p1osh8wt --- addons/account/account_move_line.py | 2 +- addons/account_voucher/account_voucher.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/account/account_move_line.py b/addons/account/account_move_line.py index 92d71339168..e105765a31c 100644 --- a/addons/account/account_move_line.py +++ b/addons/account/account_move_line.py @@ -1259,7 +1259,7 @@ class account_move_line(osv.osv): break # Automatically convert in the account's secondary currency if there is one and # the provided values were not already multi-currency - if account.currency_id and not vals.get('ammount_currency') and account.currency_id.id != account.company_id.currency_id.id: + if account.currency_id and (vals.get('amount_currency', False) is False) and account.currency_id.id != account.company_id.currency_id.id: vals['currency_id'] = account.currency_id.id ctx = {} if 'date' in vals: diff --git a/addons/account_voucher/account_voucher.py b/addons/account_voucher/account_voucher.py index 005e5d9ab46..b4d354c4b43 100644 --- a/addons/account_voucher/account_voucher.py +++ b/addons/account_voucher/account_voucher.py @@ -781,7 +781,7 @@ class account_voucher(osv.osv): if not (tax_data.base_code_id and tax_data.tax_code_id): raise osv.except_osv(_('No Account Base Code and Account Tax Code!'),_("You have to configure account base code and account tax code on the '%s' tax!") % (tax_data.name)) sign = (move_line['debit'] - move_line['credit']) < 0 and -1 or 1 - move_line['amount_currency'] = company_currency <> current_currency and sign * line.amount or 0.0 + move_line['amount_currency'] = company_currency <> current_currency and sign * line.amount or False voucher_line = move_line_pool.create(cr, uid, move_line) rec_ids = [voucher_line, line.move_line_id.id] @@ -843,8 +843,8 @@ class account_voucher(osv.osv): 'date': inv.date, 'credit': diff > 0 and diff or 0.0, 'debit': diff < 0 and -diff or 0.0, - #'amount_currency': company_currency <> current_currency and currency_pool.compute(cr, uid, company_currency, current_currency, diff * -1, context=context_multi_currency) or 0.0, - #'currency_id': company_currency <> current_currency and current_currency or False, + 'amount_currency': company_currency <> current_currency and inv.writeoff_amount or False, + 'currency_id': company_currency <> current_currency and current_currency or False, } move_line_pool.create(cr, uid, move_line) self.write(cr, uid, [inv.id], { From 32d2e527fb64a28d8b25260c8e1427068b91319b Mon Sep 17 00:00:00 2001 From: Christophe Simonis Date: Wed, 12 Oct 2011 11:54:26 +0200 Subject: [PATCH 21/37] [FIX] explicitly provide the code of sidebar sections bzr revid: chs@openerp.com-20111012095426-qb3see19uic61jr1 --- addons/web/static/src/js/views.js | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index 50ffb4bbbc5..5837431530c 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -522,7 +522,8 @@ db.web.Sidebar = db.web.Widget.extend({ }, add_default_sections: function() { - this.add_items('Customize', [ + this.add_section('Customize', 'customize'); + this.add_items('customize', [ { label: "Manage Views", callback: this.call_default_on_sidebar, @@ -539,7 +540,8 @@ db.web.Sidebar = db.web.Widget.extend({ } ]); - this.add_items('Other Options', [ + this.add_section('Other Options', 'other'); + this.add_items('other', [ { label: "Import", callback: this.call_default_on_sidebar, @@ -570,14 +572,15 @@ db.web.Sidebar = db.web.Widget.extend({ classname: 'oe_sidebar_' + type[0] } } - self.add_items(type[1], items); + self.add_section(type[1], type[0]); + self.add_items(type[0], items); } }); }, - add_section: function(name) { - var code = _.underscored(name), - $section = this.sections[code]; + add_section: function(name, code) { + if(!code) code = _.userscored(name); + var $section = this.sections[code]; if(!$section) { section_id = _.uniqueId(this.element_id + '_section_' + code + '_'); @@ -592,7 +595,7 @@ db.web.Sidebar = db.web.Widget.extend({ return $section; }, - add_items: function(section_name, items) { + add_items: function(section_code, items) { // An item is a dictonary : { // label: label to be displayed for the link, // action: action to be launch when the link is clicked, @@ -604,7 +607,7 @@ db.web.Sidebar = db.web.Widget.extend({ // var self = this, - $section = this.add_section(section_name), + $section = this.add_section(_.titleize(section_code.replace('_', ' ')), section_code), section_id = $section.attr('id'); if (items) { From 1dfd69590d49db4ff8730ad656230ec921edba62 Mon Sep 17 00:00:00 2001 From: Christophe Simonis Date: Wed, 12 Oct 2011 12:18:02 +0200 Subject: [PATCH 22/37] [IMP] _t() sidebar bzr revid: chs@openerp.com-20111012101802-fdrjaj80x03hx7xz --- addons/web/static/src/js/views.js | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index 5837431530c..b4f65023e11 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -522,38 +522,38 @@ db.web.Sidebar = db.web.Widget.extend({ }, add_default_sections: function() { - this.add_section('Customize', 'customize'); + this.add_section(_t('Customize'), 'customize'); this.add_items('customize', [ { - label: "Manage Views", + label: _t("Manage Views"), callback: this.call_default_on_sidebar, - title: "Manage views of the current object" + title: _t("Manage views of the current object"), }, { - label: "Edit Workflow", + label: _t("Edit Workflow"), callback: this.call_default_on_sidebar, - title: "Manage views of the current object", + title: _t("Manage views of the current object"), classname: 'oe_hide oe_sidebar_edit_workflow' }, { - label: "Customize Object", + label: _t("Customize Object"), callback: this.call_default_on_sidebar, - title: "Manage views of the current object" + title: _t("Manage views of the current object"), } ]); - this.add_section('Other Options', 'other'); + this.add_section(_t('Other Options'), 'other'); this.add_items('other', [ { - label: "Import", + label: _t("Import"), callback: this.call_default_on_sidebar, }, { - label: "Export", + label: _t("Export"), callback: this.call_default_on_sidebar, }, { - label: "Translate", + label: _t("Translate"), callback: this.call_default_on_sidebar, classname: 'oe_sidebar_translate oe_hide' }, { - label: "View Log", + label: _t("View Log"), callback: this.call_default_on_sidebar, classname: 'oe_hide oe_sidebar_view_log' } @@ -562,7 +562,7 @@ db.web.Sidebar = db.web.Widget.extend({ add_toolbar: function(toolbar) { var self = this; - _.each([['print', "Reports"], ['action', "Actions"], ['relate', "Links"]], function(type) { + _.each([['print', _t("Reports")], ['action', _t("Actions")], ['relate', _t("Links")]], function(type) { var items = toolbar[type[0]]; if (items.length) { for (var i = 0; i < items.length; i++) { From 7b6309dd1537e6b653cfb901c7a424c56a63ca9b Mon Sep 17 00:00:00 2001 From: Christophe Simonis Date: Wed, 12 Oct 2011 13:57:44 +0200 Subject: [PATCH 23/37] [FIX] translation of attachment and calendar sidebar sections bzr revid: chs@openerp.com-20111012115744-sv7kvwqbt2p5vdio --- addons/web/static/src/js/view_form.js | 2 +- addons/web_calendar/static/src/js/calendar.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index af0a9370933..de360500c4e 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -542,7 +542,7 @@ openerp.web.form = {}; openerp.web.form.SidebarAttachments = openerp.web.Widget.extend({ init: function(parent, form_view) { - var $section = parent.add_section('Attachments'); + var $section = parent.add_section(_t('Attachments'), 'attachments'); this.$div = $('
    '); $section.append(this.$div); diff --git a/addons/web_calendar/static/src/js/calendar.js b/addons/web_calendar/static/src/js/calendar.js index e312de5c431..de2ae89b91e 100644 --- a/addons/web_calendar/static/src/js/calendar.js +++ b/addons/web_calendar/static/src/js/calendar.js @@ -363,7 +363,7 @@ openerp.web_calendar.CalendarFormDialog = openerp.web.Dialog.extend({ openerp.web_calendar.SidebarResponsible = openerp.web.Widget.extend({ init: function(parent, view) { - var $section = parent.add_section('Responsible'); + var $section = parent.add_section(_t('Responsible'), 'responsible'); this.$div = $('
    '); $section.append(this.$div); this._super(parent, $section.attr('id')); @@ -392,7 +392,7 @@ openerp.web_calendar.SidebarResponsible = openerp.web.Widget.extend({ openerp.web_calendar.SidebarNavigator = openerp.web.Widget.extend({ init: function(parent, view) { - var $section = parent.add_section('Navigator'); + var $section = parent.add_section(_t('Navigator'), 'navigator'); this._super(parent, $section.attr('id')); this.view = view; }, From eb796396e03f2e4fd5a4d267c7597218d67c7c16 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 12 Oct 2011 14:09:38 +0200 Subject: [PATCH 24/37] [ADD] display of selection fields in format_value bzr revid: xmo@openerp.com-20111012120938-9lpxm6mf8jbde6oj --- addons/web/static/src/js/formats.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/addons/web/static/src/js/formats.js b/addons/web/static/src/js/formats.js index d3d88bc3731..94b2c7085db 100644 --- a/addons/web/static/src/js/formats.js +++ b/addons/web/static/src/js/formats.js @@ -69,6 +69,13 @@ openerp.web.format_value = function (value, descriptor, value_if_empty) { } catch (e) { return value.format("%H:%M:%S"); } + case 'selection': + // Each choice is [value, label] + var result = _(descriptor.selection).detect(function (choice) { + return choice[0] === value; + }); + if (result) { return result[1]; } + return; default: return value; } From 378a9de3e861f121e715278ef863fdc924ea3f3f Mon Sep 17 00:00:00 2001 From: Christophe Simonis Date: Wed, 12 Oct 2011 14:26:22 +0200 Subject: [PATCH 25/37] [FIX] hum hum bzr revid: chs@openerp.com-20111012122622-dcuhelpcgv119s6g --- addons/web/static/src/js/views.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index b4f65023e11..91ac8f39031 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -579,7 +579,7 @@ db.web.Sidebar = db.web.Widget.extend({ }, add_section: function(name, code) { - if(!code) code = _.userscored(name); + if(!code) code = _.underscored(name); var $section = this.sections[code]; if(!$section) { From 130e4411335e46f832d129f5ab58424f20cc555b Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Wed, 12 Oct 2011 14:49:23 +0200 Subject: [PATCH 26/37] [fix] fixed rare problem in the o2m when we try to get its value before it has finished refreshing bzr revid: nicolas.vanhoren@openerp.com-20111012124923-zka6mskg56iha5wc --- addons/web/static/src/js/view_form.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index ebc895df673..c8fef313854 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -1937,9 +1937,10 @@ openerp.web.form.FieldOne2Many = openerp.web.form.Field.extend({ if (this.dataset.index === null && this.dataset.ids.length >= 1) { this.dataset.index = 0; } - this.form_last_update.then(function() { - this.form_last_update = view.do_show(); - }); + var act = function() { + return view.do_show(); + } + this.form_last_update = this.form_last_update.pipe(act, act);; } else if (self.viewmanager.active_view === "graph") { view.do_search(this.build_domain(), this.dataset.get_context(), []); } @@ -2007,7 +2008,8 @@ openerp.web.form.FieldOne2Many = openerp.web.form.Field.extend({ var self = this; if (!this.dataset) return []; - this.save_form_view(); + if (!this.form_last_update.isResolved() && !this.form_last_update.isRejected()) + this.save_form_view(); var val = this.dataset.delete_all ? [commands.delete_all()] : []; val = val.concat(_.map(this.dataset.ids, function(id) { var alter_order = _.detect(self.dataset.to_create, function(x) {return x.id === id;}); From efa2ca1195f46b9b9427132d55b105a1c3c1a42f Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Wed, 12 Oct 2011 16:10:07 +0200 Subject: [PATCH 27/37] [imp] lot of concurrency improvements for form view bzr revid: nicolas.vanhoren@openerp.com-20111012141007-87w0fgemvqv2ul15 --- addons/web/static/src/js/view_form.js | 42 ++++++++++++++++++--------- 1 file changed, 28 insertions(+), 14 deletions(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index c8fef313854..94e175584b5 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -45,6 +45,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# _.defaults(this.options, {"always_show_new_button": true, "not_interactible_on_create": false}); this.save_lock = $.Deferred().resolve(); + this.reload_lock = $.Deferred().resolve(); }, start: function() { this._super(); @@ -367,6 +368,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# do_save: function(success, prepend_on_create) { var self = this; var action = function() { + try { if (!self.ready) { return $.Deferred().reject(); } @@ -403,6 +405,10 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# }).then(success); } } + } catch (e) { + console.error(e); + return $.Deferred().reject(); + } }; this.save_lock = this.save_lock.pipe(action, action); return this.save_lock; @@ -430,7 +436,8 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# // should not happen in the server, but may happen for internal purpose return $.Deferred().reject(); } else { - return this.reload().then(success); + this.reload(); + return $.when().then(success); } }, /** @@ -464,9 +471,8 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# this.sidebar.attachments.do_update(); } console.debug("The record has been created with id #" + this.datarecord.id); - return this.reload().pipe(function() { - return _.extend(r, {created: true}); - }).then(success); + this.reload() + return $.when(_.extend(r, {created: true})).then(success); } }, on_action: function (action) { @@ -476,15 +482,21 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# console.debug("Cancelling form"); }, reload: function() { - if (this.dataset.index == null || this.dataset.index < 0) { - return $.when(this.on_button_new()); - } else { - return this.dataset.read_index(_.keys(this.fields_view.fields), this.on_record_loaded); - } + var self = this; + var act = function() { + if (self.dataset.index == null || self.dataset.index < 0) { + return $.when(self.on_button_new()); + } else { + return self.dataset.read_index(_.keys(self.fields_view.fields), self.on_record_loaded); + } + }; + this.reload_lock = this.reload_lock.pipe(act, act); + return this.reload_lock; }, get_fields_values: function() { var values = {}; _.each(this.fields, function(value, key) { + value.is_dirty(); var val = value.get_value(); values[key] = val; }); @@ -923,7 +935,7 @@ openerp.web.form.WidgetButton = openerp.web.form.Widget.extend({ return self.on_confirmed(); } }; - if (!this.node.attrs.special && (this.view.dirty_for_user || !this.view.datarecord.id)) { + if (!this.node.attrs.special) { return this.view.recursive_save().pipe(exec_action); } else { return exec_action(); @@ -2008,8 +2020,6 @@ openerp.web.form.FieldOne2Many = openerp.web.form.Field.extend({ var self = this; if (!this.dataset) return []; - if (!this.form_last_update.isResolved() && !this.form_last_update.isRejected()) - this.save_form_view(); var val = this.dataset.delete_all ? [commands.delete_all()] : []; val = val.concat(_.map(this.dataset.ids, function(id) { var alter_order = _.detect(self.dataset.to_create, function(x) {return x.id === id;}); @@ -2372,13 +2382,17 @@ openerp.web.form.SelectCreatePopup = openerp.web.OldWidget.extend(/** @lends ope var $nbutton = $buttons.find(".oe_selectcreatepopup-form-save-new"); $nbutton.click(function() { $.when(self.view_form.do_save()).then(function() { - self.view_form.on_button_new(); + self.view_form.reload_lock.then(function() { + self.view_form.on_button_new(); + }); }); }); var $nbutton = $buttons.find(".oe_selectcreatepopup-form-save"); $nbutton.click(function() { $.when(self.view_form.do_save()).then(function() { - self.check_exit(); + self.view_form.reload_lock.then(function() { + self.check_exit(); + }); }); }); var $cbutton = $buttons.find(".oe_selectcreatepopup-form-close"); From 6dcbcb0dd882d0a16a892e0de579bc341bdc3a2e Mon Sep 17 00:00:00 2001 From: "Quentin (OpenERP)" Date: Wed, 12 Oct 2011 16:52:13 +0200 Subject: [PATCH 28/37] [IMP] account: added 'note' field on account.fiscal.position.template object bzr revid: qdp-launchpad@openerp.com-20111012145213-cvsfk3zb141fs766 --- addons/account/account.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/account/account.py b/addons/account/account.py index 68af88754f5..a9111e12bb1 100644 --- a/addons/account/account.py +++ b/addons/account/account.py @@ -2634,7 +2634,8 @@ class account_fiscal_position_template(osv.osv): 'name': fields.char('Fiscal Position Template', size=64, required=True), 'chart_template_id': fields.many2one('account.chart.template', 'Chart Template', required=True), 'account_ids': fields.one2many('account.fiscal.position.account.template', 'position_id', 'Account Mapping'), - 'tax_ids': fields.one2many('account.fiscal.position.tax.template', 'position_id', 'Tax Mapping') + 'tax_ids': fields.one2many('account.fiscal.position.tax.template', 'position_id', 'Tax Mapping'), + 'note': fields.text('Notes', translate=True), } account_fiscal_position_template() From 2ebe653f6586e266490014c3000ee1de4479ab22 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Wed, 12 Oct 2011 17:08:30 +0200 Subject: [PATCH 29/37] [imp] modified form view to really have on_changes that can not execute concurently bzr revid: nicolas.vanhoren@openerp.com-20111012150830-7eupfrzfeh2wh9j6 --- addons/web/static/src/js/view_form.js | 147 ++++++++++++++------------ 1 file changed, 80 insertions(+), 67 deletions(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 94e175584b5..8e37dc4540b 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -33,7 +33,6 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# this.widgets_counter = 0; this.fields = {}; this.datarecord = {}; - this.ready = false; this.show_invalid = true; this.dirty_for_user = false; this.default_focus_field = null; @@ -44,7 +43,8 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# this.translatable_fields = []; _.defaults(this.options, {"always_show_new_button": true, "not_interactible_on_create": false}); - this.save_lock = $.Deferred().resolve(); + this.mutating_lock = $.Deferred(); + this.initial_mutating_lock = this.mutating_lock; this.reload_lock = $.Deferred().resolve(); }, start: function() { @@ -182,7 +182,8 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# } } this.on_form_changed(); - this.show_invalid = this.ready = true; + this.initial_mutating_lock.resolve(); + this.show_invalid = true; this.do_update_pager(record.id == null); if (this.sidebar) { this.sidebar.attachments.do_update(); @@ -225,69 +226,78 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# $pager.find('span.oe_pager_count').html(this.dataset.ids.length); }, do_onchange: function(widget, processed) { - processed = processed || []; - if (widget.node.attrs.on_change) { - var self = this; - this.ready = false; - var onchange = _.trim(widget.node.attrs.on_change); - var call = onchange.match(/^\s?(.*?)\((.*?)\)\s?$/); - if (call) { - var method = call[1], args = []; - var context_index = null; - var argument_replacement = { - 'False' : function() {return false;}, - 'True' : function() {return true;}, - 'None' : function() {return null;}, - 'context': function(i) { - context_index = i; - var ctx = widget.build_context ? widget.build_context() : {}; - return ctx; - } - }; - var parent_fields = null; - _.each(call[2].split(','), function(a, i) { - var field = _.trim(a); - if (field in argument_replacement) { - args.push(argument_replacement[field](i)); - return; - } else if (self.fields[field]) { - var value = self.fields[field].get_on_change_value(); - args.push(value == null ? false : value); - return; - } else { - var splitted = field.split('.'); - if (splitted.length > 1 && _.trim(splitted[0]) === "parent" && self.dataset.parent_view) { - if (parent_fields === null) { - parent_fields = self.dataset.parent_view.get_fields_values(); - } - var p_val = parent_fields[_.trim(splitted[1])]; - if (p_val !== undefined) { - args.push(p_val == null ? false : p_val); - return; + var self = this; + var act = function() { + try { + processed = processed || []; + if (widget.node.attrs.on_change) { + var onchange = _.trim(widget.node.attrs.on_change); + var call = onchange.match(/^\s?(.*?)\((.*?)\)\s?$/); + if (call) { + var method = call[1], args = []; + var context_index = null; + var argument_replacement = { + 'False' : function() {return false;}, + 'True' : function() {return true;}, + 'None' : function() {return null;}, + 'context': function(i) { + context_index = i; + var ctx = widget.build_context ? widget.build_context() : {}; + return ctx; + } + }; + var parent_fields = null; + _.each(call[2].split(','), function(a, i) { + var field = _.trim(a); + if (field in argument_replacement) { + args.push(argument_replacement[field](i)); + return; + } else if (self.fields[field]) { + var value = self.fields[field].get_on_change_value(); + args.push(value == null ? false : value); + return; + } else { + var splitted = field.split('.'); + if (splitted.length > 1 && _.trim(splitted[0]) === "parent" && self.dataset.parent_view) { + if (parent_fields === null) { + parent_fields = self.dataset.parent_view.get_fields_values(); + } + var p_val = parent_fields[_.trim(splitted[1])]; + if (p_val !== undefined) { + args.push(p_val == null ? false : p_val); + return; + } } } - } - throw "Could not get field with name '" + field + - "' for onchange '" + onchange + "'"; - }); - var ajax = { - url: '/web/dataset/call', - async: false - }; - return this.rpc(ajax, { - model: this.dataset.model, - method: method, - args: [(this.datarecord.id == null ? [] : [this.datarecord.id])].concat(args), - context_id: context_index === null ? null : context_index + 1 - }, function(response) { - self.on_processed_onchange(response, processed); - }); - } else { - console.log("Wrong on_change format", on_change); + throw "Could not get field with name '" + field + + "' for onchange '" + onchange + "'"; + }); + var ajax = { + url: '/web/dataset/call', + async: false + }; + return self.rpc(ajax, { + model: self.dataset.model, + method: method, + args: [(self.datarecord.id == null ? [] : [self.datarecord.id])].concat(args), + context_id: context_index === null ? null : context_index + 1 + }).pipe(function(response) { + return self.on_processed_onchange(response, processed); + }); + } else { + console.log("Wrong on_change format", on_change); + } } - } + } catch(e) { + console.error(e); + return $.Deferred().reject(); + } + }; + this.mutating_lock = this.mutating_lock.pipe(act, act); + return this.mutating_lock; }, on_processed_onchange: function(response, processed) { + try { var result = response; if (result.value) { for (var f in result.value) { @@ -320,7 +330,11 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# if (result.domain) { // TODO: } - this.ready = true; + return $.Deferred().resolve(); + } catch(e) { + console.error(e); + return $.Deferred().reject(); + } }, on_button_new: function() { var self = this; @@ -369,9 +383,8 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# var self = this; var action = function() { try { - if (!self.ready) { - return $.Deferred().reject(); - } + if (!self.initial_mutating_lock.isResolved() && !self.initial_mutating_lock.isRejected()) + return; var form_dirty = false, form_invalid = false, values = {}, @@ -410,8 +423,8 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# return $.Deferred().reject(); } }; - this.save_lock = this.save_lock.pipe(action, action); - return this.save_lock; + this.mutating_lock = this.mutating_lock.pipe(action, action); + return this.mutating_lock; }, do_save_edit: function() { this.do_save(); From 101dd015023d30994db027624cf17f1b6f067da0 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Wed, 12 Oct 2011 17:35:18 +0200 Subject: [PATCH 30/37] [fix] rollbacked previous fix regarding save of o2m when doing a get_value bzr revid: nicolas.vanhoren@openerp.com-20111012153518-gt8uyhagjzi8qc72 --- addons/web/static/src/js/view_form.js | 1 - 1 file changed, 1 deletion(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 8e37dc4540b..e395f593f3e 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -509,7 +509,6 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# get_fields_values: function() { var values = {}; _.each(this.fields, function(value, key) { - value.is_dirty(); var val = value.get_value(); values[key] = val; }); From 2eab13708fe9f76ed7356cddff12a647f9aa02a6 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 12 Oct 2011 15:12:55 +0200 Subject: [PATCH 31/37] [IMP] make Registry.get_any faster throwing exceptions seems quite slow in Safari, and generates a significant performance hit in dashboards bzr revid: xmo@openerp.com-20111012131255-2cayqxedjpdtj432 --- addons/web/static/src/js/core.js | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/addons/web/static/src/js/core.js b/addons/web/static/src/js/core.js index da9c21bf551..bed5f199157 100644 --- a/addons/web/static/src/js/core.js +++ b/addons/web/static/src/js/core.js @@ -287,14 +287,12 @@ openerp.web.Registry = openerp.web.Class.extend( /** @lends openerp.web.Registry */ get_any: function (keys) { for (var i=0; i Date: Wed, 12 Oct 2011 17:57:04 +0200 Subject: [PATCH 32/37] [fix] problem in delivery orders, when trying to click on a button in the o2m bzr revid: nicolas.vanhoren@openerp.com-20111012155704-22dgojl8ag3av4sn --- addons/web/static/src/js/view_form.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index e395f593f3e..7ed7bcd200e 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -45,6 +45,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# "not_interactible_on_create": false}); this.mutating_lock = $.Deferred(); this.initial_mutating_lock = this.mutating_lock; + this.on_change_lock = $.Deferred().resolve(); this.reload_lock = $.Deferred().resolve(); }, start: function() { @@ -293,8 +294,8 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# return $.Deferred().reject(); } }; - this.mutating_lock = this.mutating_lock.pipe(act, act); - return this.mutating_lock; + this.on_change_lock = this.on_change_lock.pipe(act, act); + return this.on_change_lock; }, on_processed_onchange: function(response, processed) { try { @@ -2055,9 +2056,10 @@ openerp.web.form.FieldOne2Many = openerp.web.form.Field.extend({ var view = this.viewmanager.views[this.viewmanager.active_view].controller; if (this.viewmanager.active_view === "form") { var res = $.when(view.do_save()); - if (!res.isResolved() && !res.isRejected()) { - throw "Asynchronous get_value() is not supported in form view."; - } + // it seems line there are some cases when this happens + /*if (!res.isResolved() && !res.isRejected()) { + console.warn("Asynchronous get_value() is not supported in form view."); + }*/ return res; } } From abf626b64433d51b4030ded8f30618063b8228a1 Mon Sep 17 00:00:00 2001 From: Olivier Dony Date: Wed, 12 Oct 2011 17:57:07 +0200 Subject: [PATCH 33/37] [IMP] ir.config.parameter: move all default params together bzr revid: odo@openerp.com-20111012155707-fgb0pn8dj2l0ukiu --- openerp/addons/base/base_data.xml | 4 ---- openerp/addons/base/ir/ir_config_parameter.py | 1 + 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/openerp/addons/base/base_data.xml b/openerp/addons/base/base_data.xml index 9615506a7c6..e61bdefd80d 100644 --- a/openerp/addons/base/base_data.xml +++ b/openerp/addons/base/base_data.xml @@ -1,10 +1,6 @@ - - web.base.url - http://localhost:8069 - ir.ui.menu.tree ir.ui.menu diff --git a/openerp/addons/base/ir/ir_config_parameter.py b/openerp/addons/base/ir/ir_config_parameter.py index 981dfd2798e..4f12b27827b 100644 --- a/openerp/addons/base/ir/ir_config_parameter.py +++ b/openerp/addons/base/ir/ir_config_parameter.py @@ -33,6 +33,7 @@ A dictionary holding some configuration parameters to be initialized when the da _default_parameters = { "database.uuid": lambda: str(uuid.uuid1()), "database.create_date": lambda: datetime.datetime.now().strftime(misc.DEFAULT_SERVER_DATETIME_FORMAT), + "web.base.url": lambda: "http://localhost:8069", } class ir_config_parameter(osv.osv): From 0d2bc8f3aee927ae527a6973c85e7d148ee18b82 Mon Sep 17 00:00:00 2001 From: Olivier Dony Date: Wed, 12 Oct 2011 17:58:18 +0200 Subject: [PATCH 34/37] [FIX] modules.graph: avoid crash when a module has been deleted from the filesystem bzr revid: odo@openerp.com-20111012155818-u07arzkokf9zshr0 --- openerp/modules/graph.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/modules/graph.py b/openerp/modules/graph.py index 539dda25b50..7b302e99f4c 100644 --- a/openerp/modules/graph.py +++ b/openerp/modules/graph.py @@ -101,7 +101,7 @@ class Graph(dict): # NOTE The call to load_information_from_description_file is already # done by db.initialize, so it is possible to not do it again here. info = openerp.modules.module.load_information_from_description_file(module) - if info['installable']: + if info and info['installable']: packages.append((module, info)) # TODO directly a dict, like in get_modules_with_version else: logger.notifyChannel('init', netsvc.LOG_WARNING, 'module %s: not installable, skipped' % (module)) From fc823e76bd0c5cdb28f5e20190c0a13cabddc33c Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Wed, 12 Oct 2011 18:13:22 +0200 Subject: [PATCH 35/37] [fix] rare problem in o2m bzr revid: nicolas.vanhoren@openerp.com-20111012161322-rnjei1os2xjb0qax --- addons/web/static/src/js/view_form.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 7ed7bcd200e..b0dce062519 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -1887,6 +1887,7 @@ openerp.web.form.FieldOne2Many = openerp.web.form.Field.extend({ this._super(view, node); this.is_started = $.Deferred(); this.form_last_update = $.Deferred(); + this.init_form_last_update = this.form_last_update; this.disable_utility_classes = true; }, start: function() { @@ -1928,7 +1929,7 @@ openerp.web.form.FieldOne2Many = openerp.web.form.Field.extend({ form: 'openerp.web.form.One2ManyFormView' }); var once = $.Deferred().then(function() { - self.form_last_update.resolve(); + self.init_form_last_update.resolve(); }); this.viewmanager.on_controller_inited.add_last(function(view_type, controller) { if (view_type == "list") { From c18e1fc20359739957f54cdd41a63e3f8031694c Mon Sep 17 00:00:00 2001 From: Olivier Dony Date: Wed, 12 Oct 2011 18:29:27 +0200 Subject: [PATCH 36/37] [FIX] res.users: last login time should use UTC like all server-side timestamps bzr revid: odo@openerp.com-20111012162927-iq83m08vuwj43syz --- openerp/addons/base/res/res_users.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/openerp/addons/base/res/res_users.py b/openerp/addons/base/res/res_users.py index f552e8166cd..2275ba76014 100644 --- a/openerp/addons/base/res/res_users.py +++ b/openerp/addons/base/res/res_users.py @@ -423,8 +423,10 @@ class users(osv.osv): return False cr = pooler.get_db(db).cursor() try: - cr.execute('UPDATE res_users SET date=now() WHERE login=%s AND password=%s AND active RETURNING id', - (tools.ustr(login), tools.ustr(password))) + cr.execute("""UPDATE res_users + SET date = now() AT TIME ZONE 'UTC' + WHERE login=%s AND password=%s AND active RETURNING id""", + (tools.ustr(login), tools.ustr(password))) res = cr.fetchone() cr.commit() if res: From 77d6481030402de72ec87829d067c2c24771063a Mon Sep 17 00:00:00 2001 From: Launchpad Translations on behalf of openerp <> Date: Thu, 13 Oct 2011 04:46:33 +0000 Subject: [PATCH 37/37] Launchpad automatic translations update. bzr revid: launchpad_translations_on_behalf_of_openerp-20111013043834-6r8jr1hhlynt3ay0 bzr revid: launchpad_translations_on_behalf_of_openerp-20111013044633-ck3w2f7b9snnkx55 --- addons/l10n_hn/i18n/ca.po | 8 +- addons/l10n_hn/i18n/es.po | 8 +- addons/l10n_hn/i18n/fr.po | 6 +- addons/l10n_hn/i18n/gl.po | 8 +- addons/l10n_hn/i18n/hu.po | 6 +- addons/l10n_hn/i18n/it.po | 8 +- addons/l10n_hn/i18n/pt_BR.po | 8 +- addons/l10n_hn/i18n/sr@latin.po | 6 +- addons/project_scrum/i18n/pt_BR.po | 258 ++++++++++++++++++----------- addons/web_calendar/po/fr.po | 22 +++ addons/web_dashboard/po/fr.po | 46 +++++ addons/web_default_home/po/fr.po | 38 +++++ 12 files changed, 296 insertions(+), 126 deletions(-) create mode 100644 addons/web_calendar/po/fr.po create mode 100644 addons/web_dashboard/po/fr.po create mode 100644 addons/web_default_home/po/fr.po diff --git a/addons/l10n_hn/i18n/ca.po b/addons/l10n_hn/i18n/ca.po index 6db7f5a1dd5..2a3d4a52ef4 100755 --- a/addons/l10n_hn/i18n/ca.po +++ b/addons/l10n_hn/i18n/ca.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2011-01-11 11:15+0000\n" -"PO-Revision-Date: 2011-03-12 20:48+0000\n" -"Last-Translator: mgaja (GrupoIsep.com) \n" +"PO-Revision-Date: 2011-10-12 06:36+0000\n" +"Last-Translator: OpenERP Administrators \n" "Language-Team: Catalan \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-03-13 06:16+0000\n" -"X-Generator: Launchpad (build 12559)\n" +"X-Launchpad-Export-Date: 2011-10-13 04:38+0000\n" +"X-Generator: Launchpad (build 14124)\n" #. module: l10n_hn #: model:ir.module.module,shortdesc:l10n_hn.module_meta_information diff --git a/addons/l10n_hn/i18n/es.po b/addons/l10n_hn/i18n/es.po index d3372528aae..bc2d514595d 100755 --- a/addons/l10n_hn/i18n/es.po +++ b/addons/l10n_hn/i18n/es.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0.0-rc1\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2011-01-11 11:15+0000\n" -"PO-Revision-Date: 2011-01-19 12:00+0000\n" -"Last-Translator: Nicolas Vanhoren (OpenERP) \n" +"PO-Revision-Date: 2011-10-12 06:36+0000\n" +"Last-Translator: OpenERP Administrators \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-01-25 06:47+0000\n" -"X-Generator: Launchpad (build 12177)\n" +"X-Launchpad-Export-Date: 2011-10-13 04:38+0000\n" +"X-Generator: Launchpad (build 14124)\n" #. module: l10n_hn #: model:ir.module.module,shortdesc:l10n_hn.module_meta_information diff --git a/addons/l10n_hn/i18n/fr.po b/addons/l10n_hn/i18n/fr.po index 424997a7e20..489286bc16f 100755 --- a/addons/l10n_hn/i18n/fr.po +++ b/addons/l10n_hn/i18n/fr.po @@ -8,15 +8,15 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2011-01-11 11:15+0000\n" -"PO-Revision-Date: 2011-01-19 12:00+0000\n" +"PO-Revision-Date: 2011-10-12 06:36+0000\n" "Last-Translator: Maxime Chambreuil (http://www.savoirfairelinux.com) " "\n" "Language-Team: French \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-01-25 06:47+0000\n" -"X-Generator: Launchpad (build 12177)\n" +"X-Launchpad-Export-Date: 2011-10-13 04:38+0000\n" +"X-Generator: Launchpad (build 14124)\n" #. module: l10n_hn #: model:ir.module.module,shortdesc:l10n_hn.module_meta_information diff --git a/addons/l10n_hn/i18n/gl.po b/addons/l10n_hn/i18n/gl.po index af9cb8304e6..279639065a7 100755 --- a/addons/l10n_hn/i18n/gl.po +++ b/addons/l10n_hn/i18n/gl.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2011-01-11 11:15+0000\n" -"PO-Revision-Date: 2011-02-11 13:05+0000\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2011-10-12 06:36+0000\n" +"Last-Translator: OpenERP Administrators \n" "Language-Team: Galician \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-02-12 06:06+0000\n" -"X-Generator: Launchpad (build 12351)\n" +"X-Launchpad-Export-Date: 2011-10-13 04:38+0000\n" +"X-Generator: Launchpad (build 14124)\n" #. module: l10n_hn #: model:ir.module.module,shortdesc:l10n_hn.module_meta_information diff --git a/addons/l10n_hn/i18n/hu.po b/addons/l10n_hn/i18n/hu.po index 803d195e5ac..ec7a48e3e1c 100755 --- a/addons/l10n_hn/i18n/hu.po +++ b/addons/l10n_hn/i18n/hu.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2011-01-11 11:15+0000\n" -"PO-Revision-Date: 2011-01-19 12:00+0000\n" +"PO-Revision-Date: 2011-10-12 06:34+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Hungarian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-01-25 06:47+0000\n" -"X-Generator: Launchpad (build 12177)\n" +"X-Launchpad-Export-Date: 2011-10-13 04:38+0000\n" +"X-Generator: Launchpad (build 14124)\n" #. module: l10n_hn #: model:ir.module.module,shortdesc:l10n_hn.module_meta_information diff --git a/addons/l10n_hn/i18n/it.po b/addons/l10n_hn/i18n/it.po index 220b98bc9df..bc558d65a10 100755 --- a/addons/l10n_hn/i18n/it.po +++ b/addons/l10n_hn/i18n/it.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2011-01-11 11:15+0000\n" -"PO-Revision-Date: 2011-01-19 12:00+0000\n" -"Last-Translator: Nicola Riolini - Micronaet \n" +"PO-Revision-Date: 2011-10-12 06:36+0000\n" +"Last-Translator: OpenERP Administrators \n" "Language-Team: Italian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-01-25 06:47+0000\n" -"X-Generator: Launchpad (build 12177)\n" +"X-Launchpad-Export-Date: 2011-10-13 04:38+0000\n" +"X-Generator: Launchpad (build 14124)\n" #. module: l10n_hn #: model:ir.module.module,shortdesc:l10n_hn.module_meta_information diff --git a/addons/l10n_hn/i18n/pt_BR.po b/addons/l10n_hn/i18n/pt_BR.po index 6dd7ba3c90b..d668e6f4c4a 100755 --- a/addons/l10n_hn/i18n/pt_BR.po +++ b/addons/l10n_hn/i18n/pt_BR.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2011-01-11 11:15+0000\n" -"PO-Revision-Date: 2011-03-10 23:09+0000\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2011-10-12 06:36+0000\n" +"Last-Translator: OpenERP Administrators \n" "Language-Team: Brazilian Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-03-11 06:00+0000\n" -"X-Generator: Launchpad (build 12559)\n" +"X-Launchpad-Export-Date: 2011-10-13 04:38+0000\n" +"X-Generator: Launchpad (build 14124)\n" #. module: l10n_hn #: model:ir.module.module,shortdesc:l10n_hn.module_meta_information diff --git a/addons/l10n_hn/i18n/sr@latin.po b/addons/l10n_hn/i18n/sr@latin.po index 2e5a15962a7..87b6f752d77 100755 --- a/addons/l10n_hn/i18n/sr@latin.po +++ b/addons/l10n_hn/i18n/sr@latin.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2011-01-11 11:15+0000\n" -"PO-Revision-Date: 2011-01-19 12:00+0000\n" +"PO-Revision-Date: 2011-10-12 06:34+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Serbian latin \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-01-25 06:47+0000\n" -"X-Generator: Launchpad (build 12177)\n" +"X-Launchpad-Export-Date: 2011-10-13 04:38+0000\n" +"X-Generator: Launchpad (build 14124)\n" #. module: l10n_hn #: model:ir.module.module,shortdesc:l10n_hn.module_meta_information diff --git a/addons/project_scrum/i18n/pt_BR.po b/addons/project_scrum/i18n/pt_BR.po index e5bd82d8446..bd2bc6974bf 100644 --- a/addons/project_scrum/i18n/pt_BR.po +++ b/addons/project_scrum/i18n/pt_BR.po @@ -7,19 +7,19 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2011-01-11 11:15+0000\n" -"PO-Revision-Date: 2011-03-15 16:12+0000\n" -"Last-Translator: Emerson \n" +"PO-Revision-Date: 2011-10-13 00:57+0000\n" +"Last-Translator: Joe Pimentel \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-09-05 05:03+0000\n" -"X-Generator: Launchpad (build 13830)\n" +"X-Launchpad-Export-Date: 2011-10-13 04:38+0000\n" +"X-Generator: Launchpad (build 14124)\n" #. module: project_scrum #: help:project.scrum.email,scrum_master_email:0 msgid "Email Id of Scrum Master" -msgstr "" +msgstr "Email do Scrum Master" #. module: project_scrum #: view:project.scrum.backlog.assign.sprint:0 @@ -68,12 +68,35 @@ msgid "" " * http://controlchaos.com\n" " " msgstr "" +"\n" +" Este módulo implementa todos os conceitos definidos pela metodologia de " +"gerenciamento\n" +" de projeto Scrum para empresas de TI:\n" +" * Projetos com sprints, Dono do Produto, Scrum Master\n" +" * Sprints com Revisões, Encontros Diários, Feedbacks\n" +" * Backlog do Produto\n" +" * Backlog do Sprint \n" +"\n" +" Ele adiciona alguns conceitos ao modulo de gerenciamento de projetos:\n" +" * Roteiros de Médio e longo prazo\n" +" * Requisitos Funcionais/de Clientes VS técnicos\n" +"\n" +" Ele também cria umnovo relatório:\n" +" * Burn-down chart\n" +"\n" +" The scrum projects and tasks inherit from the real projects and\n" +" tasks, so you can continue working on normal tasks that will also\n" +" include tasks from scrum projects.\n" +"\n" +" Mais informações sobre a Metodologia:\n" +" * http://controlchaos.com\n" +" " #. module: project_scrum #: view:project.scrum.meeting:0 #: view:project.scrum.sprint:0 msgid "What did you do since the last meeting?" -msgstr "" +msgstr "O que você executou desde a última reunião?" #. module: project_scrum #: model:ir.actions.act_window,help:project_scrum.action_sprint_all_tree @@ -83,6 +106,11 @@ msgid "" "which the team implements a list of product backlogs. The sprint review is " "organized when the team presents its work to the customer and product owner." msgstr "" +"A metodologia ágil Scrum é utilizada no desenvolvimento de projetos de " +"software. Nesta metodologia, um Sprint é um período curto de tempo (ex. 1 " +"mes) durante o qual o time implementa uma lista de Backlogs de Produto. A " +"revisão do Sprint é organizada quando o time apresenta o seu trabalho para o " +"Cliente e o Dono do Produto." #. module: project_scrum #: view:project.scrum.meeting:0 @@ -117,7 +145,7 @@ msgstr "Scrum Master" #: code:addons/project_scrum/project_scrum.py:83 #, python-format msgid "The sprint '%s' has been opened." -msgstr "" +msgstr "O Sprint '%s' foi iniciado." #. module: project_scrum #: constraint:project.project:0 @@ -159,24 +187,24 @@ msgstr "Definir como Provisório" #. module: project_scrum #: model:ir.model,name:project_scrum.model_project_scrum_backlog_merge msgid "Merge Product Backlogs" -msgstr "" +msgstr "Mesclar Backlog de Produtos" #. module: project_scrum #: model:ir.actions.act_window,name:project_scrum.action_scrum_backlog_merge #: view:project.scrum.backlog.merge:0 msgid "Merge Backlogs" -msgstr "" +msgstr "Mesclar Backlogs" #. module: project_scrum #: code:addons/project_scrum/wizard/project_scrum_email.py:53 #, python-format msgid "Scrum Meeting : %s" -msgstr "" +msgstr "Reuniáo Scrum: %s" #. module: project_scrum #: view:project.task:0 msgid "Backlog" -msgstr "" +msgstr "Backlog" #. module: project_scrum #: model:ir.model,name:project_scrum.model_project_scrum_email @@ -206,7 +234,7 @@ msgstr "Ok" #. module: project_scrum #: view:project.scrum.product.backlog:0 msgid "Spent hours" -msgstr "" +msgstr "Horas Gastas" #. module: project_scrum #: model:ir.actions.act_window,help:project_scrum.action_meeting_form @@ -215,30 +243,36 @@ msgid "" "this methodology, a daily meeting is organized by the scrum master with his " "team in order to detect the difficulties the team faced/will face." msgstr "" +"A metodologia ágil Scrum é usada em projetos de desenvolvimento de software. " +"Nesta metodologia, uma reunião diária é organizada pelo Scrum Master com o " +"time de forma a detectar as dificuldades as quais o time está ou irá " +"encontrar." #. module: project_scrum #: code:addons/project_scrum/project_scrum.py:316 #, python-format msgid "Please provide email address for product owner defined on sprint." msgstr "" +"Por favor, forneça um endereço de email para o Dono do Produto definido no " +"Sprint." #. module: project_scrum #: code:addons/project_scrum/project_scrum.py:327 #, python-format msgid "Scrum Meeting of %s" -msgstr "" +msgstr "Reunião Scrum de %s" #. module: project_scrum #: code:addons/project_scrum/wizard/project_scrum_backlog_sprint.py:57 #, python-format msgid "Product Backlog '%s' is converted into Task %d." -msgstr "" +msgstr "Backlog de Produto '%s' esta convertida na Tarefa %d." #. module: project_scrum #: code:addons/project_scrum/wizard/project_scrum_backlog_sprint.py:62 #, python-format msgid "Product Backlog '%s' is assigned sprint:%s" -msgstr "" +msgstr "Backlog de Produto '%s' esta atribuída a Sprint: %s" #. module: project_scrum #: code:addons/project_scrum/wizard/project_scrum_backlog_sprint.py:57 @@ -264,7 +298,7 @@ msgstr "Projeto" #. module: project_scrum #: view:project.scrum.product.backlog:0 msgid "Start Task" -msgstr "" +msgstr "Iniciar Tarefa" #. module: project_scrum #: code:addons/project_scrum/wizard/project_scrum_email.py:90 @@ -272,12 +306,12 @@ msgstr "" #: code:addons/project_scrum/wizard/project_scrum_email.py:96 #, python-format msgid "None" -msgstr "" +msgstr "Nenhum(a)" #. module: project_scrum #: view:project.scrum.product.backlog:0 msgid "Change Stage" -msgstr "" +msgstr "Mudar Estágio" #. module: project_scrum #: view:project.scrum.sprint:0 @@ -293,7 +327,7 @@ msgstr "Data Final" #: view:project.scrum.meeting:0 #: view:project.scrum.sprint:0 msgid "Links" -msgstr "" +msgstr "Ligações" #. module: project_scrum #: help:project.scrum.sprint,effective_hours:0 @@ -304,17 +338,17 @@ msgstr "Calculado usando a soma do trabalho realizado da tarefa." #: code:addons/project_scrum/wizard/project_scrum_email.py:91 #, python-format msgid "Task for Today" -msgstr "" +msgstr "Tarefa de Hoje" #. module: project_scrum #: field:project.scrum.backlog.assign.sprint,state_open:0 msgid "Open Backlog" -msgstr "" +msgstr "Abrir Backlog" #. module: project_scrum #: view:project.scrum.product.backlog:0 msgid "Total Spent Hours" -msgstr "" +msgstr "Total de Horas Gastas" #. module: project_scrum #: field:project.scrum.sprint,date_start:0 @@ -325,24 +359,24 @@ msgstr "Data de Início" #: code:addons/project_scrum/wizard/project_scrum_email.py:94 #, python-format msgid "Blocking points encountered:" -msgstr "" +msgstr "Pontos de bloqueio encontrados:" #. module: project_scrum #: view:project.scrum.sprint:0 msgid "Planning" -msgstr "" +msgstr "Planejamento" #. module: project_scrum #: view:project.scrum.backlog.assign.sprint:0 #: view:project.scrum.backlog.create.task:0 #: view:project.scrum.email:0 msgid "_Cancel" -msgstr "" +msgstr "_Cancelar" #. module: project_scrum #: help:project.scrum.sprint,scrum_master_id:0 msgid "The person who is maintains the processes for the product" -msgstr "" +msgstr "A pessoa que mantem os processos para o produto" #. module: project_scrum #: view:project.scrum.product.backlog:0 @@ -354,7 +388,7 @@ msgstr "Horas planejadas" #. module: project_scrum #: field:project.scrum.email,subject:0 msgid "Subject" -msgstr "" +msgstr "Assunto" #. module: project_scrum #: view:board.board:0 @@ -364,28 +398,28 @@ msgstr "" #: view:project.scrum.product.backlog:0 #: view:project.scrum.sprint:0 msgid "Sprints" -msgstr "" +msgstr "Sprints" #. module: project_scrum #: code:addons/project_scrum/project_scrum.py:314 #, python-format msgid "Email notification could not be sent to the product owner %s" -msgstr "" +msgstr "Email de notificação não pode ser enviado para o Dono do Prodyuto %s" #. module: project_scrum #: field:project.scrum.backlog.assign.sprint,convert_to_task:0 msgid "Convert To Task" -msgstr "" +msgstr "Converter em Tarefa" #. module: project_scrum #: view:project.scrum.backlog.merge:0 msgid "Are you sure you want to merge these Backlogs?" -msgstr "" +msgstr "Tem certeza que deseja mesclar estes Backlogs?" #. module: project_scrum #: help:project.scrum.backlog.create.task,user_id:0 msgid "Responsible user who can work on task" -msgstr "" +msgstr "Usuário responsável que pode trabalhar na tarefa" #. module: project_scrum #: view:project.scrum.product.backlog:0 @@ -408,14 +442,14 @@ msgstr "Scrum Diário" #. module: project_scrum #: view:project.scrum.backlog.create.task:0 msgid "C_onvert" -msgstr "" +msgstr "C_onverter" #. module: project_scrum #: model:ir.actions.act_window,name:project_scrum.action_product_backlog_form #: model:ir.ui.menu,name:project_scrum.menu_action_product_backlog_form #: view:project.scrum.product.backlog:0 msgid "Product Backlogs" -msgstr "" +msgstr "Backlogs de Produto" #. module: project_scrum #: code:addons/project_scrum/project_scrum.py:301 @@ -424,18 +458,18 @@ msgstr "" #: code:addons/project_scrum/project_scrum.py:316 #, python-format msgid "Error !" -msgstr "" +msgstr "Erro!" #. module: project_scrum #: field:project.scrum.product.backlog,create_date:0 msgid "Creation Date" -msgstr "" +msgstr "Data de Criação" #. module: project_scrum #: view:project.scrum.meeting:0 #: view:project.scrum.sprint:0 msgid "Are there anything blocking you?" -msgstr "" +msgstr "Existe alguma coisa bloqueando você?" #. module: project_scrum #: model:ir.ui.menu,name:project_scrum.menu_scrum @@ -459,32 +493,32 @@ msgstr "Tarefas desde ontem" #: code:addons/project_scrum/wizard/project_scrum_backlog_merger.py:71 #, python-format msgid "Warning" -msgstr "" +msgstr "Aviso" #. module: project_scrum #: model:ir.model,name:project_scrum.model_project_scrum_backlog_assign_sprint msgid "Assign sprint to backlogs" -msgstr "" +msgstr "Atribuir Sprint para Backlogs" #. module: project_scrum #: help:project.scrum.sprint,expected_hours:0 msgid "Estimated time to do the task." -msgstr "" +msgstr "Tempo estimado para realizar a tarefa" #. module: project_scrum #: field:project.scrum.product.backlog,task_hours:0 msgid "Task Hours" -msgstr "" +msgstr "Horas da Tarefa" #. module: project_scrum #: view:project.scrum.sprint:0 msgid "Dates" -msgstr "" +msgstr "Datas" #. module: project_scrum #: view:project.scrum.sprint:0 msgid "Send to Scrum Master" -msgstr "" +msgstr "Enviar para Scrum Master" #. module: project_scrum #: selection:project.scrum.product.backlog,state:0 @@ -504,11 +538,13 @@ msgid "" "Hello , \n" "I am sending you Scrum Meeting : %s for the Sprint '%s' of Project '%s'" msgstr "" +"Olá ,\n" +"Estou enviando-lhe Reunião Scrum: %s para o Sprint '%s' do Projeto '%s'" #. module: project_scrum #: view:project.scrum.meeting:0 msgid "Daily" -msgstr "" +msgstr "Diária" #. module: project_scrum #: field:project.scrum.sprint,backlog_ids:0 @@ -518,24 +554,24 @@ msgstr "Backlog do Sprint" #. module: project_scrum #: view:project.scrum.product.backlog:0 msgid "Delegate" -msgstr "" +msgstr "Delegar" #. module: project_scrum #: view:board.board:0 msgid "My Board" -msgstr "" +msgstr "Meu Painel" #. module: project_scrum #: view:postpone.wizard:0 msgid "Postpone Backlog" -msgstr "" +msgstr "Adiar Backlog" #. module: project_scrum #: view:board.board:0 #: model:ir.actions.act_window,name:project_scrum.action_view_task_progress_graph #: view:project.task:0 msgid "Task Progress" -msgstr "" +msgstr "Progresso da Tarefa" #. module: project_scrum #: field:project.scrum.meeting,date:0 @@ -554,17 +590,17 @@ msgstr "Tarefas" #. module: project_scrum #: field:project.scrum.email,product_owner_email:0 msgid "Product Owner Email" -msgstr "" +msgstr "Email do Dono do Produto" #. module: project_scrum #: view:project.scrum.email:0 msgid "_Send" -msgstr "" +msgstr "_Enviar" #. module: project_scrum #: help:project.scrum.backlog.assign.sprint,sprint_id:0 msgid "Select Sprint to assign backlog." -msgstr "" +msgstr "Selecione Sprint para atribuir Backlog" #. module: project_scrum #: help:project.scrum.product.backlog,progress:0 @@ -576,7 +612,7 @@ msgstr "Calculado como: Tempo Gasto / Tempo Total." #: view:project.scrum.meeting:0 #: view:project.scrum.sprint:0 msgid "Month" -msgstr "" +msgstr "Mês" #. module: project_scrum #: field:project.scrum.meeting,question_blocks:0 @@ -587,23 +623,25 @@ msgstr "Bloqueios encontrados" #: help:project.scrum.backlog.assign.sprint,state_open:0 msgid "Change the state of product backlogs to open if its in draft state" msgstr "" +"Alterar o estado do Backlog de Produto para Aberto se estiver em estado " +"Rascunho" #. module: project_scrum #: view:project.scrum.email:0 #: field:project.scrum.email,message:0 msgid "Message" -msgstr "" +msgstr "Mensagem" #. module: project_scrum #: field:project.scrum.email,scrum_master_email:0 msgid "Scrum Master Email" -msgstr "" +msgstr "Email do Scrum Master" #. module: project_scrum #: help:project.project,product_owner_id:0 #: help:project.scrum.sprint,product_owner_id:0 msgid "The person who is responsible for the product" -msgstr "" +msgstr "A pesoa que é responsável pelo produto" #. module: project_scrum #: view:project.scrum.meeting:0 @@ -614,7 +652,7 @@ msgstr "Scrum Sprint" #. module: project_scrum #: view:project.scrum.sprint:0 msgid "Product owner" -msgstr "" +msgstr "Dono do Produto" #. module: project_scrum #: view:project.scrum.sprint:0 @@ -642,19 +680,21 @@ msgstr "Esboço" msgid "" "Related product backlog that contains this task. Used in SCRUM methodology" msgstr "" +"Backlog de Produto relacionado que contém esta tarefa. Utilizado na " +"Metodologia SCRUM" #. module: project_scrum #: view:project.scrum.meeting:0 #: view:project.scrum.sprint:0 msgid "What do you plan to do till the next meeting?" -msgstr "" +msgstr "O que você planeja realizar até a próxima reuniáo" #. module: project_scrum #: model:ir.actions.act_window,name:project_scrum.action_postpone_wizard #: view:postpone.wizard:0 #: view:project.scrum.product.backlog:0 msgid "Postpone" -msgstr "" +msgstr "Adiar" #. module: project_scrum #: view:project.scrum.product.backlog:0 @@ -668,17 +708,17 @@ msgstr "Pendente" #: view:project.scrum.meeting:0 #: view:project.scrum.sprint:0 msgid "Optional Info" -msgstr "" +msgstr "Informação Opcional" #. module: project_scrum #: model:ir.model,name:project_scrum.model_project_scrum_backlog_create_task msgid "Create Tasks from Product Backlogs" -msgstr "" +msgstr "Criar Tarefas a partir do Backlog de Produto" #. module: project_scrum #: help:project.project,sprint_size:0 msgid "Number of days allocated for sprint" -msgstr "" +msgstr "Número de dias alocados para o Sprint" #. module: project_scrum #: field:project.project,product_owner_id:0 @@ -690,6 +730,7 @@ msgstr "Proprietário do Produto" #: help:project.scrum.product.backlog,sequence:0 msgid "Gives the sequence order when displaying a list of product backlog." msgstr "" +"Fornece a ordem de sequência quando mostrando uma lista de Backlog de Produto" #. module: project_scrum #: model:process.node,name:project_scrum.process_node_productbacklog0 @@ -706,12 +747,12 @@ msgstr "Backlogs" #: code:addons/project_scrum/project_scrum.py:326 #, python-format msgid "Thank you" -msgstr "" +msgstr "Obrigado" #. module: project_scrum #: help:project.scrum.backlog.assign.sprint,convert_to_task:0 msgid "Create Task for Product Backlog" -msgstr "" +msgstr "Criar Tarefa para o Backlog de Produto" #. module: project_scrum #: field:project.scrum.product.backlog,active:0 @@ -722,22 +763,22 @@ msgstr "Ativo" #: model:ir.actions.act_window,name:project_scrum.action_meeting_form #: model:ir.ui.menu,name:project_scrum.menu_action_meeting_form msgid "Scrum Meetings" -msgstr "" +msgstr "Reuniões de Scrum" #. module: project_scrum #: help:project.scrum.product.backlog,expected_hours:0 msgid "Estimated total time to do the Backlog" -msgstr "" +msgstr "Tempo total estimado para realizar o Backlog" #. module: project_scrum #: help:project.scrum.backlog.merge,project_id:0 msgid "Select project for the new product backlog" -msgstr "" +msgstr "Selecione o projeto para o novo Backlog de Produto" #. module: project_scrum #: view:project.scrum.backlog.merge:0 msgid "Merge" -msgstr "" +msgstr "Mesclar" #. module: project_scrum #: model:ir.actions.act_window,name:project_scrum.action_sprint_backlog_open @@ -754,7 +795,7 @@ msgstr "Precisão do Backlog" #: view:project.scrum.backlog.create.task:0 #: view:project.scrum.product.backlog:0 msgid "Convert to Task" -msgstr "" +msgstr "Converter para Tarefa" #. module: project_scrum #: help:project.scrum.sprint,project_id:0 @@ -773,20 +814,20 @@ msgstr "Seqüência" #. module: project_scrum #: view:project.scrum.sprint:0 msgid "Send to Product Owner" -msgstr "" +msgstr "Enviar para o Dono do Produto" #. module: project_scrum #: view:board.board:0 #: model:ir.actions.act_window,name:project_scrum.action_view_backlog_progress_graph #: view:project.scrum.product.backlog:0 msgid "Backlog Progress" -msgstr "" +msgstr "Progresso do Backlog" #. module: project_scrum #: code:addons/project_scrum/project_scrum.py:301 #, python-format msgid "Email notification could not be sent to the scrum master %s" -msgstr "" +msgstr "Notificação de Email não pode ser enviada para o Scrum Master %s" #. module: project_scrum #: view:project.scrum.product.backlog:0 @@ -806,7 +847,7 @@ msgstr "Cancelar" #: view:project.scrum.product.backlog:0 #: view:project.scrum.sprint:0 msgid "Close" -msgstr "" +msgstr "Fechar" #. module: project_scrum #: view:project.scrum.product.backlog:0 @@ -825,7 +866,7 @@ msgstr "Horas efetivas" #. module: project_scrum #: view:project.scrum.product.backlog:0 msgid "Information" -msgstr "" +msgstr "Informação" #. module: project_scrum #: view:project.scrum.product.backlog:0 @@ -835,7 +876,7 @@ msgstr "Horas Restantes" #. module: project_scrum #: view:project.scrum.sprint:0 msgid "Responsible" -msgstr "" +msgstr "Responsável" #. module: project_scrum #: field:project.scrum.product.backlog,name:0 @@ -848,17 +889,17 @@ msgstr "Característica" #: view:project.scrum.sprint:0 #: view:project.task:0 msgid "Current" -msgstr "" +msgstr "Atual" #. module: project_scrum #: view:project.scrum.product.backlog:0 msgid "My Backlogs" -msgstr "" +msgstr "Meus Backlogs" #. module: project_scrum #: view:project.scrum.email:0 msgid "Send Email for Scrum Meeting Details" -msgstr "" +msgstr "Enviar email para Detalhes da Reunião Scrum" #. module: project_scrum #: model:ir.actions.act_window,help:project_scrum.action_product_backlog_form @@ -868,6 +909,11 @@ msgid "" "can be planified in a development sprint and may be split into several " "tasks. The product backlog is managed by the product owner of the project." msgstr "" +"A metodologia ágil Scrum é usada em projetos de desenvolvimento de software. " +" O Backlog de Produto é a lista de características a ser implementadas. Um " +"Backlog de Produto pode ser planejado em um Sprint de desenvolvimento e pode " +"ser quebrado em várias tarefas. O Backlog de Produto é gerenciado pelo Dono " +"do Produto" #. module: project_scrum #: model:process.transition,name:project_scrum.process_transition_backlogtask0 @@ -893,7 +939,7 @@ msgstr "Reunião de Scrum" #: model:ir.actions.report.xml,name:project_scrum.report_scrum_sprint_burndown_chart #: view:project.scrum.sprint:0 msgid "Burndown Chart" -msgstr "" +msgstr "Burndown Chart" #. module: project_scrum #: view:project.scrum.sprint:0 @@ -903,7 +949,7 @@ msgstr "Reuniões Diárias" #. module: project_scrum #: view:project.scrum.sprint:0 msgid "Expected hours" -msgstr "" +msgstr "Horas Esperadas" #. module: project_scrum #: field:project.project,sprint_size:0 @@ -913,7 +959,7 @@ msgstr "Dias do Sprint" #. module: project_scrum #: help:project.scrum.email,product_owner_email:0 msgid "Email Id of Product Owner" -msgstr "" +msgstr "Id do Email do Dono do Produto" #. module: project_scrum #: field:project.scrum.sprint,progress:0 @@ -928,6 +974,10 @@ msgid "" " \n" "I am sending you Daily Meeting Details of date %s for the Sprint %s\n" msgstr "" +"Olá %s,\n" +"\n" +"Estou lhe enviando os Detalhes da Reunião Diária da data %s para o Sprint " +"%s\n" #. module: project_scrum #: code:addons/project_scrum/project_scrum.py:325 @@ -942,6 +992,14 @@ msgid "" "*Blocks encountered:\n" "_______________________ %s" msgstr "" +"\n" +"*Tarefas desde ontem:\n" +"_______________________%s\n" +"*Tarefas para Hoje:\n" +"_______________________ %s\n" +"\n" +"*Bloqueios encontrados:\n" +"_______________________ %s" #. module: project_scrum #: help:project.scrum.product.backlog,active:0 @@ -949,11 +1007,13 @@ msgid "" "If Active field is set to true, it will allow you to hide the product " "backlog without removing it." msgstr "" +"Se o campo Ativo estiver ajustado para verdadeiro, permitirá esconder o " +"Backlog de Produto sem removê-lo." #. module: project_scrum #: help:project.scrum.product.backlog,task_hours:0 msgid "Estimated time of the total hours of the tasks" -msgstr "" +msgstr "Tempo estimado do total de horas das tarefas" #. module: project_scrum #: view:project.project:0 @@ -963,12 +1023,12 @@ msgstr "Dados do Scrum" #. module: project_scrum #: field:project.project,scrum:0 msgid "Is a Scrum Project" -msgstr "" +msgstr "É um Projeto Scrum" #. module: project_scrum #: view:project.scrum.product.backlog:0 msgid "Edit" -msgstr "" +msgstr "Editar" #. module: project_scrum #: field:project.scrum.product.backlog,tasks_id:0 @@ -978,12 +1038,12 @@ msgstr "Detalhes das Tarefas" #. module: project_scrum #: model:ir.model,name:project_scrum.model_postpone_wizard msgid "postpone.wizard" -msgstr "" +msgstr "postpone.wizard" #. module: project_scrum #: view:project.scrum.product.backlog:0 msgid "Total Planned Hours" -msgstr "" +msgstr "Horas Totais Planejadas" #. module: project_scrum #: view:project.scrum.backlog.merge:0 @@ -991,39 +1051,43 @@ msgid "" "This wizard merge backlogs and create one new backlog with draft state (Old " "backlogs Will be deleted). And it also merge old tasks from backlogs" msgstr "" +"Este assistente mescla Backlogs e cria um novo Backlog no estado Rascunho " +"(Antigos Backlogs serão deletados). E isto também mescla antigas tarefas dos " +"Backlogs." #. module: project_scrum #: code:addons/project_scrum/project_scrum.py:303 #, python-format msgid "Please provide email address for scrum master defined on sprint." msgstr "" +"Favor providenciar endereço de email do Scrum Master definido no Sprint" #. module: project_scrum #: view:project.scrum.backlog.merge:0 msgid "Select the project for merged backlogs" -msgstr "" +msgstr "Selecione o projeto para Backlogs mesclados" #. module: project_scrum #: view:board.board:0 #: model:ir.actions.act_window,name:project_scrum.action_view_my_scrum_sprint_tree msgid "My Sprint" -msgstr "" +msgstr "Meu Sprint" #. module: project_scrum #: field:project.scrum.product.backlog,effective_hours:0 msgid "Spent Hours" -msgstr "" +msgstr "Horas Gastas" #. module: project_scrum #: help:project.scrum.product.backlog,effective_hours:0 msgid "Computed using the sum of the time spent on every related tasks" -msgstr "" +msgstr "Computado usando a soma do tempo gasto em cada tarefa relacionada" #. module: project_scrum #: model:ir.actions.act_window,name:project_scrum.open_board_project_scrum #: model:ir.ui.menu,name:project_scrum.menu_deshboard_scurm msgid "Scrum Dashboard" -msgstr "" +msgstr "Painel Scrum" #. module: project_scrum #: model:ir.model,name:project_scrum.model_project_scrum_sprint @@ -1033,31 +1097,31 @@ msgstr "" #. module: project_scrum #: view:project.scrum.product.backlog:0 msgid "Feature Description" -msgstr "" +msgstr "Descrição da Característica" #. module: project_scrum #: code:addons/project_scrum/wizard/project_scrum_backlog_merger.py:71 #, python-format msgid "Please select any Project." -msgstr "" +msgstr "Favor selecionar algum Projeto" #. module: project_scrum #: code:addons/project_scrum/wizard/project_scrum_email.py:97 #, python-format msgid "Thank you," -msgstr "" +msgstr "Obrigado" #. module: project_scrum #: code:addons/project_scrum/project_scrum.py:90 #, python-format msgid "The sprint '%s' has been closed." -msgstr "" +msgstr "O Sprint '%s' foi fechado." #. module: project_scrum #: model:ir.actions.act_window,name:project_scrum.action_scrum_backlog_to_sprint #: view:project.scrum.backlog.assign.sprint:0 msgid "Assign Sprint" -msgstr "" +msgstr "Atribuir Sprint" #. module: project_scrum #: field:project.scrum.backlog.create.task,user_id:0 @@ -1067,7 +1131,7 @@ msgstr "Atribuir para" #. module: project_scrum #: view:postpone.wizard:0 msgid "Are you sure to postpone Backlog ?" -msgstr "" +msgstr "Tem certeza de adiar Backlog" #. module: project_scrum #: field:project.scrum.backlog.assign.sprint,sprint_id:0 @@ -1084,7 +1148,7 @@ msgstr "Sprint" #: code:addons/project_scrum/wizard/project_scrum_backlog_merger.py:39 #, python-format msgid "Please select at least two product Backlogs" -msgstr "" +msgstr "Favor selecionar no mínimo dois Backlogs de Produto" #. module: project_scrum #: field:project.scrum.sprint,review:0 diff --git a/addons/web_calendar/po/fr.po b/addons/web_calendar/po/fr.po new file mode 100644 index 00000000000..77bf389531e --- /dev/null +++ b/addons/web_calendar/po/fr.po @@ -0,0 +1,22 @@ +# French translation for openerp-web +# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 +# This file is distributed under the same license as the openerp-web package. +# FIRST AUTHOR , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: openerp-web\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2011-10-07 10:38+0200\n" +"PO-Revision-Date: 2011-10-12 05:03+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: French \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2011-10-13 04:46+0000\n" +"X-Generator: Launchpad (build 14124)\n" + +#: addons/web_calendar/static/src/xml/web_calendar.xml:0 +msgid " " +msgstr "" diff --git a/addons/web_dashboard/po/fr.po b/addons/web_dashboard/po/fr.po new file mode 100644 index 00000000000..08c9ef65656 --- /dev/null +++ b/addons/web_dashboard/po/fr.po @@ -0,0 +1,46 @@ +# French translation for openerp-web +# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 +# This file is distributed under the same license as the openerp-web package. +# FIRST AUTHOR , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: openerp-web\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2011-10-07 10:39+0200\n" +"PO-Revision-Date: 2011-10-12 05:10+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: French \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2011-10-13 04:46+0000\n" +"X-Generator: Launchpad (build 14124)\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/web_default_home/po/fr.po b/addons/web_default_home/po/fr.po new file mode 100644 index 00000000000..9f831ef2214 --- /dev/null +++ b/addons/web_default_home/po/fr.po @@ -0,0 +1,38 @@ +# French translation for openerp-web +# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 +# This file is distributed under the same license as the openerp-web package. +# FIRST AUTHOR , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: openerp-web\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2011-10-07 10:39+0200\n" +"PO-Revision-Date: 2011-10-12 05:07+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: French \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2011-10-13 04:46+0000\n" +"X-Generator: Launchpad (build 14124)\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 ""