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')