|
- ###################################################################################
- #
- # Copyright (c) 2017-today MuK IT GmbH.
- #
- # This file is part of MuK Backend Theme
- # (see https://mukit.at).
- #
- # MuK Proprietary License v1.0
- #
- # This software and associated files (the "Software") may only be used
- # (executed, modified, executed after modifications) if you have
- # purchased a valid license from MuK IT GmbH.
- #
- # The above permissions are granted for a single database per purchased
- # license. Furthermore, with a valid license it is permitted to use the
- # software on other databases as long as the usage is limited to a testing
- # or development environment.
- #
- # You may develop modules based on the Software or that use the Software
- # as a library (typically by depending on it, importing it and using its
- # resources), but without copying any source code or material from the
- # Software. You may distribute those modules under the license of your
- # choice, provided that this license is compatible with the terms of the
- # MuK Proprietary License (For example: LGPL, MIT, or proprietary licenses
- # similar to this one).
- #
- # It is forbidden to publish, distribute, sublicense, or sell copies of
- # the Software or modified copies of the Software.
- #
- # The above copyright notice and this permission notice must be included
- # in all copies or substantial portions of the Software.
- #
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- # DEALINGS IN THE SOFTWARE.
- #
- ###################################################################################
-
- import re
- import uuid
- import base64
-
- from odoo import models, fields, api
- from odoo.modules import module
-
-
- class ScssEditor(models.AbstractModel):
-
- _inherit = 'web_editor.assets'
-
- # ----------------------------------------------------------
- # Helper
- # ----------------------------------------------------------
-
- def _get_theme_variable(self, content, variable):
- regex = r'{0}\:?\s(.*?);'.format(variable)
- value = re.search(regex, content)
- return value and value.group(1)
-
- def _get_theme_variables(self, content, variables):
- return {var: self._get_theme_variable(content, var) for var in variables}
-
- def _replace_theme_variables(self, content, variables):
- for variable in variables:
- variable_content = '{0}: {1};'.format(
- variable['name'],
- variable['value']
- )
- regex = r'{0}\:?\s(.*?);'.format(variable['name'])
- content = re.sub(regex, variable_content, content)
- return content
-
- # ----------------------------------------------------------
- # Functions
- # ----------------------------------------------------------
-
- def get_theme_variables_values(self, url, bundle, variables):
- custom_url = self._make_custom_asset_url(url, bundle)
- content = self._get_content_from_url(custom_url)
- if not content:
- content = self._get_content_from_url(url)
- return self._get_theme_variables(content.decode('utf-8'), variables)
-
- def replace_theme_variables_values(self, url, bundle, variables):
- original = self._get_content_from_url(url).decode('utf-8')
- content = self._replace_theme_variables(original, variables)
- self.with_context(theme_variables=True).save_asset(
- url, bundle, content, 'scss'
- )
|