76 lines
3.7 KiB
Python
76 lines
3.7 KiB
Python
# -*- 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
|