diff --git a/addons/auth_signup/controllers/main.py b/addons/auth_signup/controllers/main.py index 8a4315a0ad8..804642ac8c2 100644 --- a/addons/auth_signup/controllers/main.py +++ b/addons/auth_signup/controllers/main.py @@ -70,10 +70,10 @@ class AuthSignupHome(Home): def get_auth_signup_config(self): """retrieve the module config (which features are enabled) for the login page""" - IrConfigParam = request.env['ir.config_parameter'].sudo() + get_param = request.env['ir.config_parameter'].sudo().get_param return { - 'signup_enabled': IrConfigParam.get_param('auth_signup.allow_uninvited') == 'True', - 'reset_password_enabled': IrConfigParam.get_param('auth_signup.reset_password') == 'True', + 'signup_enabled': get_param('auth_signup.allow_uninvited') == 'True', + 'reset_password_enabled': get_param('auth_signup.reset_password') == 'True', } def get_auth_signup_qcontext(self): diff --git a/addons/auth_signup/data/auth_signup_data.xml b/addons/auth_signup/data/auth_signup_data.xml index ce35baac34b..2cc3d07195c 100644 --- a/addons/auth_signup/data/auth_signup_data.xml +++ b/addons/auth_signup/data/auth_signup_data.xml @@ -14,7 +14,6 @@ auth_signup.template_user_id - diff --git a/addons/auth_signup/models/res_config.py b/addons/auth_signup/models/res_config.py index 9256ef3f093..d6bf82a1d05 100644 --- a/addons/auth_signup/models/res_config.py +++ b/addons/auth_signup/models/res_config.py @@ -13,19 +13,19 @@ class BaseConfigSettings(models.TransientModel): @api.model def get_default_auth_signup_template_user_id(self, fields): - IrConfigParam = self.env['ir.config_parameter'] + get_param = self.env['ir.config_parameter'].get_param # we use safe_eval on the result, since the value of the parameter is a nonempty string return { - 'auth_signup_reset_password': safe_eval(IrConfigParam.get_param('auth_signup.reset_password', 'False')), - 'auth_signup_uninvited': safe_eval(IrConfigParam.get_param('auth_signup.allow_uninvited', 'False')), - 'auth_signup_template_user_id': safe_eval(IrConfigParam.get_param('auth_signup.template_user_id', 'False')), + 'auth_signup_reset_password': safe_eval(get_param('auth_signup.reset_password', 'False')), + 'auth_signup_uninvited': safe_eval(get_param('auth_signup.allow_uninvited', 'False')), + 'auth_signup_template_user_id': safe_eval(get_param('auth_signup.template_user_id', 'False')), } @api.multi def set_auth_signup_template_user_id(self): self.ensure_one() - IrConfigParam = self.env['ir.config_parameter'] + set_param = self.env['ir.config_parameter'].set_param # we store the repr of the values, since the value of the parameter is a required string - IrConfigParam.set_param('auth_signup.reset_password', repr(self.auth_signup_reset_password), groups=['base.group_system']) - IrConfigParam.set_param('auth_signup.allow_uninvited', repr(self.auth_signup_uninvited), groups=['base.group_system']) - IrConfigParam.set_param('auth_signup.template_user_id', repr(self.auth_signup_template_user_id.id), groups=['base.group_system']) + set_param('auth_signup.reset_password', repr(self.auth_signup_reset_password)) + set_param('auth_signup.allow_uninvited', repr(self.auth_signup_uninvited)) + set_param('auth_signup.template_user_id', repr(self.auth_signup_template_user_id.id)) diff --git a/addons/auth_signup/models/res_partner.py b/addons/auth_signup/models/res_partner.py index d2bad560398..6dbf14188d8 100644 --- a/addons/auth_signup/models/res_partner.py +++ b/addons/auth_signup/models/res_partner.py @@ -52,7 +52,7 @@ class ResPartner(models.Model): the url state components (menu_id, id, view_type) """ res = dict.fromkeys(self.ids, False) - base_url = self.env['ir.config_parameter'].get_param('web.base.url') + base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url') for partner in self: # when required, make sure the partner has a valid signup token if self.env.context.get('signup_valid') and not partner.user_ids: diff --git a/addons/auth_signup/models/res_users.py b/addons/auth_signup/models/res_users.py index 889745df1e1..a0871c35fa8 100644 --- a/addons/auth_signup/models/res_users.py +++ b/addons/auth_signup/models/res_users.py @@ -75,15 +75,14 @@ class ResUsers(models.Model): @api.model def _signup_create_user(self, values): """ create a new user from the template user """ - # we expect self.uid == SUPERUSER_ID - IrConfigParam = self.env['ir.config_parameter'] - template_user_id = literal_eval(IrConfigParam.get_param('auth_signup.template_user_id', 'False')) + get_param = self.env['ir.config_parameter'].sudo().get_param + template_user_id = literal_eval(get_param('auth_signup.template_user_id', 'False')) template_user = self.browse(template_user_id) assert template_user.exists(), 'Signup: invalid template user' # check that uninvited users may sign up if 'partner_id' not in values: - if not literal_eval(IrConfigParam.get_param('auth_signup.allow_uninvited', 'False')): + if not literal_eval(get_param('auth_signup.allow_uninvited', 'False')): raise SignupError('Signup is not allowed for uninvited users') assert values.get('login'), "Signup: no login given for new user" diff --git a/addons/base_gengo/wizard/base_gengo_translations.py b/addons/base_gengo/wizard/base_gengo_translations.py index 9e1f06a264f..e75f88eace5 100644 --- a/addons/base_gengo/wizard/base_gengo_translations.py +++ b/addons/base_gengo/wizard/base_gengo_translations.py @@ -47,8 +47,8 @@ class BaseGengoTranslations(models.TransientModel): @api.model_cr def init(self): icp = self.env['ir.config_parameter'].sudo() - if not icp.get_param(self.GENGO_KEY, default=None): - icp.set_param(self.GENGO_KEY, str(uuid.uuid4()), groups=self.GROUPS) + if not icp.get_param(self.GENGO_KEY): + icp.set_param(self.GENGO_KEY, str(uuid.uuid4())) @api.model_cr def get_gengo_key(self): @@ -206,7 +206,7 @@ class BaseGengoTranslations(models.TransientModel): 'term2.id': {...} } }''' - base_url = self.env['ir.config_parameter'].get_param('web.base.url') + base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url') IrTranslation = self.env['ir.translation'] jobs = {} user = self.env.user diff --git a/addons/calendar/models/calendar.py b/addons/calendar/models/calendar.py index 0e3ee80bf1c..ab1c7f19309 100644 --- a/addons/calendar/models/calendar.py +++ b/addons/calendar/models/calendar.py @@ -131,7 +131,7 @@ class Attendee(models.Model): """ res = False - if self.env['ir.config_parameter'].get_param('calendar.block_mail') or self._context.get("no_mail_to_attendees"): + if self.env['ir.config_parameter'].sudo().get_param('calendar.block_mail') or self._context.get("no_mail_to_attendees"): return res calendar_view = self.env.ref('calendar.view_calendar_event_calendar') @@ -152,7 +152,7 @@ class Attendee(models.Model): 'color': colors, 'action_id': self.env['ir.actions.act_window'].search([('view_id', '=', calendar_view.id)], limit=1).id, 'dbname': self._cr.dbname, - 'base_url': self.env['ir.config_parameter'].get_param('web.base.url', default='http://localhost:8069') + 'base_url': self.env['ir.config_parameter'].sudo().get_param('web.base.url', default='http://localhost:8069') }) invitation_template = invitation_template.with_context(rendering_context) diff --git a/addons/google_account/data/google_account_data.xml b/addons/google_account/data/google_account_data.xml index eda1b51a8f3..1c3a5f4089e 100644 --- a/addons/google_account/data/google_account_data.xml +++ b/addons/google_account/data/google_account_data.xml @@ -4,7 +4,6 @@ google_redirect_uri urn:ietf:wg:oauth:2.0:oob - diff --git a/addons/google_account/models/google_service.py b/addons/google_account/models/google_service.py index d707ee8d188..07fa2d12cf5 100644 --- a/addons/google_account/models/google_service.py +++ b/addons/google_account/models/google_service.py @@ -57,11 +57,11 @@ class GoogleService(models.TransientModel): @api.model def _get_google_token_uri(self, service, scope): - Parameters = self.env['ir.config_parameter'].sudo() + get_param = self.env['ir.config_parameter'].sudo().get_param encoded_params = werkzeug.url_encode({ 'scope': scope, - 'redirect_uri': Parameters.get_param('google_redirect_uri'), - 'client_id': Parameters.get_param('google_%s_client_id' % service), + 'redirect_uri': get_param('google_redirect_uri'), + 'client_id': get_param('google_%s_client_id' % service), 'response_type': 'code', }) return '%s?%s' % (GOOGLE_AUTH_ENDPOINT, encoded_params) @@ -77,9 +77,9 @@ class GoogleService(models.TransientModel): 'f': from_url } - Parameters = self.env['ir.config_parameter'] - base_url = Parameters.get_param('web.base.url', default='http://www.odoo.com?NoBaseUrl') - client_id = Parameters.sudo().get_param('google_%s_client_id' % (service,), default=False) + get_param = self.env['ir.config_parameter'].sudo().get_param + base_url = get_param('web.base.url', default='http://www.odoo.com?NoBaseUrl') + client_id = get_param('google_%s_client_id' % (service,), default=False) encoded_params = werkzeug.url_encode({ 'response_type': 'code', @@ -97,10 +97,10 @@ class GoogleService(models.TransientModel): """ Call Google API to exchange authorization code against token, with POST request, to not be redirected. """ - Parameters = self.env['ir.config_parameter'] - base_url = Parameters.get_param('web.base.url', default='http://www.odoo.com?NoBaseUrl') - client_id = Parameters.sudo().get_param('google_%s_client_id' % (service,), default=False) - client_secret = Parameters.sudo().get_param('google_%s_client_secret' % (service,), default=False) + get_param = self.env['ir.config_parameter'].sudo().get_param + base_url = get_param('web.base.url', default='http://www.odoo.com?NoBaseUrl') + client_id = get_param('google_%s_client_id' % (service,), default=False) + client_secret = get_param('google_%s_client_secret' % (service,), default=False) headers = {"content-type": "application/x-www-form-urlencoded"} data = werkzeug.url_encode({ @@ -120,9 +120,9 @@ class GoogleService(models.TransientModel): # FIXME : this method update a field defined in google_calendar module. Since it is used only in that module, maybe it should be moved. @api.model def _refresh_google_token_json(self, refresh_token, service): # exchange_AUTHORIZATION vs Token (service = calendar) - Parameters = self.env['ir.config_parameter'].sudo() - client_id = Parameters.get_param('google_%s_client_id' % (service,), default=False) - client_secret = Parameters.get_param('google_%s_client_secret' % (service,), default=False) + get_param = self.env['ir.config_parameter'].sudo().get_param + client_id = get_param('google_%s_client_id' % (service,), default=False) + client_secret = get_param('google_%s_client_secret' % (service,), default=False) headers = {"content-type": "application/x-www-form-urlencoded"} data = werkzeug.url_encode({ diff --git a/addons/google_calendar/models/google_calendar.py b/addons/google_calendar/models/google_calendar.py index 965479ef2d6..7a5fda8575e 100644 --- a/addons/google_calendar/models/google_calendar.py +++ b/addons/google_calendar/models/google_calendar.py @@ -906,14 +906,14 @@ class GoogleCalendar(models.AbstractModel): self.env.user.sudo().write(vals) def get_minTime(self): - number_of_week = self.env['ir.config_parameter'].get_param('calendar.week_synchro', default=13) + number_of_week = self.env['ir.config_parameter'].sudo().get_param('calendar.week_synchro', default=13) return datetime.now() - timedelta(weeks=number_of_week) def get_need_synchro_attendee(self): - return self.env['ir.config_parameter'].get_param('calendar.block_synchro_attendee', default=True) + return self.env['ir.config_parameter'].sudo().get_param('calendar.block_synchro_attendee', default=True) def get_disable_since_synchro(self): - return self.env['ir.config_parameter'].get_param('calendar.block_since_synchro', default=False) + return self.env['ir.config_parameter'].sudo().get_param('calendar.block_since_synchro', default=False) def get_print_log(self): - return self.env['ir.config_parameter'].get_param('calendar.debug_print', default=False) + return self.env['ir.config_parameter'].sudo().get_param('calendar.debug_print', default=False) diff --git a/addons/google_calendar/models/res_config.py b/addons/google_calendar/models/res_config.py index f1d93ad4046..400a15480d8 100644 --- a/addons/google_calendar/models/res_config.py +++ b/addons/google_calendar/models/res_config.py @@ -14,11 +14,13 @@ class CalendarSettings(models.TransientModel): server_uri = fields.Char('URI for tuto') def set_calset(self): - self.env['ir.config_parameter'].set_param('google_calendar_client_id', (self.cal_client_id or '').strip(), groups=['base.group_system']) - self.env['ir.config_parameter'].set_param('google_calendar_client_secret', (self.cal_client_secret or '').strip(), groups=['base.group_system']) + set_param = self.env['ir.config_parameter'].set_param + set_param('google_calendar_client_id', (self.cal_client_id or '').strip()) + set_param('google_calendar_client_secret', (self.cal_client_secret or '').strip()) def get_default_all(self, fields): - cal_client_id = self.env['ir.config_parameter'].get_param('google_calendar_client_id', default='') - cal_client_secret = self.env['ir.config_parameter'].get_param('google_calendar_client_secret', default='') - server_uri = "%s/google_account/authentication" % self.env['ir.config_parameter'].get_param('web.base.url', default="http://yourcompany.odoo.com") + get_param = self.env['ir.config_parameter'].get_param + cal_client_id = get_param('google_calendar_client_id', default='') + cal_client_secret = get_param('google_calendar_client_secret', default='') + server_uri = "%s/google_account/authentication" % get_param('web.base.url', default="http://yourcompany.odoo.com") return dict(cal_client_id=cal_client_id, cal_client_secret=cal_client_secret, server_uri=server_uri) diff --git a/addons/google_drive/data/google_drive_data.xml b/addons/google_drive/data/google_drive_data.xml index 3637c50caaa..2da9e8185c0 100644 --- a/addons/google_drive/data/google_drive_data.xml +++ b/addons/google_drive/data/google_drive_data.xml @@ -5,13 +5,11 @@ google_drive_client_id 598905559630.apps.googleusercontent.com - google_drive_client_secret vTmou73c-njP-1qCxm7qx7QE - diff --git a/addons/google_drive/models/google_drive.py b/addons/google_drive/models/google_drive.py index 0a65ffb175e..b1eda64b842 100644 --- a/addons/google_drive/models/google_drive.py +++ b/addons/google_drive/models/google_drive.py @@ -49,8 +49,8 @@ class GoogleDrive(models.Model): @api.model def get_access_token(self, scope=None): - Config = self.env['ir.config_parameter'] - google_drive_refresh_token = Config.sudo().get_param('google_drive_refresh_token') + Config = self.env['ir.config_parameter'].sudo() + google_drive_refresh_token = Config.get_param('google_drive_refresh_token') user_is_admin = self.env['res.users'].browse(self.env.user.id)._is_admin() if not google_drive_refresh_token: if user_is_admin: @@ -59,8 +59,8 @@ class GoogleDrive(models.Model): raise RedirectWarning(msg, action_id, _('Go to the configuration panel')) else: raise UserError(_("Google Drive is not yet configured. Please contact your administrator.")) - google_drive_client_id = Config.sudo().get_param('google_drive_client_id') - google_drive_client_secret = Config.sudo().get_param('google_drive_client_secret') + google_drive_client_id = Config.get_param('google_drive_client_id') + google_drive_client_secret = Config.get_param('google_drive_client_secret') #For Getting New Access Token With help of old Refresh Token data = werkzeug.url_encode({ 'client_id': google_drive_client_id, diff --git a/addons/google_drive/models/res_config.py b/addons/google_drive/models/res_config.py index be3aca5cb01..fba3f8ec9f1 100644 --- a/addons/google_drive/models/res_config.py +++ b/addons/google_drive/models/res_config.py @@ -29,5 +29,5 @@ class BaseConfigSettings(models.TransientModel): if authorization_code and authorization_code != ICP.get_param('google_drive_authorization_code'): refresh_token = self.env['google.service'].generate_refresh_token('drive', authorization_code) - ICP.set_param('google_drive_authorization_code', authorization_code, groups=['base.group_system']) - ICP.set_param('google_drive_refresh_token', refresh_token, groups=['base.group_system']) + ICP.set_param('google_drive_authorization_code', authorization_code) + ICP.set_param('google_drive_refresh_token', refresh_token) diff --git a/addons/google_spreadsheet/models/google_drive.py b/addons/google_spreadsheet/models/google_drive.py index be03444cb1c..88b75a65ca3 100644 --- a/addons/google_spreadsheet/models/google_drive.py +++ b/addons/google_spreadsheet/models/google_drive.py @@ -40,7 +40,7 @@ class GoogleDrive(models.Model): formula = '=oe_read_group("%s";"%s";"%s";"%s")' % (model, fields, groupbys, domain) else: formula = '=oe_browse("%s";"%s";"%s")' % (model, fields, domain) - url = self.env['ir.config_parameter'].get_param('web.base.url') + url = self.env['ir.config_parameter'].sudo().get_param('web.base.url') dbname = self._cr.dbname user = self.env['res.users'].browse(self.env.user.id).read(['login', 'password'])[0] username = user['login'] diff --git a/addons/im_livechat/models/im_livechat_channel.py b/addons/im_livechat/models/im_livechat_channel.py index 1f152e01054..c2f0e8cb3c2 100644 --- a/addons/im_livechat/models/im_livechat_channel.py +++ b/addons/im_livechat/models/im_livechat_channel.py @@ -70,7 +70,7 @@ class ImLivechatChannel(models.Model): def _compute_script_external(self): view = self.env['ir.model.data'].get_object('im_livechat', 'external_loader') values = { - "url": self.env['ir.config_parameter'].get_param('web.base.url'), + "url": self.env['ir.config_parameter'].sudo().get_param('web.base.url'), "dbname": self._cr.dbname, } for record in self: @@ -79,7 +79,7 @@ class ImLivechatChannel(models.Model): @api.multi def _compute_web_page_link(self): - base_url = self.env['ir.config_parameter'].get_param('web.base.url') + base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url') for record in self: record.web_page = "%s/im_livechat/support/%i" % (base_url, record.id) @@ -195,7 +195,7 @@ class ImLivechatChannel(models.Model): def get_livechat_info(self, channel_id, username='Visitor'): info = {} info['available'] = len(self.browse(channel_id).get_available_users()) > 0 - info['server_url'] = self.env['ir.config_parameter'].get_param('web.base.url') + info['server_url'] = self.env['ir.config_parameter'].sudo().get_param('web.base.url') if info['available']: info['options'] = self.sudo().get_channel_infos(channel_id) info['options']["default_username"] = username diff --git a/addons/link_tracker/models/link_tracker.py b/addons/link_tracker/models/link_tracker.py index 7b30151ca66..ce6d3b41b84 100644 --- a/addons/link_tracker/models/link_tracker.py +++ b/addons/link_tracker/models/link_tracker.py @@ -51,7 +51,7 @@ class link_tracker(models.Model): def convert_links(self, html, vals, blacklist=None): for match in re.findall(URL_REGEX, html): - short_schema = self.env['ir.config_parameter'].get_param('web.base.url') + '/r/' + short_schema = self.env['ir.config_parameter'].sudo().get_param('web.base.url') + '/r/' href = match[0] long_url = match[1] @@ -76,12 +76,12 @@ class link_tracker(models.Model): @api.one @api.depends('code') def _compute_short_url(self): - base_url = self.env['ir.config_parameter'].get_param('web.base.url') + base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url') self.short_url = urljoin(base_url, '/r/%(code)s' % {'code': self.code}) @api.one def _compute_short_url_host(self): - self.short_url_host = self.env['ir.config_parameter'].get_param('web.base.url') + '/r/' + self.short_url_host = self.env['ir.config_parameter'].sudo().get_param('web.base.url') + '/r/' @api.one def _compute_code(self): diff --git a/addons/mail/data/mail_data.xml b/addons/mail/data/mail_data.xml index 99df3e80737..aa4cae02f30 100644 --- a/addons/mail/data/mail_data.xml +++ b/addons/mail/data/mail_data.xml @@ -37,14 +37,12 @@ mail.catchall.alias catchall - mail.bounce.alias bounce - diff --git a/addons/mail/models/mail_template.py b/addons/mail/models/mail_template.py index 9f870b86ac2..a819c8d99a9 100644 --- a/addons/mail/models/mail_template.py +++ b/addons/mail/models/mail_template.py @@ -285,7 +285,7 @@ class MailTemplate(models.Model): html = '
%s
' % html root = lxml.html.fromstring(html) - base_url = self.env['ir.config_parameter'].get_param('web.base.url') + base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url') (base_scheme, base_netloc, bpath, bparams, bquery, bfragment) = urlparse.urlparse(base_url) def _process_link(url): diff --git a/addons/mail/models/mail_thread.py b/addons/mail/models/mail_thread.py index 6bc7cbffbe0..14fdc651323 100644 --- a/addons/mail/models/mail_thread.py +++ b/addons/mail/models/mail_thread.py @@ -787,7 +787,7 @@ class MailThread(models.AbstractModel): """ Get specific notification email values to store on the notification mail_mail. Void method, inherit it to add custom values. """ self.ensure_one() - database_uuid = self.env['ir.config_parameter'].get_param('database.uuid') + database_uuid = self.env['ir.config_parameter'].sudo().get_param('database.uuid') return {'headers': repr({ 'X-Odoo-Objects': "%s-%s" % (self._name, self.id), 'X-Odoo-db-uuid': database_uuid diff --git a/addons/mail/models/res_config.py b/addons/mail/models/res_config.py index f96ab82201c..d34a6663a4f 100644 --- a/addons/mail/models/res_config.py +++ b/addons/mail/models/res_config.py @@ -37,4 +37,4 @@ class BaseConfiguration(models.TransientModel): @api.multi def set_alias_domain(self): for record in self: - self.env['ir.config_parameter'].set_param("mail.catchall.domain", record.alias_domain or '', groups=['base.group_system']) + self.env['ir.config_parameter'].set_param("mail.catchall.domain", record.alias_domain or '') diff --git a/addons/mail/models/update.py b/addons/mail/models/update.py index 1bd09837552..4b66b15e915 100644 --- a/addons/mail/models/update.py +++ b/addons/mail/models/update.py @@ -113,10 +113,10 @@ class PublisherWarrantyContract(AbstractModel): pass if result.get('enterprise_info'): # Update expiration date - IrParamSudo = self.env['ir.config_parameter'].sudo() - IrParamSudo.set_param('database.expiration_date', result['enterprise_info'].get('expiration_date'), ['base.group_user']) - IrParamSudo.set_param('database.expiration_reason', result['enterprise_info'].get('expiration_reason', 'trial'), ['base.group_system']) - IrParamSudo.set_param('database.enterprise_code', result['enterprise_info'].get('enterprise_code'), ['base.group_user']) + set_param = self.env['ir.config_parameter'].sudo().set_param + set_param('database.expiration_date', result['enterprise_info'].get('expiration_date')) + set_param('database.expiration_reason', result['enterprise_info'].get('expiration_reason', 'trial')) + set_param('database.enterprise_code', result['enterprise_info'].get('enterprise_code')) except Exception: if cron_mode: diff --git a/addons/mass_mailing/models/mail_mail.py b/addons/mass_mailing/models/mail_mail.py index e76c114c3c8..8dae482529f 100644 --- a/addons/mass_mailing/models/mail_mail.py +++ b/addons/mass_mailing/models/mail_mail.py @@ -29,7 +29,7 @@ class MailMail(models.Model): return mail def _get_tracking_url(self, partner=None): - base_url = self.env['ir.config_parameter'].get_param('web.base.url') + base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url') track_url = urlparse.urljoin( base_url, 'mail/track/%(mail_id)s/blank.gif?%(params)s' % { 'mail_id': self.id, @@ -39,7 +39,7 @@ class MailMail(models.Model): return '' % track_url def _get_unsubscribe_url(self, email_to): - base_url = self.env['ir.config_parameter'].get_param('web.base.url') + base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url') url = urlparse.urljoin( base_url, 'mail/mailing/%(mailing_id)s/unsubscribe?%(params)s' % { 'mailing_id': self.mailing_id.id, @@ -75,7 +75,7 @@ class MailMail(models.Model): body = body.replace(href, new_href) # prepend tag for images using absolute urls - domain = self.env["ir.config_parameter"].get_param("web.base.url") + domain = self.env["ir.config_parameter"].sudo().get_param("web.base.url") base = "" % domain body = tools.append_content_to_html(base, body, plaintext=False, container_tag='div') # resolve relative image url to absolute for outlook.com @@ -95,7 +95,7 @@ class MailMail(models.Model): def send_get_email_dict(self, partner=None): # TDE: temporary addition (mail was parameter) due to semi-new-API res = super(MailMail, self).send_get_email_dict(partner) - base_url = self.env['ir.config_parameter'].get_param('web.base.url') + base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url') if self.mailing_id and res.get('body') and res.get('email_to'): emails = tools.email_split(res.get('email_to')[0]) email_to = emails and emails[0] or False diff --git a/addons/payment_adyen/models/payment.py b/addons/payment_adyen/models/payment.py index 75faabeaba4..b54adc58a9c 100644 --- a/addons/payment_adyen/models/payment.py +++ b/addons/payment_adyen/models/payment.py @@ -109,7 +109,7 @@ class AcquirerAdyen(models.Model): @api.multi def adyen_form_generate_values(self, values): - base_url = self.env['ir.config_parameter'].get_param('web.base.url') + base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url') # tmp import datetime from dateutil import relativedelta diff --git a/addons/payment_authorize/controllers/main.py b/addons/payment_authorize/controllers/main.py index 5fc8ba87a69..d88a74554b9 100644 --- a/addons/payment_authorize/controllers/main.py +++ b/addons/payment_authorize/controllers/main.py @@ -24,7 +24,7 @@ class AuthorizeController(http.Controller): if post: request.env['payment.transaction'].sudo().form_feedback(post, 'authorize') return_url = post.pop('return_url', '/') - base_url = request.env['ir.config_parameter'].get_param('web.base.url') + base_url = request.env['ir.config_parameter'].sudo().get_param('web.base.url') # Authorize.Net is expecting a response to the POST sent by their server. # This response is in the form of a URL that Authorize.Net will pass on to the # client's browser to redirect them to the desired location need javascript. diff --git a/addons/payment_buckaroo/models/payment.py b/addons/payment_buckaroo/models/payment.py index ed633aa92ad..05e0c314921 100644 --- a/addons/payment_buckaroo/models/payment.py +++ b/addons/payment_buckaroo/models/payment.py @@ -85,7 +85,7 @@ class AcquirerBuckaroo(models.Model): @api.multi def buckaroo_form_generate_values(self, values): - base_url = self.env['ir.config_parameter'].get_param('web.base.url') + base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url') buckaroo_tx_values = dict(values) buckaroo_tx_values.update({ 'Brq_websitekey': self.brq_websitekey, diff --git a/addons/payment_ogone/models/payment.py b/addons/payment_ogone/models/payment.py index 030c2173b8a..2315091f10a 100644 --- a/addons/payment_ogone/models/payment.py +++ b/addons/payment_ogone/models/payment.py @@ -150,7 +150,7 @@ class PaymentAcquirerOgone(models.Model): return shasign def ogone_form_generate_values(self, values): - base_url = self.env['ir.config_parameter'].get_param('web.base.url') + base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url') ogone_tx_values = dict(values) temp_ogone_tx_values = { 'PSPID': self.ogone_pspid, diff --git a/addons/payment_paypal/models/payment.py b/addons/payment_paypal/models/payment.py index 10d900ffb87..6aaff94a631 100644 --- a/addons/payment_paypal/models/payment.py +++ b/addons/payment_paypal/models/payment.py @@ -87,7 +87,7 @@ class AcquirerPaypal(models.Model): @api.multi def paypal_form_generate_values(self, values): - base_url = self.env['ir.config_parameter'].get_param('web.base.url') + base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url') paypal_tx_values = dict(values) paypal_tx_values.update({ diff --git a/addons/payment_payumoney/models/payment.py b/addons/payment_payumoney/models/payment.py index 0a1d3d6b943..8f44b1233cb 100644 --- a/addons/payment_payumoney/models/payment.py +++ b/addons/payment_payumoney/models/payment.py @@ -54,7 +54,7 @@ class PaymentAcquirerPayumoney(models.Model): @api.multi def payumoney_form_generate_values(self, values): self.ensure_one() - base_url = self.env['ir.config_parameter'].get_param('web.base.url') + base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url') payumoney_values = dict(values, key=self.payumoney_merchant_key, txnid=values['reference'], diff --git a/addons/payment_sips/models/payment.py b/addons/payment_sips/models/payment.py index f3520db9665..e9cd4d40e6b 100644 --- a/addons/payment_sips/models/payment.py +++ b/addons/payment_sips/models/payment.py @@ -69,7 +69,7 @@ class AcquirerSips(models.Model): @api.multi def sips_form_generate_values(self, values): self.ensure_one() - base_url = self.env['ir.config_parameter'].get_param('web.base.url') + base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url') currency = self.env['res.currency'].sudo().browse(values['currency_id']) currency_code = CURRENCY_CODES.get(currency.name, False) if not currency_code: diff --git a/addons/rating/controllers/main.py b/addons/rating/controllers/main.py index 70259d6a74d..48278b735a1 100644 --- a/addons/rating/controllers/main.py +++ b/addons/rating/controllers/main.py @@ -40,6 +40,6 @@ class Rating(http.Controller): return werkzeug.utils.redirect('/web#model=%s&id=%s&view_type=form' % (record_sudo._name, record_sudo.id)) lang = rating.partner_id.lang or 'en_US' return request.env['ir.ui.view'].with_context(lang=lang).render_template('rating.rating_external_page_view', { - 'web_base_url': request.env['ir.config_parameter'].get_param('web.base.url'), + 'web_base_url': request.env['ir.config_parameter'].sudo().get_param('web.base.url'), 'rating': rating, }) diff --git a/addons/report/models/ir_http.py b/addons/report/models/ir_http.py index 58c7e529edc..61657a681d7 100644 --- a/addons/report/models/ir_http.py +++ b/addons/report/models/ir_http.py @@ -9,5 +9,5 @@ class IrHttp(models.AbstractModel): def session_info(self): res = super(IrHttp, self).session_info() - res['web.base.url'] = self.env['ir.config_parameter'].get_param('web.base.url', default='') + res['web.base.url'] = self.env['ir.config_parameter'].sudo().get_param('web.base.url', default='') return res diff --git a/addons/report/models/report.py b/addons/report/models/report.py index cf43c8b1203..785240a2670 100644 --- a/addons/report/models/report.py +++ b/addons/report/models/report.py @@ -115,7 +115,7 @@ class Report(models.Model): user=user, res_company=user.company_id, website=website, - web_base_url=self.env['ir.config_parameter'].get_param('web.base.url', default='') + web_base_url=self.env['ir.config_parameter'].sudo().get_param('web.base.url', default='') ) return view_obj.render_template(template, values) diff --git a/addons/survey/models/survey.py b/addons/survey/models/survey.py index 2537491d959..99ce35e02a3 100644 --- a/addons/survey/models/survey.py +++ b/addons/survey/models/survey.py @@ -104,7 +104,8 @@ class Survey(models.Model): def _compute_survey_url(self): """ Computes a public URL for the survey """ - base_url = '/' if self.env.context.get('relative_url') else self.env['ir.config_parameter'].get_param('web.base.url') + base_url = '/' if self.env.context.get('relative_url') else \ + self.env['ir.config_parameter'].sudo().get_param('web.base.url') for survey in self: survey.public_url = urljoin(base_url, "survey/start/%s" % (slug(survey))) survey.print_url = urljoin(base_url, "survey/print/%s" % (slug(survey))) diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index b1d5c732a13..930a8233eb5 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -18,6 +18,7 @@ import os import re import sys import time +import werkzeug import werkzeug.utils import werkzeug.wrappers import zlib @@ -777,6 +778,17 @@ class Session(http.Controller): request.session.check_security() return None + @http.route('/web/session/account', type='json', auth="user") + def account(self): + ICP = request.env['ir.config_parameter'].sudo() + params = { + 'response_type': 'token', + 'client_id': ICP.get_param('database.uuid') or '', + 'state': json.dumps({'d': request.db, 'u': ICP.get_param('web.base.url')}), + 'scope': 'userinfo', + } + return 'https://accounts.odoo.com/oauth2/auth?' + werkzeug.url_encode(params) + @http.route('/web/session/destroy', type='json', auth="user") def destroy(self): request.session.logout() diff --git a/addons/web/static/src/js/widgets/user_menu.js b/addons/web/static/src/js/widgets/user_menu.js index 3c65ab3ac49..d1cd0eb842b 100644 --- a/addons/web/static/src/js/widgets/user_menu.js +++ b/addons/web/static/src/js/widgets/user_menu.js @@ -58,21 +58,11 @@ var UserMenu = Widget.extend({ }); }, on_menu_account: function() { + var self = this; this.trigger_up('clear_uncommitted_changes', { callback: function() { - var P = new Model('ir.config_parameter'); - P.call('get_param', ['database.uuid']).then(function(dbuuid) { - var state = { - 'd': session.db, - 'u': window.location.protocol + '//' + window.location.host, - }; - var params = { - response_type: 'token', - client_id: dbuuid || '', - state: JSON.stringify(state), - scope: 'userinfo', - }; - framework.redirect('https://accounts.odoo.com/oauth2/auth?'+$.param(params)); + self.rpc('/web/session/account').then(function(url) { + framework.redirect(url); }).fail(function(result, ev){ ev.preventDefault(); framework.redirect('https://accounts.odoo.com/account'); diff --git a/addons/website/models/ir_actions.py b/addons/website/models/ir_actions.py index 7d5c831a9fd..176187ea4e0 100644 --- a/addons/website/models/ir_actions.py +++ b/addons/website/models/ir_actions.py @@ -28,7 +28,7 @@ class ServerAction(models.Model): action.xml_id = res.get(action.id) def _compute_website_url(self, website_path, xml_id): - base_url = self.env['ir.config_parameter'].get_param('web.base.url') + base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url') link = website_path or xml_id or (self.id and '%d' % self.id) or '' if base_url and link: path = '%s/%s' % ('/website/action', link) diff --git a/addons/website/models/res_config.py b/addons/website/models/res_config.py index 2716f80c324..1c7a75646f7 100644 --- a/addons/website/models/res_config.py +++ b/addons/website/models/res_config.py @@ -59,8 +59,7 @@ class WebsiteConfigSettings(models.TransientModel): return dict(google_maps_api_key=google_maps_api_key) def set_google_maps_api_key(self): - self.env['ir.config_parameter'].set_param( - 'google_maps_api_key', (self.google_maps_api_key or '').strip(), groups=['base.group_system']) + self.env['ir.config_parameter'].set_param('google_maps_api_key', (self.google_maps_api_key or '').strip()) @api.depends('language_ids') def _compute_language_count(self): diff --git a/addons/website_blog/controllers/main.py b/addons/website_blog/controllers/main.py index f6dbc4d9a39..4f36967ba76 100644 --- a/addons/website_blog/controllers/main.py +++ b/addons/website_blog/controllers/main.py @@ -172,7 +172,7 @@ class WebsiteBlog(http.Controller): def blog_feed(self, blog, limit='15'): v = {} v['blog'] = blog - v['base_url'] = request.env['ir.config_parameter'].get_param('web.base.url') + v['base_url'] = request.env['ir.config_parameter'].sudo().get_param('web.base.url') v['posts'] = request.env['blog.post'].search([('blog_id','=', blog.id)], limit=min(int(limit), 50)) r = request.render("website_blog.blog_feed", v, headers=[('Content-Type', 'application/atom+xml')]) return r diff --git a/addons/website_crm_partner_assign/wizard/crm_forward_to_partner.py b/addons/website_crm_partner_assign/wizard/crm_forward_to_partner.py index d91dccfa67a..5aa8073192f 100644 --- a/addons/website_crm_partner_assign/wizard/crm_forward_to_partner.py +++ b/addons/website_crm_partner_assign/wizard/crm_forward_to_partner.py @@ -107,14 +107,14 @@ class CrmLeadForwardToPartner(models.TransientModel): action = type == 'opportunity' and 'action_portal_opportunities' or 'action_portal_leads' action_ref = self.env.ref('website_crm_partner_assign.%s' % (action,), False) portal_link = "%s/?db=%s#id=%s&action=%s&view_type=form" % ( - self.env['ir.config_parameter'].get_param('web.base.url'), + self.env['ir.config_parameter'].sudo().get_param('web.base.url'), self.env.cr.dbname, lead_id, action_ref and action_ref.id or False) return portal_link def get_portal_url(self): - portal_link = "%s/?db=%s" % (self.env['ir.config_parameter'].get_param('web.base.url'), self.env.cr.dbname) + portal_link = "%s/?db=%s" % (self.env['ir.config_parameter'].sudo().get_param('web.base.url'), self.env.cr.dbname) return portal_link forward_type = fields.Selection([ diff --git a/addons/website_forum/data/forum_data.xml b/addons/website_forum/data/forum_data.xml index eff8db88b14..b4a2a56ceba 100644 --- a/addons/website_forum/data/forum_data.xml +++ b/addons/website_forum/data/forum_data.xml @@ -13,7 +13,7 @@ - + diff --git a/addons/website_forum/models/forum.py b/addons/website_forum/models/forum.py index c286bfcdfb8..613195c7d25 100644 --- a/addons/website_forum/models/forum.py +++ b/addons/website_forum/models/forum.py @@ -33,7 +33,7 @@ class Forum(models.Model): TDE TODO: move me somewhere else, auto_init ? """ forum_uuids = self.env['ir.config_parameter'].search([('key', '=', 'website_forum.uuid')]) if not forum_uuids: - forum_uuids.set_param('website_forum.uuid', str(uuid.uuid4()), ['base.group_system']) + forum_uuids.set_param('website_forum.uuid', str(uuid.uuid4())) @api.model def _get_default_faq(self): diff --git a/addons/website_forum/models/res_users.py b/addons/website_forum/models/res_users.py index e07ca40d51d..499fccaba8f 100644 --- a/addons/website_forum/models/res_users.py +++ b/addons/website_forum/models/res_users.py @@ -84,7 +84,7 @@ class Users(models.Model): 'email': self.email} if forum_id: params['forum_id'] = forum_id - base_url = self.env['ir.config_parameter'].get_param('web.base.url') + base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url') token_url = base_url + '/forum/validate_email?%s' % urlencode(params) activation_template.sudo().with_context(token_url=token_url).send_mail(self.id, force_send=True) return True diff --git a/addons/website_hr_recruitment/models/hr_recruitment.py b/addons/website_hr_recruitment/models/hr_recruitment.py index 1a0960a444e..662bf0b4f48 100644 --- a/addons/website_hr_recruitment/models/hr_recruitment.py +++ b/addons/website_hr_recruitment/models/hr_recruitment.py @@ -17,7 +17,7 @@ class RecruitmentSource(models.Model): @api.one @api.depends('source_id', 'source_id.name', 'job_id') def _compute_url(self): - base_url = self.env['ir.config_parameter'].get_param('web.base.url') + base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url') for source in self: source.url = urljoin(base_url, "%s?%s" % (source.job_id.website_url, url_encode({ diff --git a/addons/website_mail_channel/models/mail_channel.py b/addons/website_mail_channel/models/mail_channel.py index 57c5b22a311..924d4ea25ea 100644 --- a/addons/website_mail_channel/models/mail_channel.py +++ b/addons/website_mail_channel/models/mail_channel.py @@ -17,7 +17,7 @@ class MailGroup(models.Model): def message_get_email_values(self, notif_mail=None): self.ensure_one() res = super(MailGroup, self).message_get_email_values(notif_mail=notif_mail) - base_url = self.env['ir.config_parameter'].get_param('web.base.url') + base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url') headers = {} if res.get('headers'): try: @@ -34,7 +34,7 @@ class MailGroup(models.Model): @api.multi def _send_confirmation_email(self, partner_ids, unsubscribe=False): - base_url = self.env['ir.config_parameter'].get_param('web.base.url') + base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url') route = "/groups/%(action)s/%(channel)s/%(partner)s/%(token)s" if unsubscribe: template = self.env.ref('website_mail_channel.mail_template_list_unsubscribe') diff --git a/addons/website_mail_channel/models/mail_mail.py b/addons/website_mail_channel/models/mail_mail.py index e9ff236540c..4257c828b66 100644 --- a/addons/website_mail_channel/models/mail_mail.py +++ b/addons/website_mail_channel/models/mail_mail.py @@ -15,7 +15,7 @@ class MailMail(models.Model): if self.model == 'mail.channel' and self.res_id: # no super() call on purpose, no private links that could be quoted! channel = self.env['mail.channel'].browse(self.res_id) - base_url = self.env['ir.config_parameter'].get_param('web.base.url') + base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url') vals = { 'maillist': _('Mailing-List'), 'post_to': _('Post to'), diff --git a/addons/website_slides/controllers/main.py b/addons/website_slides/controllers/main.py index ed9b374c70c..4b2cee0b411 100644 --- a/addons/website_slides/controllers/main.py +++ b/addons/website_slides/controllers/main.py @@ -333,7 +333,7 @@ class WebsiteSlides(http.Controller): # determine if it is embedded from external web page referrer_url = request.httprequest.headers.get('Referer', '') - base_url = request.env['ir.config_parameter'].get_param('web.base.url') + base_url = request.env['ir.config_parameter'].sudo().get_param('web.base.url') is_embedded = referrer_url and not bool(base_url in referrer_url) or False # try accessing slide, and display to corresponding template try: diff --git a/addons/website_slides/data/website_slides_data.xml b/addons/website_slides/data/website_slides_data.xml index 31e8ebf2f9f..c559e07d10d 100644 --- a/addons/website_slides/data/website_slides_data.xml +++ b/addons/website_slides/data/website_slides_data.xml @@ -5,7 +5,6 @@ website_slides.google_app_key AIzaSyDOWlmDW-7DbLmOR9ZsT5AOEXf4n6TFwQA - diff --git a/addons/website_slides/models/slides.py b/addons/website_slides/models/slides.py index e31f9c01415..247094d605f 100644 --- a/addons/website_slides/models/slides.py +++ b/addons/website_slides/models/slides.py @@ -146,7 +146,7 @@ class Channel(models.Model): @api.depends('name') def _compute_website_url(self): super(Channel, self)._compute_website_url() - base_url = self.env['ir.config_parameter'].get_param('web.base.url') + base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url') for channel in self: if channel.id: # avoid to perform a slug on a not yet saved record in case of an onchange. channel.website_url = '%s/slides/%s' % (base_url, slug(channel)) @@ -347,7 +347,7 @@ class Slide(models.Model): embed_code = fields.Text('Embed Code', readonly=True, compute='_get_embed_code') def _get_embed_code(self): - base_url = self.env['ir.config_parameter'].get_param('web.base.url') + base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url') for record in self: if record.datas and (not record.document_id or record.slide_type in ['document', 'presentation']): record.embed_code = '' % (base_url, record.id, 315, 420) @@ -365,7 +365,7 @@ class Slide(models.Model): @api.depends('name') def _compute_website_url(self): super(Slide, self)._compute_website_url() - base_url = self.env['ir.config_parameter'].get_param('web.base.url') + base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url') for slide in self: if slide.id: # avoid to perform a slug on a not yet saved record in case of an onchange. # link_tracker is not in dependencies, so use it to shorten url only if installed. @@ -473,7 +473,7 @@ class Slide(models.Model): yield record def _post_publication(self): - base_url = self.env['ir.config_parameter'].get_param('web.base.url') + base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url') for slide in self.filtered(lambda slide: slide.website_published and slide.channel_id.publish_template_id): publish_template = slide.channel_id.publish_template_id html_body = publish_template.with_context({'base_url': base_url}).render_template(publish_template.body_html, 'slide.slide', slide.id) @@ -486,7 +486,7 @@ class Slide(models.Model): @api.one def send_share_email(self, email): - base_url = self.env['ir.config_parameter'].get_param('web.base.url') + base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url') return self.channel_id.share_template_id.with_context({'email': email, 'base_url': base_url}).send_mail(self.id) # -------------------------------------------------- diff --git a/odoo/addons/base/__init__.py b/odoo/addons/base/__init__.py index ee62dc5ce3d..2defb05a2a7 100644 --- a/odoo/addons/base/__init__.py +++ b/odoo/addons/base/__init__.py @@ -10,11 +10,6 @@ import tests def post_init(cr, registry): """Rewrite ICP's to force groups""" from odoo import api, SUPERUSER_ID - from odoo.addons.base.ir.ir_config_parameter import _default_parameters env = api.Environment(cr, SUPERUSER_ID, {}) - ICP = env['ir.config_parameter'] - for key, func in _default_parameters.iteritems(): - val = ICP.get_param(key) - _, groups = func() - ICP.set_param(key, val, groups) + env['ir.config_parameter'].init(force=True) diff --git a/odoo/addons/base/ir/ir_config_parameter.py b/odoo/addons/base/ir/ir_config_parameter.py index bca68a4638b..cbb44ca6457 100644 --- a/odoo/addons/base/ir/ir_config_parameter.py +++ b/odoo/addons/base/ir/ir_config_parameter.py @@ -16,10 +16,10 @@ _logger = logging.getLogger(__name__) A dictionary holding some configuration parameters to be initialized when the database is created. """ _default_parameters = { - "database.secret": lambda: (str(uuid.uuid4()), ['base.group_erp_manager']), - "database.uuid": lambda: (str(uuid.uuid1()), []), - "database.create_date": lambda: (fields.Datetime.now(), ['base.group_user']), - "web.base.url": lambda: ("http://localhost:%s" % config.get('xmlrpc_port'), []), + "database.secret": lambda: str(uuid.uuid4()), + "database.uuid": lambda: str(uuid.uuid1()), + "database.create_date": fields.Datetime.now, + "web.base.url": lambda: "http://localhost:%s" % config.get('xmlrpc_port'), } @@ -30,7 +30,6 @@ class IrConfigParameter(models.Model): key = fields.Char(required=True, index=True) value = fields.Text(required=True) - group_ids = fields.Many2many('res.groups', 'ir_config_parameter_groups_rel', 'icp_id', 'group_id', string='Groups') _sql_constraints = [ ('key_uniq', 'unique (key)', 'Key must be unique.') @@ -47,8 +46,7 @@ class IrConfigParameter(models.Model): # force=True skips search and always performs the 'if' body (because ids=False) params = self.sudo().search([('key', '=', key)]) if force or not params: - value, groups = func() - params.set_param(key, value, groups=groups) + params.set_param(key, func()) @api.model def get_param(self, key, default=False): @@ -68,43 +66,33 @@ class IrConfigParameter(models.Model): return params[0]['value'] if params else None @api.model - def set_param(self, key, value, groups=()): + def set_param(self, key, value): """Sets the value of a parameter. :param string key: The key of the parameter value to set. :param string value: The value to set. - :param list of string groups: List of group (xml_id allowed) to read this key. :return: the previous value of the parameter or False if it did not exist. :rtype: string """ - self._get_param.clear_cache(self) param = self.search([('key', '=', key)]) - - gids = [] - for group_xml in groups: - group = self.env.ref(group_xml, raise_if_not_found=False) - if group: - gids.append((4, group.id)) - else: - _logger.warning('Potential Security Issue: Group [%s] is not found.' % group_xml) - - vals = {'value': value} - if gids: - vals.update(group_ids=gids) if param: old = param.value if value is not False and value is not None: - param.write(vals) + param.write({'value': value}) else: param.unlink() return old else: - vals.update(key=key) if value is not False and value is not None: - self.create(vals) + self.create({'key': key, 'value': value}) return False + @api.model + def create(self, vals): + self.clear_caches() + return super(IrConfigParameter, self).create(vals) + @api.multi def write(self, vals): self.clear_caches() diff --git a/odoo/addons/base/ir/ir_config_parameter_view.xml b/odoo/addons/base/ir/ir_config_parameter_view.xml index 555c7b94b1d..6480f989a53 100644 --- a/odoo/addons/base/ir/ir_config_parameter_view.xml +++ b/odoo/addons/base/ir/ir_config_parameter_view.xml @@ -15,7 +15,6 @@ - @@ -27,7 +26,6 @@ - diff --git a/odoo/addons/base/security/base_security.xml b/odoo/addons/base/security/base_security.xml index 538892d9ba9..ab4191de93a 100644 --- a/odoo/addons/base/security/base_security.xml +++ b/odoo/addons/base/security/base_security.xml @@ -127,16 +127,6 @@ ['|','|',('company_id.child_ids','child_of',[user.company_id.id]),('company_id','child_of',[user.company_id.id]),('company_id','=',False)] - - ICP read rule - - ['|', ('group_ids','in',user.groups_id.ids), ('group_ids','=',False)] - - - - - - multi-company currency rate rule diff --git a/odoo/addons/base/security/ir.model.access.csv b/odoo/addons/base/security/ir.model.access.csv index 3bf72552f29..cf2affdcd3a 100644 --- a/odoo/addons/base/security/ir.model.access.csv +++ b/odoo/addons/base/security/ir.model.access.csv @@ -88,7 +88,6 @@ "access_res_bank_group_partner_manager","res_bank_group_partner_manager","model_res_bank","group_partner_manager",1,1,1,1 "access_res_bank_user","res_bank user","model_res_bank","group_user",1,0,0,0 "access_ir_filter all","ir_filters all","model_ir_filters",,1,1,1,1 -"access_ir_config_parameter","ir_config_parameter","model_ir_config_parameter",,1,0,0,0 "access_ir_config_parameter_system","ir_config_parameter_system","model_ir_config_parameter","group_system",1,1,1,1 "access_ir_mail_server","ir_mail_server","model_ir_mail_server","group_system",1,1,1,1 "access_ir_actions_client","ir_actions_client all","model_ir_actions_client",,1,0,0,0