Don't fill cache in search for delete records for issue1176

This commit is contained in:
Cédric Krier
2009-09-14 18:14:21 +02:00
parent 4fddb935d4
commit d7a7cd4eee
+11 -3
View File
@@ -1035,6 +1035,10 @@ class ModelSQL(ModelStorage):
sub_ids = ids[i:i + cursor.IN_MAX]
red_sql, red_ids = reduce_ids('id', sub_ids)
context.setdefault('_delete_records', {})
context['_delete_records'].setdefault(self._name, set())
context['_delete_records'][self._name].update(sub_ids)
for model, field_name in foreign_keys_toupdate:
if not hasattr(model, 'search') \
or not hasattr(model, 'write'):
@@ -1057,9 +1061,6 @@ class ModelSQL(ModelStorage):
if model_ids:
model.delete(cursor, user, model_ids, context=delete_ctx)
context.setdefault('_delete_records', {})
context['_delete_records'].setdefault(self._name, set())
context['_delete_records'][self._name].update(sub_ids)
try:
cursor.execute('DELETE FROM "'+self._table+'" ' \
'WHERE ' + red_sql, red_ids)
@@ -1193,6 +1194,9 @@ class ModelSQL(ModelStorage):
cache = cursor.get_cache(context)
cache.setdefault(self._name, {})
for data in datas:
if data['id'] in context.setdefault('_delete_records', {})\
.setdefault(self._name, set()):
continue
for i in data.keys():
if i in ('_timestamp', '_datetime'):
continue
@@ -1201,6 +1205,10 @@ class ModelSQL(ModelStorage):
if field.model_name not in self.pool.object_name_list():
del data[i]
continue
if data[i] in context.setdefault('_delete_records', {})\
.setdefault(field.model_name, set()):
del data[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))):