296 lines
18 KiB
Python
Executable File
296 lines
18 KiB
Python
Executable File
import base64
|
|
from odoo import api, fields, models, _, SUPERUSER_ID
|
|
from odoo import modules
|
|
from odoo.exceptions import UserError
|
|
from odoo.modules import get_module_resource
|
|
import os
|
|
|
|
backend_theme_attrs = {
|
|
'$navbar_bg_color': 'rgba(31,91,117,1)',
|
|
'$navbar_toggle': 'rgba(0,0,0,1)',
|
|
'$selection_app_color': 'rgba(255,255,255,1)',
|
|
'$selection_app_bg_hover': 'rgba(31,91,87,1)',
|
|
'$navbar_ul_color': 'rgba(255,255,255,1)',
|
|
'$navbar_ul_bg_color_hover': 'rgba(31,91,87,1)',
|
|
'$navbar_ul_dropdown_bg_color': 'rgba(255,255,255,1)',
|
|
'$navbar_ul_dropdown_item_color': 'rgba(31,91,117,1)',
|
|
'$navbar_ul_dropdown_item_bg_color': 'rgba(255,255,255,1)',
|
|
'$navbar_ul_dropdown_item_color_hover': 'rgba(255,255,255,1)',
|
|
'$navbar_ul_dropdown_item_hover_color': 'rgba(31,91,117,1)',
|
|
'$navbar_badge_color': 'rgba(0,0,0,1)',
|
|
|
|
'$apps_bg_img': 'url(../img/odex_bg.jpg)',
|
|
'$app_name_color': 'rgba(255,255,255,1)',
|
|
'$app_hover_bg_color': 'rgba(31,91,87,1)',
|
|
|
|
'$apps_more_info': 'rgba(31,91,117,1)',
|
|
'$apps_install_color': 'rgba(255,255,255,1)',
|
|
'$apps_install_bg_color': 'rgba(38,133,127,1)',
|
|
'$apps_upgrade_color': 'rgba(255,255,255,1)',
|
|
'$apps_upgrade_bg_color': 'rgba(31,91,117,1)',
|
|
|
|
'$sections_titles_color': 'rgba(255,255,255,1)',
|
|
'$sections_titles_bg': 'rgba(31,91,117,1)',
|
|
|
|
'$filter_icon_bg_color': 'rgba(31,91,117,1)',
|
|
'$sidebar_categories_icon_color': 'rgba(31,91,117,1)',
|
|
'$sidebar_categories_item_color': 'rgba(0,0,0,1)',
|
|
'$sidebar_categories_item_bg_color': 'rgba(0,0,0,1)',
|
|
'$sidebar_categories_item_hover_active_color': 'rgba(255,255,255,1)',
|
|
'$sidebar_categories_item_bg_hover_active_color': 'rgba(38,133,127,1)',
|
|
|
|
'$english_default_font' : '"Roboto", "Odoo Unicode Support Noto", sans-serif',
|
|
'$arabic_default_font' : '"Roboto", "Odoo Unicode Support Noto", sans-serif'
|
|
}
|
|
|
|
def get_default_img():
|
|
with open(modules.get_module_resource('odex_themecraft', 'static/src/img', 'app_drawer.jpeg'),'rb') as f:
|
|
return base64.b64encode(f.read())
|
|
|
|
class ResConfigSettings(models.TransientModel):
|
|
_inherit = 'res.config.settings'
|
|
|
|
# Navigation Bar
|
|
navbar_bg_color = fields.Char(string='Navbar Background',default="rgba(31,91,117,1)")
|
|
navbar_toggle = fields.Char(string='Navbar Background (Hover)',default="rgba(0,0,0,1)")
|
|
selection_app_color = fields.Char(string='Main Menu Title Background',default="rgba(255,255,255,1)")
|
|
selection_app_bg_hover = fields.Char(string='Main Menu Title Background (Hover)',default="rgba(31,91,87,1)")
|
|
navbar_ul_color = fields.Char(string='Navbar Item Color',default="rgba(255,255,255,1)")
|
|
navbar_ul_bg_color_hover = fields.Char(string='Navbar Item Background (Hover)',default="rgba(31,91,87,1)")
|
|
navbar_ul_dropdown_bg_color = fields.Char(string='Navbar Dropdown Background',default="rgba(255,255,255,1)")
|
|
navbar_ul_dropdown_item_color = fields.Char(string='Navbar Dropdown Item Color',default="rgba(31,91,117,1)")
|
|
navbar_ul_dropdown_item_color_hover = fields.Char(string='Navbar Dropdown Color (Hover)',default="rgba(255,255,255,1)")
|
|
navbar_ul_dropdown_item_bg_color = fields.Char(string='Navbar Dropdown Item Background',default="rgba(255,255,255,1)")
|
|
navbar_ul_dropdown_item_hover_color = fields.Char(string='Navbar Dropdown Item Background (Hover)',default="rgba(31,91,117,1)")
|
|
navbar_badge_color = fields.Char(string='Navbar Counter Badge Background',default="rgba(0,0,0,1)")
|
|
# App Drawer (home)
|
|
apps_bg_img = fields.Binary(string="App Drawer Background", attachment=True,default=get_default_img())
|
|
app_name_color = fields.Char(string='Navbar Counter Badge Background',default="rgba(255,255,255,1)")
|
|
app_hover_bg_color = fields.Char(string='App Background (Hover)',default="rgba(31,91,87,1)")
|
|
# Apps Module
|
|
apps_more_info = fields.Char(string='Apps More Info Button Background',default="rgba(31,91,117,1)")
|
|
apps_install_color = fields.Char(string='Apps Install Button Color',default="rgba(255,255,255,1)")
|
|
apps_install_bg_color = fields.Char(string='Apps Install Button Background',default="rgba(31,91,117,1)")
|
|
apps_upgrade_color = fields.Char(string='Apps Upgrade Button Color',default="rgba(255,255,255,1)")
|
|
apps_upgrade_bg_color = fields.Char(string='Apps Upgrade Button Background',default="rgba(31,91,117,1)")
|
|
# Setting Module
|
|
sections_titles_color = fields.Char(string='Section Titles Color',default="rgba(255,255,255,1)")
|
|
sections_titles_bg = fields.Char(string='Section Titles Background',default="rgba(31,91,117,1)")
|
|
# Font Settings
|
|
english_default_font = fields.Selection([
|
|
('default','Default'),
|
|
('font_1','Helvetica'),
|
|
('font_2','Futura'),
|
|
('font_3','Garamond'),
|
|
('font_4','Times'),
|
|
('font_5','Arial'),
|
|
('font_6','Verdana'),
|
|
('font_7','Comic Sans'),
|
|
('font_8','Trebuchet'),
|
|
('font_9','Gill Sans'),
|
|
('font_10','Georgia'),
|
|
], string='English Default Font', config_parameter='odex_themecraft.english_default_font', default='default')
|
|
arabic_default_font = fields.Selection([
|
|
('default','Default'),
|
|
('font_1','Arial'),
|
|
('font_2','Droid Kufi'),
|
|
('font_3','Aniri'),
|
|
('font_4','Droid Naskh'),
|
|
('font_5','Frutiger LT Arabic'),
|
|
], string='Arabic Default Font', config_parameter='odex_themecraft.arabic_default_font', default='default')
|
|
#Icons settings
|
|
setting_icon = fields.Binary(string="Settings Icon", attachment=True)
|
|
|
|
def replace_file(self, file_path, static_dict):
|
|
try:
|
|
with open(file_path, 'w+') as new_file:
|
|
for key, value in static_dict.items():
|
|
line = ''.join([key, ': ', value, ';\n'])
|
|
new_file.write(line)
|
|
new_file.close()
|
|
except Exception as e:
|
|
raise UserError(_("Please follow the readme file. Contact to Administrator.""\n %s") % e)
|
|
|
|
@api.model
|
|
def get_values(self):
|
|
res = super(ResConfigSettings, self).get_values()
|
|
ir_config = self.env['ir.config_parameter'].sudo()
|
|
|
|
# Navigation Bar
|
|
navbar_bg_color = ir_config.get_param('navbar_bg_color',"rgba(31,91,117,1)")
|
|
navbar_toggle = ir_config.get_param('navbar_toggle',"rgba(0,0,0,1)")
|
|
selection_app_color = ir_config.get_param('selection_app_color',"rgba(255,255,255,1)")
|
|
selection_app_bg_hover = ir_config.get_param('selection_app_bg_hover',"rgba(31,91,87,1)")
|
|
navbar_ul_color = ir_config.get_param('navbar_ul_color',"rgba(31,91,87,1)")
|
|
navbar_ul_bg_color_hover = ir_config.get_param('navbar_ul_bg_color_hover',"rgba(255,255,255,1)")
|
|
navbar_ul_dropdown_bg_color = ir_config.get_param('navbar_ul_dropdown_bg_color',"rgba(31,91,117,1)")
|
|
navbar_ul_dropdown_item_color = ir_config.get_param('navbar_ul_dropdown_item_color',"rgba(31,91,117,1)")
|
|
navbar_ul_dropdown_item_color_hover = ir_config.get_param('navbar_ul_dropdown_item_color_hover',"rgba(255,255,255,1)")
|
|
navbar_ul_dropdown_item_bg_color = ir_config.get_param('navbar_ul_dropdown_item_bg_color',"rgba(255,255,255,1)")
|
|
navbar_ul_dropdown_item_hover_color = ir_config.get_param('navbar_ul_dropdown_item_hover_color',"rgba(31,91,117,1)")
|
|
navbar_badge_color = ir_config.get_param('navbar_badge_color',"rgba(0,0,0,1)")
|
|
# App Drawer (home)
|
|
apps_bg_img = ir_config.get_param('apps_bg_img')
|
|
app_name_color = ir_config.get_param('app_name_color',"rgba(255,255,255,1)")
|
|
app_hover_bg_color = ir_config.get_param('app_hover_bg_color',"rgba(31,91,87,1)")
|
|
# Apps Module
|
|
apps_more_info = ir_config.get_param('apps_more_info',"rgba(31,91,117,1)")
|
|
apps_install_color = ir_config.get_param('apps_install_color',"rgba(255,255,255,1)")
|
|
apps_install_bg_color = ir_config.get_param('apps_install_bg_color',"rgba(31,91,117,1)")
|
|
apps_upgrade_color = ir_config.get_param('apps_upgrade_color',"rgba(255,255,255,1)")
|
|
apps_upgrade_bg_color = ir_config.get_param('apps_upgrade_bg_color',"rgba(31,91,117,1)")
|
|
# Setting Module
|
|
sections_titles_color = ir_config.get_param('sections_titles_color',"rgba(255,255,255,1)")
|
|
sections_titles_bg = ir_config.get_param('sections_titles_bg',"rgba(31,91,117,1)")
|
|
# Fonts Settings
|
|
english_default_font = ir_config.get_param('english_default_font','default')
|
|
arabic_default_font = ir_config.get_param('arabic_default_font','default')
|
|
|
|
# update resourcess
|
|
res.update(navbar_bg_color=navbar_bg_color,navbar_toggle=navbar_toggle,selection_app_color=selection_app_color,
|
|
selection_app_bg_hover=selection_app_bg_hover,navbar_ul_color=navbar_ul_color,navbar_ul_bg_color_hover=navbar_ul_bg_color_hover,
|
|
navbar_ul_dropdown_bg_color=navbar_ul_dropdown_bg_color,navbar_ul_dropdown_item_color=navbar_ul_dropdown_item_color,
|
|
navbar_ul_dropdown_item_color_hover=navbar_ul_dropdown_item_color_hover,navbar_ul_dropdown_item_bg_color=navbar_ul_dropdown_item_bg_color,
|
|
navbar_ul_dropdown_item_hover_color=navbar_ul_dropdown_item_hover_color,navbar_badge_color=navbar_badge_color,
|
|
apps_bg_img=apps_bg_img,app_name_color=app_name_color,app_hover_bg_color=app_hover_bg_color,apps_more_info=apps_more_info,
|
|
apps_install_color=apps_install_color,apps_install_bg_color=apps_install_bg_color,apps_upgrade_color=apps_upgrade_color,
|
|
apps_upgrade_bg_color=apps_upgrade_bg_color,sections_titles_color=sections_titles_color,sections_titles_bg=sections_titles_bg,
|
|
english_default_font=english_default_font,arabic_default_font=arabic_default_font)
|
|
return res
|
|
|
|
def set_values(self):
|
|
super(ResConfigSettings, self).set_values()
|
|
ir_config = self.env['ir.config_parameter'].sudo()
|
|
|
|
# Navigation Bar
|
|
ir_config.set_param("navbar_bg_color",self.navbar_bg_color)
|
|
ir_config.set_param("navbar_toggle",self.navbar_toggle)
|
|
ir_config.set_param("selection_app_color",self.selection_app_color)
|
|
ir_config.set_param("selection_app_bg_hover",self.selection_app_bg_hover)
|
|
ir_config.set_param("navbar_ul_color",self.navbar_ul_color)
|
|
ir_config.set_param("navbar_ul_bg_color_hover",self.navbar_ul_bg_color_hover)
|
|
ir_config.set_param("navbar_ul_dropdown_bg_color",self.navbar_ul_dropdown_bg_color)
|
|
ir_config.set_param("navbar_ul_dropdown_item_color",self.navbar_ul_dropdown_item_color)
|
|
ir_config.set_param("navbar_ul_dropdown_item_color_hover",self.navbar_ul_dropdown_item_color_hover)
|
|
ir_config.set_param("navbar_ul_dropdown_item_bg_color",self.navbar_ul_dropdown_item_bg_color)
|
|
ir_config.set_param("navbar_ul_dropdown_item_hover_color",self.navbar_ul_dropdown_item_hover_color)
|
|
ir_config.set_param("navbar_badge_color",self.navbar_badge_color)
|
|
# App Drawer (home)
|
|
ir_config.set_param("apps_bg_img",self.apps_bg_img)
|
|
ir_config.set_param("app_name_color",self.app_name_color)
|
|
ir_config.set_param("app_hover_bg_color",self.app_hover_bg_color)
|
|
# Apps Module
|
|
ir_config.set_param("apps_more_info",self.apps_more_info)
|
|
ir_config.set_param("apps_install_color",self.apps_install_color)
|
|
ir_config.set_param("apps_install_bg_color",self.apps_install_bg_color)
|
|
ir_config.set_param("apps_upgrade_color",self.apps_upgrade_color)
|
|
ir_config.set_param("apps_upgrade_bg_color",self.apps_upgrade_bg_color)
|
|
# Setting Module
|
|
ir_config.set_param("sections_titles_color",self.sections_titles_color)
|
|
ir_config.set_param("sections_titles_bg",self.sections_titles_bg)
|
|
#Font Settings
|
|
ir_config.set_param("english_default_font",self.english_default_font)
|
|
ir_config.set_param("arabic_default_font",self.arabic_default_font)
|
|
#Icons settings
|
|
ir_config.set_param("setting_icon",self.setting_icon)
|
|
|
|
try:
|
|
path = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
|
theme_path = path + "/odex_themecraft/static/src/scss/variables.scss"
|
|
except Exception as e:
|
|
raise UserError(_("Please Contact to Administrator. \n %s") % e)
|
|
|
|
# Navigation Bar
|
|
if self.navbar_bg_color:
|
|
backend_theme_attrs.update({'$navbar_bg_color': self.navbar_bg_color})
|
|
if self.navbar_toggle:
|
|
backend_theme_attrs.update({'$navbar_toggle': self.navbar_toggle})
|
|
if self.selection_app_color:
|
|
backend_theme_attrs.update({'$selection_app_color': self.selection_app_color})
|
|
if self.selection_app_bg_hover:
|
|
backend_theme_attrs.update({'$selection_app_bg_hover': self.selection_app_bg_hover})
|
|
if self.navbar_ul_color:
|
|
backend_theme_attrs.update({'$navbar_ul_color': self.navbar_ul_color})
|
|
if self.navbar_ul_bg_color_hover:
|
|
backend_theme_attrs.update({'$navbar_ul_bg_color_hover': self.navbar_ul_bg_color_hover})
|
|
if self.navbar_ul_dropdown_bg_color:
|
|
backend_theme_attrs.update({'$navbar_ul_dropdown_bg_color': self.navbar_ul_dropdown_bg_color})
|
|
if self.navbar_ul_dropdown_item_color:
|
|
backend_theme_attrs.update({'$navbar_ul_dropdown_item_color': self.navbar_ul_dropdown_item_color})
|
|
if self.navbar_ul_dropdown_item_color_hover:
|
|
backend_theme_attrs.update({'$navbar_ul_dropdown_item_color_hover': self.navbar_ul_dropdown_item_color_hover})
|
|
if self.navbar_ul_dropdown_item_bg_color:
|
|
backend_theme_attrs.update({'$navbar_ul_dropdown_item_bg_color': self.navbar_ul_dropdown_item_bg_color})
|
|
if self.navbar_badge_color:
|
|
backend_theme_attrs.update({'$navbar_badge_color': self.navbar_badge_color})
|
|
|
|
# App Drawer (home)
|
|
if self.apps_bg_img:
|
|
backend_theme_attrs.update({'$apps_bg_img': "url('" + ("/web/image/res.config.settings/%s/apps_bg_img" % self.id) + "')"})
|
|
if self.app_name_color:
|
|
backend_theme_attrs.update({'$app_name_color': self.app_name_color})
|
|
if self.app_hover_bg_color:
|
|
backend_theme_attrs.update({'$app_hover_bg_color': self.app_hover_bg_color})
|
|
|
|
# Apps Module
|
|
if self.apps_more_info:
|
|
backend_theme_attrs.update({'$apps_more_info': self.apps_more_info})
|
|
if self.apps_install_color:
|
|
backend_theme_attrs.update({'$apps_install_color': self.apps_install_color})
|
|
if self.apps_install_bg_color:
|
|
backend_theme_attrs.update({'$apps_install_bg_color': self.apps_install_bg_color})
|
|
if self.apps_upgrade_color:
|
|
backend_theme_attrs.update({'$apps_upgrade_color': self.apps_upgrade_color})
|
|
if self.apps_upgrade_bg_color:
|
|
backend_theme_attrs.update({'$apps_upgrade_bg_color': self.apps_upgrade_bg_color})
|
|
|
|
# Setting Module
|
|
if self.sections_titles_color:
|
|
backend_theme_attrs.update({'$sections_titles_color': self.sections_titles_color})
|
|
if self.sections_titles_bg:
|
|
backend_theme_attrs.update({'$sections_titles_bg': self.sections_titles_bg})
|
|
|
|
# Font Settings
|
|
# English Font
|
|
if self.english_default_font:
|
|
english_font = '"Roboto", "Odoo Unicode Support Noto", sans-serif'
|
|
if self.english_default_font == 'font_1':
|
|
english_font = 'Helvetica, "Roboto", "Odoo Unicode Support Noto", sans-serif'
|
|
elif self.english_default_font == 'font_2':
|
|
english_font = 'Futura, "Roboto", "Odoo Unicode Support Noto", sans-serif'
|
|
elif self.english_default_font == 'font_3':
|
|
english_font = 'Garamond, "Roboto", "Odoo Unicode Support Noto", sans-serif'
|
|
elif self.english_default_font == 'font_4':
|
|
english_font = 'Times, "Roboto", "Odoo Unicode Support Noto", sans-serif'
|
|
elif self.english_default_font == 'font_5':
|
|
english_font = 'Arial, "Roboto", "Odoo Unicode Support Noto", sans-serif'
|
|
elif self.english_default_font == 'font_6':
|
|
english_font = 'Verdana, "Roboto", "Odoo Unicode Support Noto", sans-serif'
|
|
elif self.english_default_font == 'font_7':
|
|
english_font = 'Comic Sans, "Roboto", "Odoo Unicode Support Noto", sans-serif'
|
|
elif self.english_default_font == 'font_8':
|
|
english_font = 'Trebuchet, "Roboto", "Odoo Unicode Support Noto", sans-serif'
|
|
elif self.english_default_font == 'font_9':
|
|
english_font = 'Gill Sans, "Roboto", "Odoo Unicode Support Noto", sans-serif'
|
|
elif self.english_default_font == 'font_10':
|
|
english_font = 'Georgia, "Roboto", "Odoo Unicode Support Noto", sans-serif'
|
|
# Update english default font
|
|
backend_theme_attrs.update({'$english_default_font': english_font})
|
|
# Arabic Font
|
|
if self.arabic_default_font:
|
|
arabic_font = '"Roboto", "Odoo Unicode Support Noto", sans-serif'
|
|
if self.arabic_default_font == 'font_1':
|
|
arabic_font = 'Arial, "Roboto", "Odoo Unicode Support Noto", sans-serif'
|
|
if self.arabic_default_font == 'font_2':
|
|
arabic_font = '"Droid Arabic Kufi", "Roboto", "Odoo Unicode Support Noto", sans-serif'
|
|
if self.arabic_default_font == 'font_3':
|
|
arabic_font = 'Amiri, "Roboto", "Odoo Unicode Support Noto", sans-serif'
|
|
if self.arabic_default_font == 'font_4':
|
|
arabic_font = '"Droid Arabic Naskh", "Roboto", "Odoo Unicode Support Noto", sans-serif'
|
|
if self.arabic_default_font == 'font_5':
|
|
arabic_font = '"Frutiger LT Arabic", "Roboto", "Odoo Unicode Support Noto", sans-serif'
|
|
# Update arabic default font
|
|
backend_theme_attrs.update({'$arabic_default_font': arabic_font})
|
|
|
|
self.replace_file(theme_path, backend_theme_attrs)
|
|
|