summaryrefslogtreecommitdiff
path: root/addons/pos_cache
diff options
context:
space:
mode:
authorRomain Derie <rde@odoo.com>2018-12-28 15:24:33 +0000
committerJeremy Kersten <jke@odoo.com>2019-02-13 20:33:18 +0000
commitef03db9edd9472201cb2c08a32d20ff0f33a5fdf (patch)
tree23c2584beac7668680ae2a74054025b2c52f5e20 /addons/pos_cache
parent01d925e05254cbf69432c13a8d911537d5cfb878 (diff)
[FIX] website: restore reset_templates functionality
Since AST was introduced to compile Qweb templates, the reset templates functionality is not working anymore. Actually, it does not even appear anymore as the conditions to trigger and show the reset view behavior can't be True anymore. Indeed, the code is still importing the old QWebException from odoo.exceptions which is now just an empty class. The QWebException that should now be used is the one from odoo.base.models.qweb More than just a wrong import, the QWebException properties have completely changed. Since its last working version (Odoo 9.0), a lot of changes occured, mostly: - Odoo 11.0: new model website.page, which completely changed the pages behavior and changed the models. - Odoo 12.0: multi-website, which introduced the Copy On Write (COW) that redefined how we write on view in a website context. We now need to reset copied/specific views that have no model_data_id. This fix is for a stable version. There is some flows that can't be fixed without a refactoring or new fields (mainly because of the arch_fs being erased when writing on `arch`, plus we can't introduce a module reload in stable). The goal of this commit is to fix the basic and standard case of broken views, which is when non-technical users are breaking the views through HTML editor. To reset the views, we will read the original arch in the XML file, as the dev mode is doing. To be eligible for the reset, the broken view need an `arch_fs` set. If the view arch has been modified anywhere else than the frontend, the `arch_fs` will be erased and the view wont be able to be reset. As the broken views will be specific views, we will simply read the generic view in the XML file and write it on the specific. We can't simply remove the specific view as we might be on a specific tree. Specific case, in case of custom views create dropping a snippet in an oe_struc we just delete this inehrited view to allow end user to have their page back. In some case of bad compilation in sub template, we try to guess which inherited view, t-called view is broken by string matching based on 'last_path_node' xpath. Add new module test_website to add tests, it will be usefull for futur test of install/uninstall and ... Todo in master: - try to track on QWebException the real template that is broken and not only the last node from the main template. Co-authored-by: "Romain Derie <rde@odoo.com>" Co-authored-by: "Jérémy Kersten <jke@openerp.com>" closes odoo/odoo#29957
Diffstat (limited to 'addons/pos_cache')
0 files changed, 0 insertions, 0 deletions