diff --git a/addons/account/edi/invoice.py b/addons/account/edi/invoice.py index 2c2a754de3b..c82d041ef85 100644 --- a/addons/account/edi/invoice.py +++ b/addons/account/edi/invoice.py @@ -21,7 +21,7 @@ from openerp.osv import osv, fields from openerp.addons.edi import EDIMixin -from urllib import urlencode +from werkzeug import url_encode INVOICE_LINE_EDI_STRUCT = { 'name': True, @@ -274,7 +274,7 @@ class account_invoice(osv.osv, EDIMixin): "no_note": "1", "bn": "OpenERP_Invoice_PayNow_" + inv.currency_id.name, } - res[inv.id] = "https://www.paypal.com/cgi-bin/webscr?" + urlencode(params) + res[inv.id] = "https://www.paypal.com/cgi-bin/webscr?" + url_encode(params) return res _columns = { diff --git a/addons/audittrail/audittrail.py b/addons/audittrail/audittrail.py index 71008e0855b..965086461fb 100644 --- a/addons/audittrail/audittrail.py +++ b/addons/audittrail/audittrail.py @@ -432,6 +432,14 @@ def prepare_audittrail_log_line(cr, uid, pool, model, resource_id, method, old_v 'old_value_text': key in old_values and old_values[key]['text'].get(field_name) } lines[key].append(data) + # On read log add current values for fields. + if method == 'read': + data={ + 'name': field_name, + 'old_value': key in old_values and old_values[key]['value'].get(field_name), + 'old_value_text': key in old_values and old_values[key]['text'].get(field_name) + } + lines[key].append(data) return lines def process_data(cr, uid, pool, res_ids, model, method, old_values=None, new_values=None, field_list=None): diff --git a/addons/point_of_sale/point_of_sale.py b/addons/point_of_sale/point_of_sale.py index f18edf39e85..f7c3d189fa3 100644 --- a/addons/point_of_sale/point_of_sale.py +++ b/addons/point_of_sale/point_of_sale.py @@ -565,7 +565,7 @@ class pos_order(osv.osv): try: self.signal_paid(cr, uid, [order_id]) except Exception as e: - _logger.error('Could not mark POS Order as Paid: %s', tools.ustr(e)) + _logger.error('Could not fully process the POS Order: %s', tools.ustr(e)) if to_invoice: self.action_invoice(cr, uid, [order_id], context) @@ -725,8 +725,6 @@ class pos_order(osv.osv): move_obj = self.pool.get('stock.move') for order in self.browse(cr, uid, ids, context=context): - if not order.state=='draft': - continue addr = order.partner_id and partner_obj.address_get(cr, uid, [order.partner_id.id], ['delivery']) or {} picking_id = picking_obj.create(cr, uid, { 'origin': order.name, @@ -1167,8 +1165,8 @@ class pos_order(osv.osv): return self.write(cr, uid, ids, {'state': 'payment'}, context=context) def action_paid(self, cr, uid, ids, context=None): - self.create_picking(cr, uid, ids, context=context) self.write(cr, uid, ids, {'state': 'paid'}, context=context) + self.create_picking(cr, uid, ids, context=context) return True def action_cancel(self, cr, uid, ids, context=None): diff --git a/addons/sale/edi/sale_order.py b/addons/sale/edi/sale_order.py index bf015b3cdfc..cd1b18ef9b5 100644 --- a/addons/sale/edi/sale_order.py +++ b/addons/sale/edi/sale_order.py @@ -22,7 +22,7 @@ from openerp.osv import osv, fields from openerp.addons.edi import EDIMixin from openerp.tools.translate import _ -from urllib import urlencode +from werkzeug import url_encode SALE_ORDER_LINE_EDI_STRUCT = { 'sequence': True, @@ -197,7 +197,7 @@ class sale_order(osv.osv, EDIMixin): "no_note": "1", "bn": "OpenERP_Order_PayNow_" + order.pricelist_id.currency_id.name, } - res[order.id] = "https://www.paypal.com/cgi-bin/webscr?" + urlencode(params) + res[order.id] = "https://www.paypal.com/cgi-bin/webscr?" + url_encode(params) return res _columns = { diff --git a/openerp/addons/base/ir/ir_model.py b/openerp/addons/base/ir/ir_model.py index aca8ac466c8..442dc0ce741 100644 --- a/openerp/addons/base/ir/ir_model.py +++ b/openerp/addons/base/ir/ir_model.py @@ -351,6 +351,8 @@ class ir_model_fields(osv.osv): raise except_orm(_('Error'), _("Model %s does not exist!") % vals['relation']) if vals['model'] in self.pool: + if vals['model'].startswith('x_') and vals['name'] == 'x_name': + self.pool[vals['model']]._rec_name = 'x_name' self.pool[vals['model']].__init__(self.pool, cr) #Added context to _auto_init for special treatment to custom field for select_level ctx = dict(context, diff --git a/openerp/addons/base/ir/ir_ui_view.py b/openerp/addons/base/ir/ir_ui_view.py index f52b44e077a..b2b2726a7c1 100644 --- a/openerp/addons/base/ir/ir_ui_view.py +++ b/openerp/addons/base/ir/ir_ui_view.py @@ -229,7 +229,7 @@ class view(osv.osv): ['type', '=', view_type], ['inherit_id', '=', False], ] - ids = self.search(cr, uid, domain, limit=1, order='priority', context=context) + ids = self.search(cr, uid, domain, limit=1, context=context) if not ids: return False return ids[0] diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index a198e013746..cb033ed7994 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -3758,9 +3758,13 @@ class BaseModel(object): ir_values_obj.unlink(cr, uid, ir_value_ids, context=context) for order, obj_name, store_ids, fields in result_store: - if obj_name != self._name: + if obj_name == self._name: + effective_store_ids = list(set(store_ids) - set(ids)) + else: + effective_store_ids = store_ids + if effective_store_ids: obj = self.pool[obj_name] - cr.execute('select id from '+obj._table+' where id IN %s', (tuple(store_ids),)) + cr.execute('select id from '+obj._table+' where id IN %s', (tuple(effective_store_ids),)) rids = map(lambda x: x[0], cr.fetchall()) if rids: obj._store_set_values(cr, uid, rids, fields, context) @@ -5130,7 +5134,14 @@ class BaseModel(object): # shortcut read if we only want the ids return [{'id': id} for id in record_ids] - result = self.read(cr, uid, record_ids, fields, context=context) + # read() ignores active_test, but it would forward it to any downstream search call + # (e.g. for x2m or function fields), and this is not the desired behavior, the flag + # was presumably only meant for the main search(). + # TODO: Move this to read() directly? + read_ctx = dict(context or {}) + read_ctx.pop('active_test', None) + + result = self.read(cr, uid, record_ids, fields, context=read_ctx) if len(result) <= 1: return result diff --git a/openerp/tools/misc.py b/openerp/tools/misc.py index d63e2a987e9..b9fdef9b421 100644 --- a/openerp/tools/misc.py +++ b/openerp/tools/misc.py @@ -476,6 +476,7 @@ ALL_LANGUAGES = { 'lo_LA': u'Lao / ພາສາລາວ', 'lt_LT': u'Lithuanian / Lietuvių kalba', 'lv_LV': u'Latvian / latviešu valoda', + 'mk_MK': u'Macedonian / македонски јазик', 'ml_IN': u'Malayalam / മലയാളം', 'mn_MN': u'Mongolian / монгол', 'nb_NO': u'Norwegian Bokmål / Norsk bokmål',