diff --git a/addons/account/account.py b/addons/account/account.py
index 693ae99b22f7bedd2bfc6b1a89242eb20a08c38e..8efdcad50ebc8db55235add9916e213bcf268a88 100644
--- a/addons/account/account.py
+++ b/addons/account/account.py
@@ -2307,8 +2307,7 @@ class account_model(osv.osv):
         pt_obj = self.pool.get('account.payment.term')
         period_obj = self.pool.get('account.period')
 
-        if context is None:
-            context = {}
+        context = dict(context or {})
 
         if data.get('date', False):
             context = dict(context)
diff --git a/addons/account/account_move_line.py b/addons/account/account_move_line.py
index fbfd10b1d18393603eb85f75501ba9cd34fa1865..20ec20d9e0dc0255322043c7c3f9fb62aeaa40fe 100644
--- a/addons/account/account_move_line.py
+++ b/addons/account/account_move_line.py
@@ -709,8 +709,7 @@ class account_move_line(osv.osv):
 
     #TODO: ONCHANGE_ACCOUNT_ID: set account_tax_id
     def onchange_currency(self, cr, uid, ids, account_id, amount, currency_id, date=False, journal=False, context=None):
-        if context is None:
-            context = {}
+        context = dict(context or {})
         account_obj = self.pool.get('account.account')
         journal_obj = self.pool.get('account.journal')
         currency_obj = self.pool.get('res.currency')
@@ -1131,8 +1130,7 @@ class account_move_line(osv.osv):
         return r_id
 
     def view_header_get(self, cr, user, view_id, view_type, context=None):
-        if context is None:
-            context = {}
+        context = dict(context or {})
         context = self.convert_to_period(cr, user, context=context)
         if context.get('account_id', False):
             cr.execute('SELECT code FROM account_account WHERE id = %s', (context['account_id'], ))
diff --git a/addons/account/wizard/account_report_general_ledger.py b/addons/account/wizard/account_report_general_ledger.py
index 24499e9bb8cd037bbaf232663d75d976af4a5cd8..1e585e75bfac0540efee17f93d51fbd41ff71cbe 100644
--- a/addons/account/wizard/account_report_general_ledger.py
+++ b/addons/account/wizard/account_report_general_ledger.py
@@ -49,8 +49,7 @@ class account_report_general_ledger(osv.osv_memory):
         return res
 
     def _print_report(self, cr, uid, ids, data, context=None):
-        if context is None:
-            context = {}
+        context = dict(context or {})
         data = self.pre_print_report(cr, uid, ids, data, context=context)
         data['form'].update(self.read(cr, uid, ids, ['landscape',  'initial_balance', 'amount_currency', 'sortby'])[0])
         if not data['form']['fiscalyear_id']:# GTK client problem onchange does not consider in save record
diff --git a/addons/document/document.py b/addons/document/document.py
index 0b371f4e82c1ae70c6d6fa42df31b8bcaab5d6f1..0be8df7031b1ec024d3bcad089a3c59710aa17c2 100644
--- a/addons/document/document.py
+++ b/addons/document/document.py
@@ -617,9 +617,8 @@ class node_context(object):
     def __init__(self, cr, uid, context=None):
         self.dbname = cr.dbname
         self.uid = uid
+        context = dict(context or {})
         self.context = context
-        if context is None:
-            context = {}
         context['uid'] = uid
         self._dirobj = openerp.registry(cr.dbname).get('document.directory')
         self.node_file_class = node_file
diff --git a/addons/l10n_be/wizard/l10n_be_partner_vat_listing.py b/addons/l10n_be/wizard/l10n_be_partner_vat_listing.py
index 465dd44de3164630951832b4da2ab8bce093d915..6b1ad3b24ec2d5e03c7e42884042596fc3eab328 100644
--- a/addons/l10n_be/wizard/l10n_be_partner_vat_listing.py
+++ b/addons/l10n_be/wizard/l10n_be_partner_vat_listing.py
@@ -46,6 +46,7 @@ class partner_vat(osv.osv_memory):
     _name = "partner.vat"
 
     def get_partner(self, cr, uid, ids, context=None):
+        context = dict(context or {})
         obj_period = self.pool.get('account.period')
         obj_partner = self.pool.get('res.partner')
         obj_vat_lclient = self.pool.get('vat.listing.clients')
diff --git a/addons/point_of_sale/point_of_sale.py b/addons/point_of_sale/point_of_sale.py
index 9ddbc244051a64d9bc9e71f8550e36f59fd5d0dd..a132ab131b4603adcdd40cf143fcf13fab3bd999 100644
--- a/addons/point_of_sale/point_of_sale.py
+++ b/addons/point_of_sale/point_of_sale.py
@@ -466,8 +466,7 @@ class pos_session(osv.osv):
         """
         call the Point Of Sale interface and set the pos.session to 'opened' (in progress)
         """
-        if context is None:
-            context = dict()
+        context = dict(context or {})
 
         if isinstance(ids, (int, long)):
             ids = [ids]
@@ -556,8 +555,7 @@ class pos_session(osv.osv):
         return True
 
     def open_frontend_cb(self, cr, uid, ids, context=None):
-        if not context:
-            context = {}
+        context = dict(context or {})
         if not ids:
             return {}
         for session in self.browse(cr, uid, ids, context=context):
diff --git a/openerp/models.py b/openerp/models.py
index fafb286f83d6e0c353857a287944d23fd4223903..b5273d466b8440e475cf0c3314057e7432c62ac3 100644
--- a/openerp/models.py
+++ b/openerp/models.py
@@ -1913,7 +1913,7 @@ class BaseModel(object):
         for order_part in orderby.split(','):
             order_split = order_part.split()
             order_field = order_split[0]
-            if order_field in groupby_fields:
+            if order_field == 'id' or order_field in groupby_fields:
 
                 if self._fields[order_field.split(':')[0]].type == 'many2one':
                     order_clause = self._generate_order_by(order_part, query).replace('ORDER BY ', '')