diff --git a/addons/auth_signup/controllers/main.py b/addons/auth_signup/controllers/main.py
index 0b2b3aab9a8..ae4a5a91311 100644
--- a/addons/auth_signup/controllers/main.py
+++ b/addons/auth_signup/controllers/main.py
@@ -40,7 +40,9 @@ class AuthSignupHome(Home):
_logger.error(e.message)
qcontext['error'] = _("Could not create a new account.")
- return request.render('auth_signup.signup', qcontext)
+ response = request.render('auth_signup.signup', qcontext)
+ response.headers['X-Frame-Options'] = 'DENY'
+ return response
@http.route('/web/reset_password', type='http', auth='public', website=True)
def web_auth_reset_password(self, *args, **kw):
diff --git a/addons/event/data/email_template_data.xml b/addons/event/data/email_template_data.xml
index 27dfb81ce1d..2e61e2bc781 100644
--- a/addons/event/data/email_template_data.xml
+++ b/addons/event/data/email_template_data.xml
@@ -328,7 +328,6 @@
Add this event to your calendar
Google
- Outlook
Yahoo
|
diff --git a/addons/event/models/event.py b/addons/event/models/event.py
index 15ae5e53c10..e415ce17818 100644
--- a/addons/event/models/event.py
+++ b/addons/event/models/event.py
@@ -456,6 +456,17 @@ class EventRegistration(models.Model):
pass
return recipients
+ @api.multi
+ def message_get_default_recipients(self):
+ # Prioritize registration email over partner_id, which may be shared when a single
+ # partner booked multiple seats
+ return {
+ r.id: {'partner_ids': [],
+ 'email_to': r.email,
+ 'email_cc': False}
+ for r in self
+ }
+
@api.multi
def action_send_badge_email(self):
""" Open a window to compose an email, with the template - 'event_badge'
diff --git a/odoo/addons/base/ir/ir_qweb/fields.py b/odoo/addons/base/ir/ir_qweb/fields.py
index e40f64c3937..da71d18da6d 100644
--- a/odoo/addons/base/ir/ir_qweb/fields.py
+++ b/odoo/addons/base/ir/ir_qweb/fields.py
@@ -122,7 +122,7 @@ class IntegerConverter(models.AbstractModel):
@api.model
def value_to_html(self, value, options):
- return unicodifier(self.user_lang().format('%d', value, grouping=True).replace(r'-', u'\u2011'))
+ return unicodifier(self.user_lang().format('%d', value, grouping=True).replace(r'-', u'-\N{ZERO WIDTH NO-BREAK SPACE}'))
class FloatConverter(models.AbstractModel):
@@ -142,7 +142,7 @@ class FloatConverter(models.AbstractModel):
value = float_utils.float_round(value, precision_digits=precision)
fmt = '%.{precision}f'.format(precision=precision)
- formatted = self.user_lang().format(fmt, value, grouping=True).replace(r'-', u'\u2011')
+ formatted = self.user_lang().format(fmt, value, grouping=True).replace(r'-', u'-\N{ZERO WIDTH NO-BREAK SPACE}')
# %f does not strip trailing zeroes. %g does but its precision causes
# it to switch to scientific notation starting at a million *and* to
@@ -312,7 +312,7 @@ class MonetaryConverter(models.AbstractModel):
lang = self.user_lang()
formatted_amount = lang.format(fmt, display_currency.round(value),
- grouping=True, monetary=True).replace(r' ', u'\N{NO-BREAK SPACE}').replace(r'-', u'\u2011')
+ grouping=True, monetary=True).replace(r' ', u'\N{NO-BREAK SPACE}').replace(r'-', u'-\N{ZERO WIDTH NO-BREAK SPACE}')
pre = post = u''
if display_currency.position == 'before':
diff --git a/odoo/addons/test_converter/tests/test_html.py b/odoo/addons/test_converter/tests/test_html.py
index c9bb6769d08..61c457e7b8e 100644
--- a/odoo/addons/test_converter/tests/test_html.py
+++ b/odoo/addons/test_converter/tests/test_html.py
@@ -73,7 +73,7 @@ class TestFloatExport(TestBasicExport):
converter = self.get_converter('float')
value = converter(-42.0)
- self.assertEqual(value, u"\u201142.0")
+ self.assertEqual(value, u"-\N{ZERO WIDTH NO-BREAK SPACE}42.0")
value = converter(42.0100)
self.assertEqual(value, "42.01")
@@ -120,7 +120,7 @@ class TestCurrencyExport(TestExport):
converted = self.convert(obj, dest=currency)
self.assertEqual(
- converted, u'\u20110.12'
+ converted, u'-\N{ZERO WIDTH NO-BREAK SPACE}0.12'
u'\N{NO-BREAK SPACE}{symbol}'.format(
obj=obj,
symbol=currency.symbol.encode('utf-8')
diff --git a/odoo/service/server.py b/odoo/service/server.py
index 8a1f2616f6f..2ebdfc404ed 100644
--- a/odoo/service/server.py
+++ b/odoo/service/server.py
@@ -131,7 +131,7 @@ class FSWatcher(object):
if isinstance(event, (FileCreatedEvent, FileModifiedEvent, FileMovedEvent)):
if not event.is_directory:
path = getattr(event, 'dest_path', event.src_path)
- if path.endswith('.py'):
+ if path.endswith('.py') and not os.path.basename(path).startswith('.~'):
try:
source = open(path, 'rb').read() + '\n'
compile(source, path, 'exec')