odoo-module-colors_customiz.../models/custom_colors.py

145 lines
7.8 KiB
Python

# -*- coding: utf-8 -*-
from openerp import models, fields, api, _, tools
class color_theme(models.Model):
_name = 'colors.customization.theme'
def _get_properties(self):
return [
('nav.navbar-inverse', 'background-color', self.navbar_color),
('nav.navbar-inverse', 'border-color', self.navbar_border_color),
('.navbar-inverse .navbar-nav > li > a', 'color', self.menu_font_color),
('.navbar-inverse .navbar-nav > .active > a, .navbar-inverse .navbar-nav > .active > a:focus', 'color', self.navbar_active_item_font_color),
('.navbar-inverse .navbar-nav > li.active > a', 'background-color', self.menu_active_item_color),
('.navbar-inverse .navbar-nav > li > a:hover', 'color', self.navbar_hover_font_color),
('.navbar-inverse .navbar-nav > li > a:hover', 'background-color', self.navbar_hover_background_color),
('.oe_leftbar', 'background', self.left_bar_color),
('.nav-pills li > a', 'color', self.left_bar_font_color),
('.oe_secondary_menu_section', 'color', self.left_bar_category_font_color),
('.nav-pills > li.active > a', 'background-color', self.left_bar_active_item_color),
('.nav-pills > li.active > a', 'color', self.left_bar_active_item_font_color),
('.nav-pills > li > a:hover', 'color', self.left_bar_hover_font_color),
('.nav-pills > li > a:hover', 'background-color', self.left_bar_hover_background_color),
('.openerp .oe_view_manager_current > .oe_view_manager_header', 'background-color', self.header_table_color),
('.openerp .oe_view_manager_current > .oe_view_manager_header', 'background-image', self.webkit_gradient),
('.openerp .oe_view_manager_current > .oe_view_manager_header', 'background-image', self.linear_gradient),
('.openerp .oe_view_manager_current > .oe_view_manager_header', 'background-image', self.moz_gradient),
('.openerp .oe_view_manager_current > .oe_view_manager_header', 'background-image', self.ms_gradient),
('.openerp .oe_view_manager_current > .oe_view_manager_header', 'background-image', self.lin_gradient),
('.openerp .oe_view_manager_current > .oe_view_manager_header', 'background-image', self.gradient_bot),
]
def _build_rule(self, selector, prop, value):
return "{s} {{ {p}: {v} !important;}}\n".format(s=selector, p=prop, v=value)
@api.depends('navbar_color', 'navbar_border_color',
'menu_font_color', 'left_bar_color',
'menu_active_item_color',
'navbar_hover_font_color','navbar_hover_background_color',
'left_bar_font_color', 'left_bar_category_font_color',
'left_bar_active_item_color', 'navbar_active_item_font_color',
'left_bar_active_item_font_color',
'left_bar_hover_font_color','left_bar_hover_background_color',
'header_table_color','header_table_color_2',)
def _get_css(self):
result = ''
for field in self._get_properties():
result += self._build_rule(field[0], field[1], field[2])
self.css = result
name = fields.Char('Name',required=True,translate=True)
css = fields.Char(compute='_get_css', store=True, string="CSS")
navbar_color = fields.Char('Background Color')
navbar_border_color = fields.Char('Border Color')
navbar_active_item_font_color = fields.Char('Active Item Font Color')
menu_font_color = fields.Char('Font Color')
menu_active_item_color = fields.Char('Active Item Background Color')
navbar_hover_font_color = fields.Char('Hover Font Color')
navbar_hover_background_color = fields.Char('Hover Background Color')
left_bar_color = fields.Char('Background Color')
left_bar_font_color = fields.Char('Sub Menu Color')
left_bar_category_font_color = fields.Char('Main Menu Color')
left_bar_active_item_font_color = fields.Char('Active Item Font Color')
left_bar_active_item_color = fields.Char('Active Item Background Color')
left_bar_hover_font_color = fields.Char('Hover Font Color')
left_bar_hover_background_color = fields.Char('Hover Background Color')
@api.one
def get_header_gradient_webkit(self):
if self.header_table_color and self.header_table_color_2:
self.webkit_gradient = '-webkit-gradient(linear, left top, left bottom, from('+self.header_table_color+'), to('+self.header_table_color_2+'))'
self.linear_gradient ='-webkit-linear-gradient(top, '+self.header_table_color+', '+self.header_table_color_2+')'
self.moz_gradient = '-moz-linear-gradient(top,'+self.header_table_color+', '+self.header_table_color_2+')'
self.ms_gradient = '-ms-linear-gradient(top,'+self.header_table_color+', '+self.header_table_color_2+')'
self.lin_gradient = '-o-linear-gradient(top,'+self.header_table_color+', '+self.header_table_color_2+')'
self.gradient_bot = 'linear-gradient(to bottom,'+self.header_table_color+', '+self.header_table_color_2+')'
else:
self.webkit_gradient = self.linear_gradient = self.moz_gradient = self.ms_gradient = self.lin_gradient = self.gradient_bot = False
header_table_color = fields.Char('Header Section Background (Gradient)')
header_table_color_2 = fields.Char('Header Section Background 2')
webkit_gradient = fields.Char('Gradient',compute='get_header_gradient_webkit')
linear_gradient = fields.Char('Gradient',compute='get_header_gradient_webkit')
moz_gradient = fields.Char('Gradient',compute='get_header_gradient_webkit')
ms_gradient = fields.Char('Gradient',compute='get_header_gradient_webkit')
lin_gradient = fields.Char('Gradient',compute='get_header_gradient_webkit')
gradient_bot = fields.Char('Gradient',compute='get_header_gradient_webkit')
@api.one
def assign_to_all_users(self):
for user in self.env['res.users'].search([]):
user.company_color_theme = self
users = fields.One2many('res.users','company_color_theme',string='Users',help='Only one theme may be specified to a user')
@api.one
def change_default_theme(self):
if self.default_for_new_users:
for theme in self.search([('id','!=',self.id)]):
theme.default_for_new_users = False
default_for_new_users = fields.Boolean(string='Default',inverse='change_default_theme',help='This theme would be applied to new users. There could be only one default theme')
@api.one
@api.depends('image')
def _get_image(self):
images = tools.image_get_resized_images(self.image)
self.image_small = images.get('image_small')
self.image_medium = images.get('image_medium')
image = fields.Binary(string='Favicon')
image_medium = fields.Binary(compute='_get_image',store=True,string='Image Medium')
image_small = fields.Binary(compute='_get_image',store=True,string='Image Small')
@api.one
@api.depends('image_small')
def get_image_small_url(self):
self.url_favicon = "web/binary/image?model=colors.customization.theme&id="+ str(self.id) +"&field=image_small"
url_favicon = fields.Char(compute='get_image_small_url')
footer_text = fields.Char(string='Footer', help='Leave it empty to delete a footer at all',translate=True)
footer_url = fields.Char(string='URL',help='Use http or https to have an absolute url')
footer_color = fields.Char(string='Color')
remove_menu_preferences = fields.Boolean(string='Hide Preferences',help='From the user menu',default=False)
remove_menu_account = fields.Boolean(string='Hide Account',help='From the user menu',default=True)
remove_menu_help = fields.Boolean(string='Hide Help',help='From the user menu',default=True)
remove_menu_about = fields.Boolean(string='Hide Deveoper Mode (About)',help='From the user menu',default=False)
meta_title = fields.Char(string='Page Title',help='Instead of Odoo')
_order = 'id'