[FIX] product: make sure unlinked product still exists
authorThomas Groutars <tgr@odoo.com>
Thu, 14 Aug 2014 14:47:01 +0000 (16:47 +0200)
committerMartin Trigaux <mat@openerp.com>
Mon, 18 Aug 2014 08:37:03 +0000 (10:37 +0200)
When uninstalling/updating a module, we may execute unlink method on product.template before product.product. In such cases, the product is already removed after removeing the template (_inherits) and the chained unlink of the product would fail (traceback when browsing).

addons/product/product.py

index ce17af7..83ab818 100644 (file)
@@ -589,6 +589,9 @@ class product_product(osv.osv):
         unlink_ids = []
         unlink_product_tmpl_ids = []
         for product in self.browse(cr, uid, ids, context=context):
+            # Check if product still exists, in case it has been unlinked by unlinking its template
+            if not product.exists():
+                continue
             tmpl_id = product.product_tmpl_id.id
             # Check if the product is last product of this template
             other_product_ids = self.search(cr, uid, [('product_tmpl_id', '=', tmpl_id), ('id', '!=', product.id)], context=context)