11# Copyright 2023 ACSONE SA/NV (https://www.acsone.eu).
22# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl).
33import logging
4- import os
54
6- from odoo import fields , models
5+ from odoo import models
76
87_logger = logging .getLogger (__name__ )
98
109
1110class FSStorage (models .Model ):
1211 _name = "fs.storage"
1312 _inherit = ["fs.storage" , "server.env.mixin" ]
14-
15- eval_options_from_env = fields .Boolean (
16- string = "Resolve env vars" ,
17- help = """Resolve options values starting with $ from environment variables. e.g
18- {
19- "endpoint_url": "$AWS_ENDPOINT_URL",
20- }
21- """ ,
22- )
23-
2413 _server_env_section_name_field = "code"
2514
2615 @property
@@ -31,30 +20,3 @@ def _server_env_fields(self):
3120 "directory_path" : {},
3221 "eval_options_from_env" : {},
3322 }
34-
35- def _eval_options_from_env (self , options ):
36- values = {}
37- for key , value in options .items ():
38- if isinstance (value , dict ):
39- values [key ] = self ._eval_options_from_env (value )
40- elif isinstance (value , str ) and value .startswith ("$" ):
41- env_variable_name = value [1 :]
42- env_variable_value = os .getenv (env_variable_name )
43- if env_variable_value is not None :
44- values [key ] = env_variable_value
45- else :
46- values [key ] = value
47- _logger .warning (
48- "Environment variable %s is not set for fs_storage %s." ,
49- env_variable_name ,
50- self .display_name ,
51- )
52- else :
53- values [key ] = value
54- return values
55-
56- def _get_fs_options (self ):
57- # OVERRIDE: to resolve env vars in options
58- if not self .eval_options_from_env :
59- return super ()._get_fs_options ()
60- return self ._eval_options_from_env (self .json_options )
0 commit comments