· 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)