Browse Source

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...
pull/1009/head
Guewen Baconnier 11 years ago
committed by Holger Brunn
parent
commit
8f56bd1840
No known key found for this signature in database GPG Key ID: 1C9760FECA3AE18
  1. 13
      database_cleanup/model/purge_models.py

13
database_cleanup/model/purge_models.py

@ -51,6 +51,7 @@ class CleanupPurgeLineModel(orm.TransientModel):
model_pool = self.pool['ir.model'] model_pool = self.pool['ir.model']
attachment_pool = self.pool['ir.attachment'] attachment_pool = self.pool['ir.attachment']
constraint_pool = self.pool['ir.model.constraint'] constraint_pool = self.pool['ir.model.constraint']
fields_pool = self.pool['ir.model.fields']
local_context=(context or {}).copy() local_context=(context or {}).copy()
local_context.update({ local_context.update({
@ -68,14 +69,20 @@ class CleanupPurgeLineModel(orm.TransientModel):
attachment_ids = attachment_pool.search( attachment_ids = attachment_pool.search(
cr, uid, [('res_model', '=', line.name)], context=context) cr, uid, [('res_model', '=', line.name)], context=context)
if attachment_ids: 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( constraint_ids = constraint_pool.search(
cr, uid, [('model', '=', line.name)], context=context) cr, uid, [('model', '=', line.name)], context=context)
if constraint_ids: if constraint_ids:
constraint_pool.unlink( constraint_pool.unlink(
cr, uid, constraint_ids, context=context) 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) model_pool.unlink(cr, uid, [row[0]], context=local_context)
line.write({'purged': True}) line.write({'purged': True})
cr.commit() cr.commit()

Loading…
Cancel
Save