Repository navigation
Conversation
### post-migration.py Give every extra variant image back to a template, the way 20.0 holds it. 19.0 attached the image to one variant. 20.0 attaches it to the template and works out which variants it is for by matching its attribute_value_ids against the variant's, so an image with neither a template nor attribute values belongs to nothing: product_template_image_ids does not contain it, _compute_variant_image_ids never sees it, and the image is gone from the shop while its row sits in the table. Two shapes carry exactly, and are done separately because the faithful answer differs: the variant has attribute values -- the image was for that combination, so it gets the template and those values, and stays specific to it the variant has none and is the template's only one -- there is no combination to be specific about, so the template alone says what 19.0 said A variant with no attribute values on a template that has several is neither: it is an obsolete combination, archived on the seed. Giving its image to the template would put it on every variant, which is broader than 19.0 showed it, so it is left alone and reported. Assisted-by: Claude Opus 5
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
post-migration.py
Give every extra variant image back to a template, the way 20.0 holds it.
19.0 attached the image to one variant. 20.0 attaches it to the template and
works out which variants it is for by matching its attribute_value_ids
against the variant's, so an image with neither a template nor attribute
values belongs to nothing: product_template_image_ids does not contain it,
_compute_variant_image_ids never sees it, and the image is gone from the
shop while its row sits in the table.
Two shapes carry exactly, and are done separately because the faithful
answer differs:
the variant has attribute values -- the image was for that combination, so
it gets the template and those values, and stays specific to it
the variant has none and is the template's only one -- there is no
combination to be specific about, so the template alone says what 19.0
said
A variant with no attribute values on a template that has several is neither:
it is an obsolete combination, archived on the seed. Giving its image to the
template would put it on every variant, which is broader than 19.0 showed it,
so it is left alone and reported.
tests
A migration test pins the rules above against data constructed on 19.0 before the upgrade runs:
openupgrade_scripts/scripts/website_sale/tests/data_website_sale_migration.pyopenupgrade_scripts/scripts/website_sale/tests/test_website_sale_migration.pyCI: red until #118 lands
The
testjob fails onduplicate key value violates unique constraint "res_country_state_name_code_uniq"(Ladakh / Odisha). Not this branch:base's pre-migration, which renames those two external ids, lives in #118 andis not on
20.0yet, so every branch cut from20.0alone hits it. Per thefork's model the per-PR check is the lean one; the real migration gate is the
integration branch (#120), where all of this runs green over the full
585-module seed.
AI-assisted (Claude Code); every change reviewed, tested, and owned by the author.