Please review this at http://codereview.appspot.com/186208/show

Affected files:
  M trytond/model/modelsql.py


Index: trytond/model/modelsql.py
===================================================================
--- a/trytond/model/modelsql.py
+++ b/trytond/model/modelsql.py
@@ -1217,37 +1217,32 @@
         datas = cursor.dictfetchall()
         cache = cursor.get_cache(context)
         cache.setdefault(self._name, {})
+        delete_records = context.setdefault('_delete_records', {})\
+                .setdefault(self._name, set())
+        object_name_list = self.pool.object_name_list()
+        browse_record_null = BrowseRecordNull()
+        keys = None
+        name2model = {}
         for data in datas:
-            if data['id'] in context.setdefault('_delete_records', {})\
-                    .setdefault(self._name, set()):
+            if data['id'] in delete_records:
                 continue
-            for i in data.keys():
-                if i in ('_timestamp', '_datetime'):
-                    continue
-                field = self._columns[i]
-                if field._type in ('many2one',):
-                    if field.model_name not in
self.pool.object_name_list():
-                        del data[i]
+            if not keys:
+                keys = data.keys()
+                for i in keys[:]:
+                    if i in ('_timestamp', '_datetime'):
+                        keys.remove(i)
                         continue
-                    if data[i] in
context.setdefault('_delete_records', {})\
-                            .setdefault(field.model_name, set()):
-                        del data[i]
+                    field = self._columns[i]
+                    if field._type not in ('many2one',):
+                        keys.remove(i)
                         continue
-                    model = self.pool.get(field.model_name)
-                    if not data[i] and not (isinstance(data[i], (int,
long))
-                            and not isinstance(data[i], type(False))):
-                        data[i] = BrowseRecordNull()
-                    else:
-                        ctx = context
-                        if hasattr(field, 'datetime_field') \
-                                and field.datetime_field:
-                            ctx = context.copy()
-                            if field.datetime_field not in data:
-                                del data[i]
-                                continue
-                            ctx['_datetime'] = data[field.datetime_field]
-                        data[i] = BrowseRecord(cursor, user, data[i],
-                                model, context=ctx)
+                    context['_delete_records'].setdefault(field.model_name,
+                            set())
+                    if field.model_name in object_name_list:
+                        name2model[field.model_name] = \
+                                self.pool.get(field.model_name)
+            for i in keys:
+                del data[i]
             cache[self._name].setdefault(data['id'], {})
             cache[self._name][data['id']].update(data)




-- 
Cédric Krier

B2CK SPRL
Rue de Rotterdam, 4
4000 Liège
Belgium
Tel: +32 472 54 46 59
Email: [email protected]
Jabber: [email protected]
Website: http://www.b2ck.com/
twitter: http://twitter.com/cedrickrier
identi.ca: http://identi.ca/cedrickrier

Attachment: pgp1KGS1YxExj.pgp
Description: PGP signature

Reply via email to