[FIX] web_editor: save less file
Modifying less files and saving them using the web editor can raise and error. The error is due to the way odoo save the modified file. It extends the view containing the URL of the file by filtering views related to the xml bundle id and keeping those that have the said URL in their content. This lookup fails to give just one result in case there are multiple file containing the said URL. This fix change the filter from a bare `if url in view.arch` to a correct xpath lookup. The "/web/static/src/variables.less" less file was one of the problematic files. opw-1889794 closes odoo/odoo#30186
This commit is contained in:
@@ -380,7 +380,17 @@ class Web_Editor(http.Controller):
|
||||
|
||||
# Create a view to extend the template which adds the original file to link the new modified version instead
|
||||
IrUiView = request.env["ir.ui.view"]
|
||||
view_to_xpath = IrUiView.get_related_views(bundle_xmlid, bundles=True).filtered(lambda v: v.arch.find(url) >= 0)
|
||||
|
||||
def views_linking_url(view):
|
||||
"""
|
||||
Returns whether the view arch has some html link tag linked to the url.
|
||||
|
||||
(note: searching for the URL string is not enough as it could appear in a comment or an xpath expression.)
|
||||
"""
|
||||
return bool(etree.XML(view.arch).xpath("link[@href='{}']".format(url)))
|
||||
|
||||
view_to_xpath = IrUiView.get_related_views(bundle_xmlid, bundles=True).filtered(views_linking_url)
|
||||
|
||||
IrUiView.create(dict(
|
||||
name = custom_url,
|
||||
mode = "extension",
|
||||
|
||||
Reference in New Issue
Block a user