From 8f62ece1518ed9acb6c5dcb203014d6d8e8e472e Mon Sep 17 00:00:00 2001 From: Guewen Baconnier Date: Mon, 3 Feb 2014 11:30:25 +0100 Subject: [PATCH] remove relations when purging models avoid ''NoneType' object has no attribute 'exists'' error when purging models fix my change guewen.baconnier@camptocamp.com-20140203103254-v1mzu2uib047xb9h, wrong lines replaced... --- database_cleanup/model/purge_models.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/database_cleanup/model/purge_models.py b/database_cleanup/model/purge_models.py index 8355b4921..811da30fe 100644 --- a/database_cleanup/model/purge_models.py +++ b/database_cleanup/model/purge_models.py @@ -51,6 +51,7 @@ class CleanupPurgeLineModel(orm.TransientModel): model_pool = self.pool['ir.model'] attachment_pool = self.pool['ir.attachment'] constraint_pool = self.pool['ir.model.constraint'] + fields_pool = self.pool['ir.model.fields'] local_context=(context or {}).copy() local_context.update({ @@ -68,14 +69,20 @@ class CleanupPurgeLineModel(orm.TransientModel): attachment_ids = attachment_pool.search( cr, uid, [('res_model', '=', line.name)], context=context) if attachment_ids: - attachment_pool.write( - cr, uid, attachment_ids, {'res_model': False}, - context=context) + cr.execute( + "UPDATE ir_attachment SET res_model = FALSE " + "WHERE id in %s", + (tuple(attachment_ids), )) constraint_ids = constraint_pool.search( cr, uid, [('model', '=', line.name)], context=context) if constraint_ids: constraint_pool.unlink( cr, uid, constraint_ids, context=context) + relation_ids = fields_pool.search( + cr, uid, [('relation', '=', row[1])], context=context) + if relation_ids: + fields_pool.unlink(cr, uid, relation_ids, + context=local_context) model_pool.unlink(cr, uid, [row[0]], context=local_context) line.write({'purged': True}) cr.commit()