From 3a2939d494d9270b5246de5af5f77480a6505170 Mon Sep 17 00:00:00 2001 From: qsm-odoo Date: Thu, 18 Oct 2018 12:20:34 +0200 Subject: [PATCH 1/8] [FIX] web_editor: disable strange resize handles on Firefox See comments in the code for details... Closes https://github.com/odoo/odoo/pull/27964 --- addons/web_editor/static/src/js/rte.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/addons/web_editor/static/src/js/rte.js b/addons/web_editor/static/src/js/rte.js index da2c2acd5e0..940d8482341 100644 --- a/addons/web_editor/static/src/js/rte.js +++ b/addons/web_editor/static/src/js/rte.js @@ -518,6 +518,14 @@ var RTE = Widget.extend({ return; } + // Removes strange _moz_abspos attribute when it appears. Cannot + // find another solution which works in all cases. A grabber still + // appears at the same time which I did not manage to remove. + // TODO find a complete and better solution + _.defer(function () { + $editable.find('[_moz_abspos]').removeAttr('_moz_abspos'); + }); + if ($target.is('a')) { /** * Remove content editable everywhere and add it on the link only so that characters can be added From 22f0da809e84618901b7ca4b78582abd64c03c55 Mon Sep 17 00:00:00 2001 From: Olivier Colson Date: Fri, 19 Oct 2018 15:04:12 +0200 Subject: [PATCH 2/8] [IMP] account: Trigger a validation error when trying to set the same currency on a journal as on its parent company. Until v12, doing this is wrong. The currency_id field of account.journal should only be used if the journal is in a different currency. Otherwise, this field should stay empty. //NOTE FOR FORWARD-PORT: this commit should not be ported to 12.0 and further. --- addons/account/i18n/account.pot | 5 +++++ addons/account/models/account.py | 2 ++ 2 files changed, 7 insertions(+) diff --git a/addons/account/i18n/account.pot b/addons/account/i18n/account.pot index 8b3c1c4f6cc..657f2638631 100644 --- a/addons/account/i18n/account.pot +++ b/addons/account/i18n/account.pot @@ -10051,3 +10051,8 @@ msgstr "" msgid "→ Count" msgstr "" +#. module: account +#: code:addons/account/models/account.py:309 +#, python-format +msgid "Currency field should only be set if the journal's currency is different from the company's. Leave the field blank to use company currency." +msgstr "" diff --git a/addons/account/models/account.py b/addons/account/models/account.py index 1eedaf8437c..f8f1303277c 100644 --- a/addons/account/models/account.py +++ b/addons/account/models/account.py @@ -305,6 +305,8 @@ class AccountJournal(models.Model): @api.constrains('currency_id', 'default_credit_account_id', 'default_debit_account_id') def _check_currency(self): if self.currency_id: + if self.currency_id == self.company_id.currency_id: + raise ValidationError(_("Currency field should only be set if the journal's currency is different from the company's. Leave the field blank to use company currency.")) if self.default_credit_account_id and not self.default_credit_account_id.currency_id.id == self.currency_id.id: raise ValidationError(_('Configuration error!\nThe currency of the journal should be the same than the default credit account.')) if self.default_debit_account_id and not self.default_debit_account_id.currency_id.id == self.currency_id.id: From 3008f7d254c95f200b9ca0e83eeee76557a9362a Mon Sep 17 00:00:00 2001 From: "Julien (juc) Castiaux" Date: Wed, 17 Oct 2018 14:01:21 +0200 Subject: [PATCH 3/8] [FIX] point_of_sale: Button spamming create duplicates Spamming the save button when creating a new custommer in point- of-sale create duplicate users. This PR disable the button once clicked and re-enable it when all the processing is done. opw-1895302 close #23919 --- addons/point_of_sale/static/src/js/screens.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/addons/point_of_sale/static/src/js/screens.js b/addons/point_of_sale/static/src/js/screens.js index b37dc13ff95..8b1b001c340 100644 --- a/addons/point_of_sale/static/src/js/screens.js +++ b/addons/point_of_sale/static/src/js/screens.js @@ -1224,6 +1224,9 @@ var ClientListScreenWidget = ScreenWidget.extend({ fields.id = partner.id || false; fields.country_id = fields.country_id || false; + var contents = this.$(".client-details-contents"); + contents.off("click", ".button.save"); + new Model('res.partner').call('create_from_ui',[fields]).then(function(partner_id){ self.saved_client_details(partner_id); },function(err,event){ @@ -1237,6 +1240,7 @@ var ClientListScreenWidget = ScreenWidget.extend({ 'title': _t('Error: Could not Save Changes'), 'body': error_body, }); + contents.on('click','.button.save',function(){ self.save_client_details(partner); }); }); }, @@ -1254,6 +1258,8 @@ var ClientListScreenWidget = ScreenWidget.extend({ // has created, and reload_partner() must have loaded the newly created partner. self.display_client_details('hide'); } + }).always(function(){ + $(".client-details-contents").on('click','.button.save',function(){ self.save_client_details(partner); }); }); }, From 1ee180ee0dddb545f4d77247bc4e5d051a2a3a87 Mon Sep 17 00:00:00 2001 From: Martin Trigaux Date: Tue, 23 Oct 2018 15:46:09 +0200 Subject: [PATCH 4/8] [FIX] doc: do not duplicate header And use tabs instead of spaces Otherwise it looks for the file named "__manifest__.py 2014-..." --- doc/howtos/backend/exercise-report | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/doc/howtos/backend/exercise-report b/doc/howtos/backend/exercise-report index d3cbb2c0e49..c887829c145 100644 --- a/doc/howtos/backend/exercise-report +++ b/doc/howtos/backend/exercise-report @@ -3,8 +3,8 @@ Index: addons/openacademy/__manifest__.py =================================================================== ---- addons.orig/openacademy/__manifest__.py 2014-08-26 17:26:21.535783052 +0200 -+++ addons/openacademy/__manifest__.py 2014-08-26 17:26:21.531783052 +0200 +--- addons.orig/openacademy/__manifest__.py 2014-08-29 08:39:43.975536806 +0200 ++++ addons/openacademy/__manifest__.py 2014-08-29 08:39:52.000000000 +0200 @@ -21,7 +21,7 @@ 'version': '0.1', @@ -14,10 +14,6 @@ Index: addons/openacademy/__manifest__.py # always loaded 'data': [ -Index: addons/openacademy/__manifest__.py -=================================================================== ---- addons.orig/openacademy/__manifest__.py 2014-08-29 08:39:43.975536806 +0200 -+++ addons/openacademy/__manifest__.py 2014-08-29 08:39:52.000000000 +0200 @@ -31,6 +31,7 @@ 'views/openacademy.xml', 'views/partner.xml', From ef48b81ab127dd717a4a9d106edd5c51121bc8f7 Mon Sep 17 00:00:00 2001 From: Romain Derie Date: Mon, 15 Oct 2018 14:26:24 +0200 Subject: [PATCH 5/8] [FIX] website_sale: prevent other sessions to crash after checkout Before this commit: If an user has multiple session on a database (eg: he is connected both on his smartphone and his laptop on the ecommerce), and there is a cart in these session, confirming the cart on one of the session will make other sessions unable to use the checkout anymore. This is because other sessions will still contains the Sale Order that is now 'sent' and updating the cart will raise an error: `It is forbidden to modify a sales order which is not in draft status.` Now: If the SO to be updated is not in `draft` anymore, we create a new one. Step to reproduce: - Login on ecommerce from device A - Add product in cart, the SO will be added on session - Login on ecommerce from device B - Pay the cart (it will retrieve the SO from device A) - At that point, the cart is paid and the SO is removed from session on device B but other devices won't be able to use the checkout anymore as they still have the SO in session which is in `sent` state. Thus, any action on cart will raise the error Note: 1. We can't implement that behavior in `sale_get_order()` as it is supposed to return SO in `sent` state after checkout. 2. We can't implement that behavior in `_cart_update()` as it is inherited in some module. Thus, implementing that behavior in `cart_update()` would change `self = order` but inherited methods would still have initial `self`. 3. Implementing the behavior in the controller it is already done (differently) in `cart_update_json()`. Fixes #27508, closes #27794 --- addons/website_sale/controllers/main.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py index 5a576083582..5f7446fea99 100644 --- a/addons/website_sale/controllers/main.py +++ b/addons/website_sale/controllers/main.py @@ -370,7 +370,11 @@ class WebsiteSale(http.Controller): @http.route(['/shop/cart/update'], type='http', auth="public", methods=['POST'], website=True, csrf=False) def cart_update(self, product_id, add_qty=1, set_qty=0, **kw): - request.website.sale_get_order(force_create=1)._cart_update( + sale_order = request.website.sale_get_order(force_create=1) + if sale_order.state != 'draft': + request.session['sale_order_id'] = None + sale_order = request.website.sale_get_order(force_create=True) + sale_order._cart_update( product_id=int(product_id), add_qty=add_qty, set_qty=set_qty, From 27cc2ae3a91ad7a2fb16923256a359406e8bd68c Mon Sep 17 00:00:00 2001 From: Martin Trigaux Date: Tue, 23 Oct 2018 15:53:50 +0200 Subject: [PATCH 6/8] [FIX] doc: backport of 9a07a4599ce to 10.0 To be compatible with sphinx >= 1.6 --- doc/_extensions/odoo_ext/__init__.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/doc/_extensions/odoo_ext/__init__.py b/doc/_extensions/odoo_ext/__init__.py index 0ec55620497..c1637623e62 100644 --- a/doc/_extensions/odoo_ext/__init__.py +++ b/doc/_extensions/odoo_ext/__init__.py @@ -8,10 +8,13 @@ import sphinx.environment import sphinx.builders.html from docutils import nodes def setup(app): - if getattr(app.config, 'html_translator_class', None): - app.warn("Overriding the explicitly set html_translator_class setting", - location="odoo extension") - app.config.html_translator_class = 'odoo_ext.translator.BootstrapTranslator' + if hasattr(app, 'set_translator'): + app.set_translator('html', translator.BootstrapTranslator) + else: + if getattr(app.config, 'html_translator_class', None): + app.warn("Overriding the explicitly set html_translator_class setting", + location="odoo extension") + app.config.html_translator_class = 'odoo_ext.translator.BootstrapTranslator' switcher.setup(app) app.add_config_value('odoo_cover_default', None, 'env') From a0050c323cbbd43de016978406f7832b18ade161 Mon Sep 17 00:00:00 2001 From: Martin Trigaux Date: Tue, 23 Oct 2018 15:56:58 +0200 Subject: [PATCH 7/8] [FIX] doc: backport of ac37ca39eaf to 10.0 To be compatible with sphinx >= 1.8 --- doc/_extensions/github_link.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/doc/_extensions/github_link.py b/doc/_extensions/github_link.py index cd0c5380621..b09177cf6e2 100644 --- a/doc/_extensions/github_link.py +++ b/doc/_extensions/github_link.py @@ -94,11 +94,12 @@ def add_doc_link(app, pagename, templatename, context, doctree): if not app.config.github_user and app.config.github_project: return - # FIXME: find other way to recover current document's source suffix - # in Sphinx 1.3 it's possible to have mutliple source suffixes and that - # may be useful in the future source_suffix = app.config.source_suffix - source_suffix = source_suffix if isinstance(source_suffix, basestring) else source_suffix[0] + # in 1.3 source_suffix can be a list + # in 1.8 source_suffix can be a mapping + # FIXME: will break if we ever add support for !rst markdown documents maybe + if not isinstance(source_suffix, basestring): + source_suffix = next(iter(source_suffix)) # can't use functools.partial because 3rd positional is line not mode context['github_link'] = lambda mode='edit': make_github_link( app, 'doc/%s%s' % (pagename, source_suffix), mode=mode) From d5cc05c9948c744f8f011250380cea20f9f859b2 Mon Sep 17 00:00:00 2001 From: Martin Trigaux Date: Tue, 23 Oct 2018 15:16:21 +0200 Subject: [PATCH 8/8] [FIX] doc: correct reference to the line in the file Introduced at 94e82753acc36 --- doc/reference/orm.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/reference/orm.rst b/doc/reference/orm.rst index bec009411b7..a8a95895b01 100644 --- a/doc/reference/orm.rst +++ b/doc/reference/orm.rst @@ -942,17 +942,17 @@ them (e.g. to change their default sort order): .. literalinclude:: ../../odoo/addons/test_documentation_examples/extension.py :language: python - :lines: 5- + :lines: 7- .. literalinclude:: ../../odoo/addons/test_documentation_examples/tests/test_extension.py :language: python - :lines: 8,13 + :lines: 10,15 will yield: .. literalinclude:: ../../odoo/addons/test_documentation_examples/tests/test_extension.py :language: text - :lines: 11 + :lines: 13 .. note:: it will also yield the various :ref:`automatic fields ` unless they've been disabled