diff options
Diffstat (limited to 'addons/website/models/assets.py')
| -rw-r--r-- | addons/website/models/assets.py | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/addons/website/models/assets.py b/addons/website/models/assets.py index c2a52588eaa..1bbd653bd47 100644 --- a/addons/website/models/assets.py +++ b/addons/website/models/assets.py @@ -1,12 +1,46 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. +import re + from odoo import models class Assets(models.AbstractModel): _inherit = 'web_editor.assets' + def make_scss_customization(self, url, values): + """ + Makes a scss customization of the given file. That file must + contain a scss map including a line comment containing the word 'hook', + to indicate the location where to write the new key,value pairs. + + Params: + url (str): + the URL of the scss file to customize (supposed to be a variable + file which will appear in the assets_common bundle) + + values (dict): + key,value mapping to integrate in the file's map (containing the + word hook). If a key is already in the file's map, its value is + overridden. + """ + custom_url = self.make_custom_asset_file_url(url, 'web.assets_common') + updatedFileContent = self.get_asset_content(custom_url) or self.get_asset_content(url) + updatedFileContent = updatedFileContent.decode('utf-8') + for name, value in values.items(): + pattern = "'%s': %%s,\n" % name + regex = re.compile(pattern % ".+") + replacement = pattern % value + if regex.search(updatedFileContent): + updatedFileContent = re.sub(regex, replacement, updatedFileContent) + else: + updatedFileContent = re.sub(r'( *)(.*hook.*)', r'\1%s\1\2' % replacement, updatedFileContent) + + # Bundle is 'assets_common' as this route is only meant to update + # variables scss files + self.save_asset(url, 'web.assets_common', updatedFileContent, 'scss') + def _get_custom_attachment(self, custom_url, op='='): """ See web_editor.Assets._get_custom_attachment |
