Skip to content
Snippets Groups Projects
redner_configurator_wizard.py 2.43 KiB
Newer Older
##############################################################################
#
#    Redner Odoo module
#    Copyright © 2016, 2023-2025 XCG Consulting <https://xcg-consulting.fr>
#
#    This program is free software: you can redistribute it and/or modify
#    it under the terms of the GNU Affero General Public License as
#    published by the Free Software Foundation, either version 3 of the
#    License, or (at your option) any later version.
#
#    This program 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 for more details.
#
#    You should have received a copy of the GNU Affero General Public License
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################

from odoo import api, fields, models
from odoo.exceptions import AccessError


class RednerConfiguratorWizard(models.TransientModel):
    _name = "redner.configurator.wizard"
    _description = "Redner Configuration Wizard"

    server_url = fields.Char(string="Server URL")
    account = fields.Char(string="Account")
    api_key = fields.Char(string="API Key")

    @api.model
    def default_get(self, fields_list):
        """Load default values from ir.config_parameter"""
        res = super().default_get(fields_list)
        Param = self.env["ir.config_parameter"].sudo()

        res.update(
            {
                "server_url": Param.get_param("redner.server_url", default=""),
                "account": Param.get_param("redner.account", default=""),
                "api_key": Param.get_param("redner.api_key", default=""),
            }
        )
        return res

    def action_apply(self):
        """Save values back to ir.config_parameter"""
        if not self.env.user.has_group(
            "redner.group_redner_admin"
        ) and not self.env.user.has_group("base.group_system"):
            raise AccessError(
                "You do not have permission to modify Redner configuration."
            )

        Param = self.env["ir.config_parameter"].sudo()
        Param.set_param("redner.server_url", self.server_url or "")
        Param.set_param("redner.account", self.account or "")
        Param.set_param("redner.api_key", self.api_key or "")

        return {"type": "ir.actions.act_window_close"}