← Back to team overview

credativ team mailing list archive

lp:~therp-nl/openupgrade-server/7.0-set_created_partner_id_for_default_addresses into lp:openupgrade-server

 

Stefan Rijnhart (Therp) has proposed merging lp:~therp-nl/openupgrade-server/7.0-set_created_partner_id_for_default_addresses into lp:openupgrade-server.

Requested reviews:
  OpenUpgrade Committers (openupgrade-committers)

For more details, see:
https://code.launchpad.net/~therp-nl/openupgrade-server/7.0-set_created_partner_id_for_default_addresses/+merge/176667

The migration script for the base module creates a partner for each entry in the res_partner_address table. It writes the id of the created partner to this table for further reference. This branch fixes the fact that the id of existing partners, which get the data from the first default address encountered were not record on these address records.

-- 
https://code.launchpad.net/~therp-nl/openupgrade-server/7.0-set_created_partner_id_for_default_addresses/+merge/176667
Your team OpenUpgrade Committers is requested to review the proposed merge of lp:~therp-nl/openupgrade-server/7.0-set_created_partner_id_for_default_addresses into lp:openupgrade-server.
=== modified file 'openerp/addons/base/migrations/7.0.1.3/post-migration.py'
--- openerp/addons/base/migrations/7.0.1.3/post-migration.py	2013-06-17 15:03:32 +0000
+++ openerp/addons/base/migrations/7.0.1.3/post-migration.py	2013-07-24 12:18:28 +0000
@@ -79,6 +79,13 @@
     partner_found = []
     processed_ids = []
 
+    def set_address_partner(address_id, partner_id):
+        cr.execute(
+            "UPDATE res_partner_address "
+            "SET openupgrade_7_migrated_to_partner_id = %s "
+            "WHERE id = %s",
+            (partner_id, address_id))
+
     def create_partner(address_id, vals, defaults):
         """
         Create a partner from an address. Update the vals
@@ -91,11 +98,7 @@
                 vals[key] = defaults[key]
 
         partner_id = partner_obj.create(cr, SUPERUSER_ID, vals)
-        cr.execute(
-            "UPDATE res_partner_address "
-            "SET openupgrade_7_migrated_to_partner_id = %s "
-            "WHERE id = %s",
-            (partner_id, address_id))
+        set_address_partner(address_id, partner_id)
 
     def process_address_type(cr, whereclause, args=None):
         """
@@ -128,6 +131,7 @@
                     partner_obj.write(
                         cr, SUPERUSER_ID, address['partner_id'], partner_vals)
                     partner_found.append(address['partner_id'])
+                    set_address_partner(address['id'], address['partner_id'])
                 else:
                     # any following address for an existing partner
                     partner_vals.update({
@@ -142,6 +146,12 @@
     process_address_type(cr, "type IS NULL OR type = ''")
     process_address_type(cr, "id NOT IN %s", (tuple(processed_ids),))
 
+    # Check that all addresses have been migrated
+    cr.execute(
+        "SELECT COUNT(*) FROM res_partner_address "
+        "WHERE openupgrade_7_migrated_to_partner_id is NULL ")
+    assert(not cr.fetchone()[0])
+
 def update_users_partner(cr, pool):
     """ 
     Now that the fields exist on the model, finish


Follow ups