You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

114 lines
4.0 KiB

  1. import re
  2. import uuid
  3. import base64
  4. from odoo import api, fields, models
  5. class ResConfigSettings(models.TransientModel):
  6. _inherit = 'res.config.settings'
  7. #----------------------------------------------------------
  8. # Fields
  9. #----------------------------------------------------------
  10. theme_favicon = fields.Binary(
  11. related='company_id.favicon',
  12. readonly=False
  13. )
  14. theme_background_image = fields.Binary(
  15. related='company_id.background_image',
  16. readonly=False
  17. )
  18. theme_color_brand = fields.Char(
  19. string='Theme Brand Color'
  20. )
  21. theme_color_primary = fields.Char(
  22. string='Theme Primary Color'
  23. )
  24. theme_color_menu = fields.Char(
  25. string='Theme Menu Color'
  26. )
  27. theme_color_appbar_color = fields.Char(
  28. string='Theme AppBar Color'
  29. )
  30. theme_color_appbar_background = fields.Char(
  31. string='Theme AppBar Background'
  32. )
  33. #----------------------------------------------------------
  34. # Action
  35. #----------------------------------------------------------
  36. def action_reset_theme_assets(self):
  37. self.env['web_editor.assets'].reset_asset(
  38. '/muk_web_theme/static/src/colors.scss', 'web._assets_primary_variables',
  39. )
  40. return {
  41. 'type': 'ir.actions.client',
  42. 'tag': 'reload',
  43. }
  44. #----------------------------------------------------------
  45. # Functions
  46. #----------------------------------------------------------
  47. def set_values(self):
  48. res = super(ResConfigSettings, self).set_values()
  49. variables = [
  50. 'o-brand-odoo',
  51. 'o-brand-primary',
  52. 'mk-menu-color',
  53. 'mk-appbar-color',
  54. 'mk-appbar-background',
  55. ]
  56. colors = self.env['web_editor.assets'].get_theme_variables_values(
  57. '/muk_web_theme/static/src/colors.scss', 'web._assets_primary_variables', variables
  58. )
  59. colors_changed = []
  60. colors_changed.append(self.theme_color_brand != colors['o-brand-odoo'])
  61. colors_changed.append(self.theme_color_primary != colors['o-brand-primary'])
  62. colors_changed.append(self.theme_color_menu != colors['mk-menu-color'])
  63. colors_changed.append(self.theme_color_appbar_color != colors['mk-appbar-color'])
  64. colors_changed.append(self.theme_color_appbar_background != colors['mk-appbar-background'])
  65. if(any(colors_changed)):
  66. variables = [
  67. {'name': 'o-brand-odoo', 'value': self.theme_color_brand or "#243742"},
  68. {'name': 'o-brand-primary', 'value': self.theme_color_primary or "#5D8DA8"},
  69. {'name': 'mk-menu-color', 'value': self.theme_color_menu or "#f8f9fa"},
  70. {'name': 'mk-appbar-color', 'value': self.theme_color_appbar_color or "#dee2e6"},
  71. {'name': 'mk-appbar-background', 'value': self.theme_color_appbar_background or "#000000"},
  72. ]
  73. self.env['web_editor.assets'].replace_theme_variables_values(
  74. '/muk_web_theme/static/src/colors.scss', 'web._assets_primary_variables', variables
  75. )
  76. return res
  77. @api.model
  78. def get_values(self):
  79. res = super(ResConfigSettings, self).get_values()
  80. variables = [
  81. 'o-brand-odoo',
  82. 'o-brand-primary',
  83. 'mk-menu-color',
  84. 'mk-appbar-color',
  85. 'mk-appbar-background',
  86. ]
  87. colors = self.env['web_editor.assets'].get_theme_variables_values(
  88. '/muk_web_theme/static/src/colors.scss', 'web._assets_primary_variables', variables
  89. )
  90. res.update({
  91. 'theme_color_brand': colors['o-brand-odoo'],
  92. 'theme_color_primary': colors['o-brand-primary'],
  93. 'theme_color_menu': colors['mk-menu-color'],
  94. 'theme_color_appbar_color': colors['mk-appbar-color'],
  95. 'theme_color_appbar_background': colors['mk-appbar-background'],
  96. })
  97. return res