diff --git a/doc/howtos/web.rst b/doc/howtos/web.rst
index b7c6a546d2e..a2641cbfdef 100644
--- a/doc/howtos/web.rst
+++ b/doc/howtos/web.rst
@@ -1973,7 +1973,7 @@ Read-Write Field
Read-only fields, which only display content and don't allow the
user to modify it can be useful, but most fields in Odoo also allow editing.
This makes the field classes more complicated, mostly because fields are
-supposed to handle both and editable and non-editable mode, those modes are
+supposed to handle both editable and non-editable mode, those modes are
often completely different (for design and usability purpose) and the fields
must be able to switch between modes at any moment.
diff --git a/openerp/addons/base/ir/ir_ui_view.py b/openerp/addons/base/ir/ir_ui_view.py
index 5a324fdd8e1..2e8f71f234f 100644
--- a/openerp/addons/base/ir/ir_ui_view.py
+++ b/openerp/addons/base/ir/ir_ui_view.py
@@ -552,7 +552,7 @@ class view(osv.osv):
separator = child.get('separator', ',')
if separator == ' ':
separator = None # squash spaces
- to_add = map(str.strip, child.get('add', '').split(separator))
+ to_add = filter(bool, map(str.strip, child.get('add', '').split(separator)))
to_remove = map(str.strip, child.get('remove', '').split(separator))
values = map(str.strip, node.get(attribute, '').split(separator))
value = (separator or ' ').join(filter(lambda s: s not in to_remove, values) + to_add)
diff --git a/openerp/addons/base/tests/test_views.py b/openerp/addons/base/tests/test_views.py
index bc7b5edf11c..74d36e0ad00 100644
--- a/openerp/addons/base/tests/test_views.py
+++ b/openerp/addons/base/tests/test_views.py
@@ -748,7 +748,7 @@ class test_views(ViewCase):
bob tata lolo
bob, tata,lolo
-
+
"""
})
@@ -768,7 +768,7 @@ class test_views(ViewCase):
E.p("Replacement data"),
E.footer(
E.button(name="action_next", type="object", string="New button"),
- thing="bob lolo bibi and co", otherthing="lolo,bibi"
+ thing="bob lolo bibi and co", otherthing="lolo"
),
string="Replacement title", version="7.0"))
diff --git a/openerp/models.py b/openerp/models.py
index 249610e0598..8b34a64a410 100644
--- a/openerp/models.py
+++ b/openerp/models.py
@@ -2225,7 +2225,7 @@ class BaseModel(object):
# if val is a many2one, just write the ID
if type(val) == tuple:
val = val[0]
- if val is not False:
+ if f._type == 'boolean' or val is not False:
cr.execute(update_query, (ss[1](val), key))
@api.model
diff --git a/openerp/service/model.py b/openerp/service/model.py
index decfd5d8ba1..6cc4a3fbde9 100644
--- a/openerp/service/model.py
+++ b/openerp/service/model.py
@@ -54,7 +54,12 @@ def check(f):
if args and isinstance(args[-1], dict):
ctx = args[-1]
elif isinstance(kwargs, dict):
- ctx = kwargs.get('context', {})
+ if 'context' in kwargs:
+ ctx = kwargs['context']
+ elif 'kwargs' in kwargs:
+ # http entry points such as call_kw()
+ ctx = kwargs['kwargs'].get('context')
+
uid = 1
if args and isinstance(args[0], (long, int)):