From 5ce0720b7526c335bd277eb71c7cdb4d369e7fd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Thu, 9 Aug 2012 16:42:03 +0200 Subject: [PATCH 001/101] [IMP] fields: many2many: extracted query generation, to ease overrides. bzr revid: tde@openerp.com-20120809144203-sm93gsl2db608z85 --- openerp/osv/fields.py | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/openerp/osv/fields.py b/openerp/osv/fields.py index 4ff23956050..c173a8ba8c4 100644 --- a/openerp/osv/fields.py +++ b/openerp/osv/fields.py @@ -648,6 +648,20 @@ class many2many(_column): col2 = '%s_id' % dest_model._table return (tbl, col1, col2) + def _get_query_and_where_params(self, cr, model, ids, values, where_params): + """ Extracted from ``get`` to facilitate fine-tuning of the generated + query. """ + query = 'SELECT %(rel)s.%(id2)s, %(rel)s.%(id1)s \ + FROM %(rel)s, %(from_c)s \ + WHERE %(rel)s.%(id1)s IN %%s \ + AND %(rel)s.%(id2)s = %(tbl)s.id \ + %(where_c)s \ + %(order_by)s \ + %(limit)s \ + OFFSET %(offset)d' \ + % values + return (query, where_params) + def get(self, cr, model, ids, name, user=None, offset=0, context=None, values=None): if not context: context = {} @@ -685,15 +699,7 @@ class many2many(_column): if self._limit is not None: limit_str = ' LIMIT %d' % self._limit - query = 'SELECT %(rel)s.%(id2)s, %(rel)s.%(id1)s \ - FROM %(rel)s, %(from_c)s \ - WHERE %(rel)s.%(id1)s IN %%s \ - AND %(rel)s.%(id2)s = %(tbl)s.id \ - %(where_c)s \ - %(order_by)s \ - %(limit)s \ - OFFSET %(offset)d' \ - % {'rel': rel, + query, where_params = self._get_query_and_where_params(cr, model, ids, {'rel': rel, 'from_c': from_c, 'tbl': obj._table, 'id1': id1, @@ -702,7 +708,8 @@ class many2many(_column): 'limit': limit_str, 'order_by': order_by, 'offset': offset, - } + }, where_params) + cr.execute(query, [tuple(ids),] + where_params) for r in cr.fetchall(): res[r[1]].append(r[0]) From c510b34778a93c53de069a31256d1015591d5dc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Thu, 9 Aug 2012 16:43:45 +0200 Subject: [PATCH 002/101] [REF] mail: mail has now a mesage_subscriber_ids field, many2many modified field, to avoid doing asynchronous queries to have them. Added temp debug field on mail_group. bzr revid: tde@openerp.com-20120809144345-y03iqvhxv8jxo59v --- addons/mail/__init__.py | 2 +- addons/mail/mail_group_view.xml | 1 + addons/mail/mail_subscription.py | 5 +++-- addons/mail/mail_thread.py | 23 +++++++++++++++++++++++ 4 files changed, 28 insertions(+), 3 deletions(-) diff --git a/addons/mail/__init__.py b/addons/mail/__init__.py index cbd477f55e6..cef9fe126aa 100644 --- a/addons/mail/__init__.py +++ b/addons/mail/__init__.py @@ -21,9 +21,9 @@ import mail_alias import mail_message +import mail_subscription import mail_thread import mail_group -import mail_subscription import ir_needaction import res_users import res_partner diff --git a/addons/mail/mail_group_view.xml b/addons/mail/mail_group_view.xml index 5c81d426d6a..fd40a3ed739 100644 --- a/addons/mail/mail_group_view.xml +++ b/addons/mail/mail_group_view.xml @@ -78,6 +78,7 @@ +