· 4 years ago · Apr 03, 2021, 06:00 PM
1import os
2import logging
3import psycopg2
4
5from odoo import models, fields, api
6from odoo.tools import ormcache
7
8_logger = logging.getLogger(__name__)
9
10class IrConfigParameter(models.Model):
11    """This model is used to config the google developers credentials """
12    # Dont upgrade this module, due to _get_param(self, key, default) is deleted for temporary due to bug issue
13
14    _name = 'ir.config_parameter'
15    _inherit = ['ir.config_parameter']
16
17    is_env = fields.Boolean(string='Is Env Variable', default=False, help='Set true to query or update in env variable')
18
19    def write(self, vals):
20        self.clear_caches()
21        if vals.get('is_env', None) is None and self.is_env:
22            self._save_in_env(vals)
23        elif vals.get('is_env'):
24            self._save_in_env(vals)
25
26        return super(IrConfigParameter, self).write(vals)
27
28    def _save_in_env(self, vals):
29        if vals.get('value', False):
30            os.environ[self.key.upper()] = vals['value']
31        else:
32            os.environ[self.key.upper()] = self.value
33        # this make value not saved in database
34        vals['value'] = ''            
35
36    @api.model_create_multi
37    def create(self, vals_list):
38        self.clear_caches()
39        
40        for vals in vals_list:
41            if vals.get('is_env'):
42                os.environ[vals['key'].upper()] = vals['value']
43                # this make value not saved in database
44                vals['value'] = ''
45
46        return super(IrConfigParameter, self).create(vals_list)