Please sign in to comment.
[FIX] website: keep only specific views on _views_get recursive calls
Before this commit: If a view A was doing a t-call on a view B and view B had view C as child. And view A had view D as child. And view D also t-call view B (that as mentionned above has view C as child). And view D was inactive. Then COWing C to set it as inactive would make `get_related_views()` on A to return both generic active C and COW inactive C. This rare case appeared for customize option that were enabled by default, like wishlist, compare.. Disabling this customize option would show both the generic customize view and the COW customize view. Resulting in the customize toggle being shown twice, one enabled and one disabled. Detailed explanation: 1. `website_sale.products` would call `_views_get()` with `options=True` for its t-call node `website_sale.products_item`, returning the full view tree, including COW wishlist. 2. `website_sale.products` would then call `_views_get()` on its child views with `options=extension.active`. It is the case for `website_sale.products_list_view`, which also has a t-call node `website_sale.products_item`. It would then perform the same `views_get()` as in step 1. but with `options` set to the view active state, in this case False. At that point, the `_view_get_inherited_children` method would filter by active before filter_duplicate, leaving the generic view over the specific one as it should.
- Loading branch information...
Showing with 74 additions and 5 deletions.