6e6966ea87ef049727a94efe04e3ce8f485f61d7
This commit is the 5th commit of a comprehensive refactor of our HTTP framework. See odoo/odoo#78857 for complete historic, discussions and rationnals. A session is a file that contains user data that must be preserved across several requests. It is a small (=at most a few kb) file that is stored on the filesystem in the session store. Each filename is a random sha-1 string, the same sha-1 is saved in the request's cookies. The browser has no access to the session, it only possesses the random sha-1 cookie which the server use to retrieve the session upon each request. It is in the session that the database that the user is connected to is stored. The first time the user accesses the server the database is determined using the HTTP Host header of the request plus the list of available databases and is saved into the user's session. Later requests merely ensure the database stored in the session is still enabled. The session "feeling" is the same as before the httpocalypse. The session is still a DotDict-like structure with methods such as `authenticate` and `logout`. The difference is the implementation, in master we were using the werkzeug session, with this work we decided to get rid of those off-the-shelf sessions to implement our own object. The major difference between the two implementations is the way we determine when a session is "dirty", when the session should be written back on the filesystem. In werkzeug it is a `modified` flag attribute that is set as soon as `__setitem__` is called, in our implemention we keep an immutable copy of the original session, at the end the of request lifecycle we compare the live session to the copy to determine if it was changed. The former was setting the `modified` flag even when one was setting the same value as existing in the session. The later approach is not affected by this limitation. PR: odoo#78857 Task: 2571224
…
…
Odoo
Odoo is a suite of web based open source business apps.
The main Odoo Apps include an Open Source CRM, Website Builder, eCommerce, Warehouse Management, Project Management, Billing & Accounting, Point of Sale, Human Resources, Marketing, Manufacturing, ...
Odoo Apps can be used as stand-alone applications, but they also integrate seamlessly so you get a full-featured Open Source ERP when you install several Apps.
Getting started with Odoo
For a standard installation please follow the Setup instructions from the documentation.
To learn the software, we recommend the Odoo eLearning, or Scale-up, the business game. Developers can start with the developer tutorials
Languages
Python
49.6%
JavaScript
47.8%
SCSS
2%
CSS
0.3%
HTML
0.2%