Browse Source

[FIX+MIG] base_location: 3 things:

* Don't need cities for migrating

  Previous script required to have cities populated for working, but that's not
  usual thing, as people in v11 may choose to not import them, and for older databases
  they even weren't that option.

  With this improve script, now we populate city table for ZIP entries without city,
  so the rest of the queries are properly executed in any case.

* Cover case of res_better_zip w/o country_id

* Avoid error on null zip numbers
14.0
Pedro M. Baeza 5 years ago
parent
commit
6b0bcc0089
  1. 32
      base_location/migrations/12.0.1.0.0/post-migration.py

32
base_location/migrations/12.0.1.0.0/post-migration.py

@ -12,6 +12,35 @@ def migrate(env, version):
env.cr,
"ALTER TABLE res_city_zip ADD %s INTEGER", (AsIs(column_name), ),
)
# Create a city for ZIPs without it
openupgrade.logged_query(
env.cr, """
INSERT INTO res_city (
name, state_id, country_id,
create_uid, create_date, write_uid, write_date
)
SELECT
city, state_id, country_id,
MIN(create_uid), MIN(create_date), MIN(write_uid), MIN(write_date)
FROM res_better_zip rbz
WHERE city_id IS NULL
AND rbz.country_id IS NOT NULL
AND rbz.name IS NOT NULL
GROUP BY city, state_id, country_id
ON CONFLICT DO NOTHING""",
)
# Update city_id in res_better_zip
openupgrade.logged_query(
env.cr, """
UPDATE res_better_zip rbz
SET city_id = rc.id
FROM res_city rc
WHERE rc.name = rbz.city
AND rc.state_id = rbz.state_id
AND rc.country_id = rbz.country_id
AND rbz.city_id IS NULL""",
)
# Create records for new model
openupgrade.logged_query(
env.cr, """
INSERT INTO res_city_zip (
@ -20,7 +49,8 @@ def migrate(env, version):
SELECT
id, name, city_id
FROM res_better_zip
WHERE city_id IS NOT NULL""",
WHERE city_id IS NOT NULL
ON CONFLICT DO NOTHING""",
(AsIs(column_name), ),
)
# Recompute display name for entries inserted by SQL

Loading…
Cancel
Save