Commit Graph
14 Commits
Author SHA1 Message Date
Benoit Socias c29d59e41f [FIX] utm: wrap response in an odoo Response before setting cookie
Since [1] the odoo `Response.set_cookie` signature is different from the
one of `werkzeug.wrappers.Response`.

This commit wraps responses into odoo Responses between setting cookies.

[1]: https://github.com/odoo/odoo/commit/2cbda6c98ee947cea1d06c09880eee8c758304a8

X-original-commit: 6a2675fd4d0cc2cb0e23a4b4c5aaf62a1568be50
Part-of: odoo/odoo#112827
2023-02-16 09:01:07 +01:00
Jeremy KerstenandBenoit Socias 878351d840 [IMP] base, web, website, *: differentiate essential & optional cookies
*: im_livechat, survey, utm, website_crm_iap_reveal, website_forum,
   website_livechat, website_sale, website_sale_comparison

Before this commit all cookies were considered essential.

This commit makes some of them optional. It also makes it possible for
the website visitor to only accept the essential cookies.

task-2800976

X-original-commit: 9a8a9463289a7446e9be0ef62ff895feb37a4de4
Part-of: odoo/odoo#101845
Co-authored-by: Benoit Socias <bso@odoo.com>
2022-10-03 10:56:58 +02:00
Julien Castiaux ad71d6d3ee [REM] website_utm: website depends on utm already
`_post_dispatch` is a late addition to the httpocalypse. It can be used
to alter the response object e.g. to inject headers or cookies. The
function is automatically called for regular, fallback and error
responses. On the other hand, `_dispatch` is only called when an
endpoint is matched and might not return a response in case of error.

task-2839031

closes odoo/odoo#96651

Related: odoo/upgrade#3710
Signed-off-by: Julien Castiaux <juc@odoo.com>
2022-08-01 10:55:29 +02:00
Julien Castiaux c0647b5c52 [REF] core: HTTPocalypse (14) changes all addons
This commit is the 14th commit of a comprehensive refactor of our HTTP
framework. See odoo/odoo#78857 for complete historic, discussions and
rationnals.

* `request.uid = x` => `request.update_env(user=x)`.
* `request.context = x` => `request.update_env(context=x)`.
* `request.context = dict(request.context, x=y)`
   => `request.update_context(x=y)`.
* `request.cr = None` => `request.cr.close()`.
* `http.mono_db()` => `request.db`.
* `http.dispatch_rpc()` => `service.dispatch_rpc()`.
* `@service.model.check` => `service.model.retrying()`.
* `request.endpoint`
   => `env['ir.http']._match(request.httprequest.path)[0].endpoint`.
* `request.routing_iteration `=> `removed`.
* `request.jsonrequest` => `request.dispatcher.jsonrequest`.

Note that `request.params` is now set much later in the process. If you
are in a situation where you values from the query string or the
http body you can use `request.get_http_params()`.

Note that using the new `request.future_response`, it is possible to
add headers and cookies on the response object before the response
object is initialized. Please note that headers/cookies saved on
the future response will NOT be injected in case of error.

PR: odoo#78857
Task: 2571224
2022-02-24 13:30:51 +00:00
Thibault Delavallée 7db596fdb2 [MOV] utm: split views in different files
Purpose
=======

This commit cleans the UTM module and uses a different file for each model
views in order to clarify organization and ease reading. Each model owns its
own view file.

Task-2245823

Part-of: odoo/odoo#83070
2022-01-20 10:06:47 +00:00
Sébastien Theys 16f2b3809d [FIX] utm: prevent crash on /web/session/destroy
A similar fix was originally done in [1], where the access to `env` was done
before the parent dispatch.

The issue was then reintroduced with [2], where the `env` was possibly accessed
again after the dispatch. This works most of the time, but in the rare case
where the session is destroyed during dispatch, which is the case on
`/web/session/destroy`, accessing the environment after that point will crash.

This issue didn't manifest before [3], because the `env` was always initialized
during `checked_call` when calling the `clear` method on it (since `env` is a
magic property). After that commit, the `clear` is not called if not necessary,
therefore it might happen that the `env` is never initialized. This leads to the
crash when trying to initialize it for the first time after the `db` attribute
has been cleared during the destroy, since a `db` is required to initialize it.

The current fix aims to prevent the crash. As opposed to [1] that actually kept
the tracking fields by fetching them before the dispatch, it is decided on this
commit to voluntarily lose the tracking fields when destroying the session,
because keeping them would require too much refactoring for a fix in stable, but
we also feel that it makes sense functionally: those tracking fields were maybe
used for a specific purpose in the original database, but they might mean
something completely different on another database.

[1] 6780597f2d
[2] c78de22a09
[3] f6d56afba0

closes #42260

closes odoo/odoo#42314

X-original-commit: 2ac11ce7a3f36a1572d886bc872facf339cb6516
Signed-off-by: Sébastien Theys (seb) <seb@odoo.com>
2019-12-23 16:06:07 +00:00
Jeremy Kersten c78de22a09 [FIX] utm: set utm for website page
Before this commit, UTM was no more set for website.page.

Website.page mechanism uses the _handle_exception to check if an url match a
record in database, instead of use the method _dispatch that uses controllers.

Consequently, module UTM never set the utm into the cookies for website.page.
Now we override method '_handle_exception' that will anyway ignore to set utm
if it is a real exception and not a fallback (redirect, page, attachment, ...)
2018-03-28 17:59:30 +02:00
Simon Lejeune 6780597f2d [FIX] utm: correct ir_http's _dispatch override
When overriding dispatch, we have to make sure that we do the
database operations before calling super, because we are not sure
to have a valid database/env after (for example, in the case of a
drop of a database).
2016-09-21 14:40:05 +02:00
Raphael Collet 70dec2d896 [REF] registry: now mapping model name to model class 2016-08-31 17:21:59 +02:00
Raphael Collet 5c3a60eb50 [FIX] utm: in _dispatch, propagate errors
This avoids a miserable crash when switching between databases.
2016-08-19 16:35:25 +02:00
Yannick Tivisse 40561b0fb6 [MIG] utm: remaining self.pool in ir_http.py 2016-08-09 10:29:46 +02:00
Srushti Patel 8913853377 [MIG] utm:Migrated into new api. 2015-10-26 14:40:02 +01:00
Jeremy Kersten 018450752d [FIX] utm* - Allow to customize the cookies name 2015-04-02 22:50:41 +02:00
Jeremy Kersten c17bc5090d [FIX] hr_recruitment: use utm_mixin to allow to track the job applicant.
Remove old source_id
            Use hr.recruitment.source to generate link with utm and create
            alias with default value for utm
[FIX] crm/utm: Fix bug with utm (ddac26cdbb)
            Move demo into data
            Move ir_http to save the utm in the dispatch
2014-12-27 16:37:21 +01:00