event/models/res_config_settings.py

76 lines
3.7 KiB
Python
Raw Permalink Normal View History

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
import base64
import binascii
from odoo import _, api, exceptions, fields, models
class ResConfigSettings(models.TransientModel):
_inherit = 'res.config.settings'
def _default_use_google_maps_static_api(self):
api_key = self.env['ir.config_parameter'].sudo().get_param('google_maps.signed_static_api_key')
api_secret = self.env['ir.config_parameter'].sudo().get_param('google_maps.signed_static_api_secret')
return bool(api_key and api_secret)
google_maps_static_api_key = fields.Char("Google Maps API key", compute="_compute_maps_static_api_key",
readonly=False, store=True, config_parameter='google_maps.signed_static_api_key')
google_maps_static_api_secret = fields.Char("Google Maps API secret", compute="_compute_maps_static_api_secret",
readonly=False, store=True, config_parameter='google_maps.signed_static_api_secret')
module_event_sale = fields.Boolean("Tickets")
module_website_event_meet = fields.Boolean("Discussion Rooms")
module_website_event_track = fields.Boolean("Tracks and Agenda")
module_website_event_track_live = fields.Boolean("Live Mode")
module_website_event_track_quiz = fields.Boolean("Quiz on Tracks")
module_website_event_exhibitor = fields.Boolean("Advanced Sponsors")
use_event_barcode = fields.Boolean(string="Use Event Barcode", help="Enable or Disable Event Barcode functionality.", config_parameter='event.use_event_barcode')
barcode_nomenclature_id = fields.Many2one('barcode.nomenclature', related='company_id.nomenclature_id', readonly=False)
module_website_event_sale = fields.Boolean("Online Ticketing")
module_event_booth = fields.Boolean("Booth Management")
use_google_maps_static_api = fields.Boolean("Google Maps static API", default=_default_use_google_maps_static_api)
@api.depends('use_google_maps_static_api')
def _compute_maps_static_api_key(self):
"""Clear API key on disabling google maps."""
for config in self:
if not config.use_google_maps_static_api:
config.google_maps_static_api_key = ''
@api.depends('use_google_maps_static_api')
def _compute_maps_static_api_secret(self):
"""Clear API secret on disabling google maps."""
for config in self:
if not config.use_google_maps_static_api:
config.google_maps_static_api_secret = ''
@api.onchange('module_website_event_track')
def _onchange_module_website_event_track(self):
""" Reset sub-modules, otherwise you may have track to False but still
have track_live or track_quiz to True, meaning track will come back due
to dependencies of modules. """
for config in self:
if not config.module_website_event_track:
config.module_website_event_track_live = False
config.module_website_event_track_quiz = False
def _check_google_maps_static_api_secret(self):
for config in self:
if config.google_maps_static_api_secret:
try:
base64.urlsafe_b64decode(config.google_maps_static_api_secret)
except binascii.Error:
raise exceptions.UserError(_("Please enter a valid base64 secret"))
@api.model_create_multi
def create(self, vals_list):
configs = super().create(vals_list)
configs._check_google_maps_static_api_secret()
return configs
def write(self, vals):
configs = super().write(vals)
if vals.get('google_maps_static_api_secret'):
configs._check_google_maps_static_api_secret()
return configs