[IMP] website_sale: overhead on every page
[IMP] website_sale: overhead on every page

website_sale adds a call to sale_get_order to ~every website page (in
order to validate & display the shopping cart).

Before this change, this calls get_pricelist_available() and triggers
two different computations of property_product_pricelist on every page
even for a public user with no cart / SO. This, in turn, generates ~20
queries and adds 20ms (total) / 10ms (sql) to ~every page load.

Fix: early return if the user doesn't have an SO (either in session or
in DB) and we're not in a case where we want to force one.

Loading "/" with just website_sale installed on a new DB,

- before: 53 queries, 31ms ±5 (sql), 75ms ±5 (all)
- after: 32 queries, 21ms ±1 (sql), 53ms ±3 (all)

closes odoo/odoo#32492

Signed-off-by: Xavier Morel (xmo) <0f311f41b2be8e2b5de98776566d712cdc154ca4@odoo.com>
ygol/odoo,ygol/odoo,ygol/odoo,ygol/odoo,ygol/odoo,ygol/odoo,ygol/odoo