odex25_standard/odex25_base/odex_themecraft/models/model.py

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)