From 71f1665b986f69c64861143c30ee7eecac9eaf07 Mon Sep 17 00:00:00 2001 From: Olivier Dony Date: Fri, 18 Oct 2013 10:51:18 +0200 Subject: [PATCH 1/4] [FIX] tools.mail: typo causing infinite loop + fix test parameters to actually enter it bzr revid: odo@openerp.com-20131018085118-9b2ltkpff5c8yzmr --- openerp/tests/test_mail.py | 2 +- openerp/tools/mail.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/openerp/tests/test_mail.py b/openerp/tests/test_mail.py index 55265760627..c8bbc0c862b 100755 --- a/openerp/tests/test_mail.py +++ b/openerp/tests/test_mail.py @@ -230,7 +230,7 @@ class TestCleaner(unittest2.TestCase): for ext in test_mail_examples.BUG_1_OUT: self.assertNotIn(ext, new_html, 'html_email_cleaner did not removed invalid content') - new_html = html_email_clean(test_mail_examples.BUG2, remove=True, shorten=True, max_length=100) + new_html = html_email_clean(test_mail_examples.BUG2, remove=True, shorten=True, max_length=4000) for ext in test_mail_examples.BUG_2_IN: self.assertIn(ext, new_html, 'html_email_cleaner wrongly removed valid content') for ext in test_mail_examples.BUG_2_OUT: diff --git a/openerp/tools/mail.py b/openerp/tools/mail.py index 528140e90dc..b287ded9d6d 100644 --- a/openerp/tools/mail.py +++ b/openerp/tools/mail.py @@ -279,8 +279,8 @@ def html_email_clean(html, remove=False, shorten=False, max_length=300): # 3/ add the truncated text in a new node, next to 'read more' node if shorten and not overlength and cur_char_nbr + len(node.text or '') > max_length: node_to_truncate = node - while node.get('in_quote') and node.getparent(): - node_to_truncate = node.getparent() + while node_to_truncate.get('in_quote') and node_to_truncate.getparent() is not None: + node_to_truncate = node_to_truncate.getparent() overlength = True node_to_truncate.set('truncate', '1') node_to_truncate.set('truncate_position', str(max_length - cur_char_nbr)) From 685c4f4d4ca68f30d6278e319a33cb7531123486 Mon Sep 17 00:00:00 2001 From: Christophe Simonis Date: Fri, 18 Oct 2013 11:33:07 +0200 Subject: [PATCH 2/4] [FIX] dropdown menu: compute document width *before* showing the dropdown menu bzr revid: chs@openerp.com-20131018093307-plgk3y4qugv4o784 --- addons/web/static/src/js/chrome.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/web/static/src/js/chrome.js b/addons/web/static/src/js/chrome.js index 11a2e58ae5b..3727b011943 100644 --- a/addons/web/static/src/js/chrome.js +++ b/addons/web/static/src/js/chrome.js @@ -1247,6 +1247,7 @@ instance.web.Client = instance.web.Widget.extend({ this.$el.on('click', '.oe_dropdown_toggle', function(ev) { ev.preventDefault(); var $toggle = $(this); + var doc_width = $(document).width(); var $menu = $toggle.siblings('.oe_dropdown_menu'); $menu = $menu.size() >= 1 ? $menu : $toggle.find('.oe_dropdown_menu'); var state = $menu.is('.oe_opened'); @@ -1255,7 +1256,6 @@ instance.web.Client = instance.web.Widget.extend({ $toggle.add($menu).toggleClass('oe_opened', !state); if (!state) { // Move $menu if outside window's edge - var doc_width = $(document).width(); var offset = $menu.offset(); var menu_width = $menu.width(); var x = doc_width - offset.left - menu_width - 2; From 3853f642ff327f886086c7a766cdf76da7a2b906 Mon Sep 17 00:00:00 2001 From: Christophe Simonis Date: Fri, 18 Oct 2013 11:43:36 +0200 Subject: [PATCH 3/4] [FIX] web: correct StatusField widget to use dropdown menu bzr revid: chs@openerp.com-20131018094336-3s8s3uggs60jwkl0 --- addons/web/static/src/css/base.css | 36 ++++++++------------------- addons/web/static/src/css/base.sass | 36 +++++++++------------------ addons/web/static/src/js/view_form.js | 2 +- addons/web/static/src/xml/base.xml | 6 ++--- 4 files changed, 27 insertions(+), 53 deletions(-) diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index 51c3fd30f3c..5420462cbf1 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -700,10 +700,8 @@ .openerp .oe_dropdown_menu { display: none; position: absolute; - top: 26px; z-index: 3; margin: 0; - padding: 0; border: 1px solid #afafb6; background: white; padding: 4px 0; @@ -1116,7 +1114,7 @@ border-color: #999999; border-color: rgba(0, 0, 0, 0.2); border-style: solid; - border-width: 0 1px 1px; + border-width: 0 2px 1px; -moz-border-radius: 0 0 6px 6px; -webkit-border-radius: 0 0 6px 6px; border-radius: 0 0 6px 6px; @@ -2736,32 +2734,20 @@ -o-transform: rotate(45deg); transform: rotate(45deg); } -.openerp ul.oe_form_status .oe_folded .label, .openerp ul.oe_form_status_clickable .oe_folded .label { - padding-bottom: 8px; -} -.openerp ul.oe_form_status .oe_folded ul, .openerp ul.oe_form_status_clickable .oe_folded ul { - position: absolute; - z-index: 1000; - border-top: 1px solid #cacaca; - float: none; - top: 30px; - right: 0; +.openerp ul.oe_form_status ul.oe_dropdown_menu, .openerp ul.oe_form_status_clickable ul.oe_dropdown_menu { display: none; + padding: 0; + min-width: 0; } -.openerp ul.oe_form_status .oe_folded ul li, .openerp ul.oe_form_status_clickable .oe_folded ul li { +.openerp ul.oe_form_status ul.oe_dropdown_menu.oe_opened, .openerp ul.oe_form_status_clickable ul.oe_dropdown_menu.oe_opened { + display: block; +} +.openerp ul.oe_form_status ul.oe_dropdown_menu li, .openerp ul.oe_form_status_clickable ul.oe_dropdown_menu li { margin: 0; - border-left: 1px solid #cacaca; - display: block; + width: 100%; } -.openerp ul.oe_form_status .oe_folded ul li.label, .openerp ul.oe_form_status_clickable .oe_folded ul li.label { - border: 0; - padding-left: 24px; -} -.openerp ul.oe_form_status .oe_folded ul li:last-child, .openerp ul.oe_form_status_clickable .oe_folded ul li:last-child { - border-bottom: 1px solid #cacaca; -} -.openerp ul.oe_form_status .oe_folded:hover ul, .openerp ul.oe_form_status_clickable .oe_folded:hover ul { - display: block; +.openerp ul.oe_form_status ul.oe_dropdown_menu li span.label, .openerp ul.oe_form_status_clickable ul.oe_dropdown_menu li span.label { + padding-left: 14px; } .openerp ul.oe_form_status li.oe_active, .openerp ul.oe_form_status_clickable li.oe_active { background-color: #5382b9; diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass index a0231387e7f..5900eb9d268 100644 --- a/addons/web/static/src/css/base.sass +++ b/addons/web/static/src/css/base.sass @@ -606,10 +606,8 @@ $sheet-padding: 16px .oe_dropdown_menu display: none position: absolute - top: 26px z-index: 3 margin: 0 - padding: 0 border: 1px solid $tag-border background: white padding: 4px 0 @@ -914,7 +912,7 @@ $sheet-padding: 16px border-color: #999 border-color: rgba(0, 0, 0, 0.2) border-style: solid - border-width: 0 1px 1px + border-width: 0 2px 1px @include radius(0 0 6px 6px) @include background-clip() li @@ -2174,28 +2172,18 @@ $sheet-padding: 16px @include skew-gradient(#fcfcfc, #dedede) @include radius(3px) @include transform(rotate(45deg)) - .oe_folded - .label - padding-bottom: 8px - ul - position: absolute - z-index: 1000 - border-top: 1px solid #cacaca - float: none - top: 30px - right: 0 - display: none - li - margin: 0 - border-left: 1px solid #cacaca - display: block - li.label - border: 0 - padding-left: 24px - li:last-child - border-bottom: 1px solid #cacaca - &:hover ul + ul.oe_dropdown_menu + display: none + padding: 0 + min-width: 0 + &.oe_opened display: block + li + margin: 0 + width: 100% + span.label + padding-left: 14px + li.oe_active @include vertical-gradient(#729fcf, #3465a4) > .arrow span diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 324896112cc..bcea1bf5bbe 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -5475,7 +5475,7 @@ instance.web.form.FieldStatus = instance.web.form.AbstractField.extend({ }); this.get_selection(); if (this.options.clickable) { - this.$el.on('click','li:not(.oe_folded)',this.on_click_stage); + this.$el.on('click','li[data-id]',this.on_click_stage); } if (this.$el.parent().is('header')) { this.$el.after('
'); diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 8977e96ee88..6cbc3fb5692 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -1228,9 +1228,9 @@ -
  • - ... -
      +
    • + More +
      • From 7636d71dfcff09648d080ea4513871a0e27b08ad Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Fri, 18 Oct 2013 14:57:27 +0200 Subject: [PATCH 4/4] [FIX] potential bug in server-side web framework, now forbids users to call method when not authentified bzr revid: nicolas.vanhoren@openerp.com-20131018125727-qtkzkiwkhw4z78kr --- addons/web/http.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/addons/web/http.py b/addons/web/http.py index 7e12a71e44a..4bda58117d4 100644 --- a/addons/web/http.py +++ b/addons/web/http.py @@ -189,6 +189,8 @@ class WebRequest(object): def auth_method_user(): request.uid = request.session.uid + if not request.uid: + raise SessionExpiredException("Session expired") def auth_method_admin(): if not request.db: