[ADD] website_sale_aplicoop: serve Eskaera per website

A co-op can run the plain shop on one website and the group orders on another,
but routes are registered process-wide: every /eskaera page answered on every
website of the database, and Odoo had already copied the Eskaera menu to all of
them.

`website.eskaera_enabled` decides which websites serve it, on by default so
installing changes nothing. It reaches the settings screen through `website_id`,
so it follows the website selector there. Where it is off the routes raise
NotFound and the menu is hidden.

The menu is hidden rather than deleted, by extending `_compute_visible`. That
keeps the record and any manual rename or reordering, so switching the feature
back on restores it as it was.

Note that a JSON route reports the 404 inside the JSON-RPC payload and still
answers HTTP 200; that is the transport, not a hole in the guard, and a test
pins it so the next reader does not take it for one.

The three remaining settings (lazy loading, products per page, low stock
threshold) are still `config_parameter`, so they stay global to the database.
Two websites share their values.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
GitHub Copilot 2026-08-17 17:31:03 +02:00
parent 817ff31d39
commit 5a2f5d120f
9 changed files with 313 additions and 0 deletions

View file

@ -6,6 +6,22 @@
<field name="inherit_id" ref="website.res_config_settings_view_form"/>
<field name="arch" type="xml">
<xpath expr="//block[@id='website_info_settings']" position="after">
<h2>Eskaera</h2>
<div class="row mt16 o_settings_container" id="eskaera_website_settings">
<div class="col-12 col-lg-6 o_setting_box">
<div class="o_setting_left_pane">
<field name="eskaera_enabled"/>
</div>
<div class="o_setting_right_pane">
<label for="eskaera_enabled" string="Eskaera Group Orders"/>
<div class="text-muted">
Serve the collaborative purchasing pages on this
website. Turn it off on a website that only runs
the regular shop.
</div>
</div>
</div>
</div>
<h2>Shop Performance</h2>
<div class="row mt16 o_settings_container" id="eskaera_shop_settings">
<div class="col-12 col-lg-6 o_setting_box">