# -*- encoding: utf-8 -*- ############################################################################## # # mis_builder module for Odoo, Management Information System Builder # Copyright (C) 2014-2015 ACSONE SA/NV () # # This file is a part of mis_builder # # mis_builder is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License v3 or later # as published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # mis_builder is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License v3 or later for more details. # # You should have received a copy of the GNU Affero General Public License # v3 or later along with this program. # If not, see . # ############################################################################## from openerp import api, fields, models, exceptions class MisReportKpi(models.Model): _inherit='mis.report.kpi' @api.depends('kpi_style') def calc_css_style(self): css_attributes = [ ('font-style', self.kpi_style.font_style), ('font-weight', self.kpi_style.font_weight), ('font-size', self.kpi_style.font_size), ('color', self.kpi_style.color), ('background-color', self.kpi_style.background_color), ('indent-level', str(self.kpi_style.indent_level)) ] css_list = [ x[0] + ':' + x[1] for x in css_attributes if x[1] ] self.default_css_style = ';'.join(css_item for css_item in css_list) # Adding Attributes to default_css_style default_css_style = fields.Char(compute=calc_css_style, store=True) kpi_style = fields.Many2one( string="Default CSS style for KPI", comodel_name="mis.report.kpi.style", required=True ) class MisReportKpiStyle(models.Model): _name = 'mis.report.kpi.style' # TODO use WEB WIdget color picker name = fields.Char(string='style name', required=True) @api.depends('indent_level') def check_positive_val(self): return self.indent_level > 0 _font_style_selection = [ ('normal', 'Normal'), ('italic', 'Italic'), ] _font_weight_selection = [ ('nornal', 'Normal'), ('bold', 'Bold'), ] _font_size_selection = [ ('medium', ''), ('xx-small', 'xx-small'), ('x-small', 'x-small'), ('small', 'small'), ('large', 'large'), ('x-large', 'x-large'), ('xx-large', 'xx-large'), ] color = fields.Char( required=True, help='Line color in valid RGB code (from #000000 to #FFFFFF)', ) background_color = fields.Char( required=True, help='Line color in valid RGB code (from #000000 to #FFFFFF)' ) font_style = fields.Selection( selection=_font_style_selection, ) font_weight = fields.Selection( selection=_font_weight_selection ) font_size = fields.Selection( selection=_font_size_selection ) indent_level = fields.Integer()