diff --git a/addons/calendar/calendar.py b/addons/calendar/calendar.py index aa89eb6cc90..9b251ee80fd 100644 --- a/addons/calendar/calendar.py +++ b/addons/calendar/calendar.py @@ -1636,6 +1636,14 @@ class calendar_event(osv.Model): self.create_attendees(cr, uid, [res], context=context) return res + def export_data(self, cr, uid, ids, *args, **kwargs): + """ Override to convert virtual ids to ids """ + real_ids = [] + for real_id in get_real_ids(ids): + if real_id not in real_ids: + real_ids.append(real_id) + return super(calendar_event, self).export_data(cr, uid, real_ids, *args, **kwargs) + def read_group(self, cr, uid, domain, fields, groupby, offset=0, limit=None, context=None, orderby=False, lazy=True): context = dict(context or {}) diff --git a/addons/membership/membership.py b/addons/membership/membership.py index a38a7d9cdd6..41244648a59 100644 --- a/addons/membership/membership.py +++ b/addons/membership/membership.py @@ -293,7 +293,7 @@ class Partner(osv.osv): store = { 'account.invoice': (_get_invoice_partner, ['state', 'invoice_line_ids', 'payment_ids'], 10), 'membership.membership_line': (_get_partner_id, ['state'], 10, ), - 'res.partner': (lambda self, cr, uid, ids, c={}: ids, ['free_member'], 10) + 'res.partner': (_get_partners, ['free_member', 'membership_state', 'associate_member'], 10) }, help="Date from which membership becomes active."), 'membership_stop': fields.function( _membership_date, @@ -301,7 +301,7 @@ class Partner(osv.osv): store = { 'account.invoice': (_get_invoice_partner, ['state', 'invoice_line_ids', 'payment_ids'], 10), 'membership.membership_line': (_get_partner_id, ['state'], 10), - 'res.partner': (lambda self, cr, uid, ids, c={}: ids, ['free_member'], 10) + 'res.partner': (_get_partners, ['free_member', 'membership_state', 'associate_member'], 10) }, help="Date until which membership remains active."), 'membership_cancel': fields.function( _membership_date, @@ -309,7 +309,7 @@ class Partner(osv.osv): store = { 'account.invoice': (_get_invoice_partner, ['state', 'invoice_line_ids', 'payment_ids'], 11), 'membership.membership_line': (_get_partner_id, ['state'], 10), - 'res.partner': (lambda self, cr, uid, ids, c={}: ids, ['free_member'], 10) + 'res.partner': (_get_partners, ['free_member', 'membership_state', 'associate_member'], 10) }, help="Date on which membership has been cancelled"), } diff --git a/addons/point_of_sale/static/src/js/models.js b/addons/point_of_sale/static/src/js/models.js index 543e47c8128..84fc1f42634 100644 --- a/addons/point_of_sale/static/src/js/models.js +++ b/addons/point_of_sale/static/src/js/models.js @@ -1721,6 +1721,10 @@ exports.Order = Backbone.Model.extend({ this.select_orderline(this.get_last_orderline()); }, add_product: function(product, options){ + if(this._printed){ + this.destroy(); + return this.pos.get_order().add_product(product, options); + } this.assert_editable(); options = options || {}; var attr = JSON.parse(JSON.stringify(product)); diff --git a/addons/resource/resource.py b/addons/resource/resource.py index 2c62cfe5fd3..6f558c04392 100644 --- a/addons/resource/resource.py +++ b/addons/resource/resource.py @@ -319,6 +319,7 @@ class resource_calendar(osv.osv): # no calendar: try to use the default_interval, then return directly if id is None: + working_interval = [] if default_interval: working_interval = (start_dt.replace(hour=default_interval[0], minute=0, second=0), start_dt.replace(hour=default_interval[1], minute=0, second=0)) @@ -532,7 +533,6 @@ class resource_calendar(osv.osv): intervals = [] planned_days = 0 iterations = 0 - current_datetime = day_date.replace(hour=0, minute=0, second=0) while planned_days < days and iterations < 100: diff --git a/addons/resource/tests/test_resource.py b/addons/resource/tests/test_resource.py index 24866011b94..14afecf6b44 100644 --- a/addons/resource/tests/test_resource.py +++ b/addons/resource/tests/test_resource.py @@ -413,6 +413,8 @@ class TestResource(TestResourceCommon): res = self.resource_calendar.schedule_days_get_date(cr, uid, self.calendar_id, 5, day_date=self.date1) self.assertEqual(res.date(), datetime.strptime('2013-02-26 00:0:00', _format).date(), 'resource_calendar: wrong days scheduling') + res = self.resource_calendar.schedule_days_get_date(cr, uid, self.calendar_id, -2, day_date=self.date1) + self.assertEqual(res.date(), datetime.strptime('2013-02-08 00:00:00', _format).date(), 'resource_calendar: wrong days scheduling') res = self.resource_calendar.schedule_days_get_date( cr, uid, self.calendar_id, 5, day_date=self.date1, diff --git a/addons/web_editor/static/src/css/snippets.css b/addons/web_editor/static/src/css/snippets.css index 950e5eb4e70..b4d74eecac6 100644 --- a/addons/web_editor/static/src/css/snippets.css +++ b/addons/web_editor/static/src/css/snippets.css @@ -1,3 +1,4 @@ +@charset "UTF-8"; /* ---- SNIPPET EDITOR ---- {{{ */ #oe_snippets #o_left_bar, #oe_snippets #o_arrow { position: fixed; @@ -8,6 +9,10 @@ -moz-box-shadow: 0px 10px 10px -10px black inset; -webkit-box-shadow: 0px 10px 10px -10px black inset; box-shadow: 0px 10px 10px -10px black inset; + font-size: 14px; +} +#oe_snippets #o_left_bar .snippets_loading, #oe_snippets #o_arrow .snippets_loading { + color: white; } #oe_snippets #o_arrow { z-index: 1009; @@ -487,4 +492,4 @@ .move-important, .move-important * { cursor: move !important; -} \ No newline at end of file +} diff --git a/addons/web_editor/static/src/css/snippets.sass b/addons/web_editor/static/src/css/snippets.sass index 2f042640b70..ed5bd46a525 100644 --- a/addons/web_editor/static/src/css/snippets.sass +++ b/addons/web_editor/static/src/css/snippets.sass @@ -13,6 +13,9 @@ bottom: 0 background: rgb(40,40,40) +box-shadow(0px 10px 10px -10px black inset) + font-size: 14px + .snippets_loading + color: white #o_arrow z-index: 1009 width: 24px diff --git a/addons/web_editor/static/src/js/snippets.editor.js b/addons/web_editor/static/src/js/snippets.editor.js index 20fefdb4aef..fef552c0216 100644 --- a/addons/web_editor/static/src/js/snippets.editor.js +++ b/addons/web_editor/static/src/js/snippets.editor.js @@ -343,7 +343,7 @@ var BuildingBlock = Widget.extend({ $html.find('.o_not_editable').attr("contentEditable", false); - $left_bar.append($html); + $left_bar.html($html); // animate for list of snippet blocks $left_bar.on('click', '.scroll-link', function (event) { diff --git a/addons/web_editor/static/src/js/summernote.js b/addons/web_editor/static/src/js/summernote.js index 3ce90c14496..d300f8b28ca 100644 --- a/addons/web_editor/static/src/js/summernote.js +++ b/addons/web_editor/static/src/js/summernote.js @@ -946,8 +946,7 @@ options.keyMap.pc['ESCAPE'] = 'cancel'; options.keyMap.mac['SHIFT+TAB'] = 'untab'; options.keyMap.mac['BACKSPACE'] = 'backspace'; -options.keyMap.mac['CMD+BACKSPACE'] = 'delete'; -options.keyMap.mac['SHIFT+BACKSPACE'] = 'delete'; +options.keyMap.mac['DELETE'] = 'delete'; options.keyMap.mac['ENTER'] = 'enter'; options.keyMap.mac['ESCAPE'] = 'cancel'; @@ -1816,7 +1815,6 @@ eventHandler.toolbar.button.updateRecentColor = function (elBtn, sEvent, sValue) font.style.backgroundColor = sValue !== 'inherit' ? sValue : ""; } } - event.preventDefault(); return false; }; diff --git a/addons/web_editor/static/src/xml/snippets.xml b/addons/web_editor/static/src/xml/snippets.xml index ccced98af2c..0b194de6af9 100644 --- a/addons/web_editor/static/src/xml/snippets.xml +++ b/addons/web_editor/static/src/xml/snippets.xml @@ -20,7 +20,9 @@
Insert Blocks
-
+
+ Snippets are loading... +
diff --git a/addons/website_hr_recruitment/data/hr_job_demo.xml b/addons/website_hr_recruitment/data/hr_job_demo.xml index 962f468b2f9..45a0fed846a 100644 --- a/addons/website_hr_recruitment/data/hr_job_demo.xml +++ b/addons/website_hr_recruitment/data/hr_job_demo.xml @@ -209,7 +209,7 @@