odoo18/addons_extensions/onlyoffice_odoo/utils/config_utils.py

131 lines
4.0 KiB
Python

#
# (c) Copyright Ascensio System SIA 2024
#
import uuid
from datetime import date
from odoo.addons.onlyoffice_odoo.utils import config_constants
def get_base_or_odoo_url(env):
url = env["ir.config_parameter"].sudo().get_param(config_constants.DOC_SERVER_ODOO_URL)
return fix_url(url or env["ir.config_parameter"].sudo().get_param("web.base.url"))
def get_doc_server_public_url(env):
url = env["ir.config_parameter"].sudo().get_param(config_constants.DOC_SERVER_PUBLIC_URL)
if not url:
url = "http://documentserver/"
return fix_url(url)
def get_doc_server_inner_url(env):
url = env["ir.config_parameter"].sudo().get_param(config_constants.DOC_SERVER_INNER_URL)
return fix_url(url or get_doc_server_public_url(env))
def get_jwt_header(env):
header = env["ir.config_parameter"].sudo().get_param(config_constants.DOC_SERVER_JWT_HEADER)
if not header:
header = "Authorization"
return header
def get_jwt_secret(env):
return env["ir.config_parameter"].sudo().get_param(config_constants.DOC_SERVER_JWT_SECRET)
def get_internal_jwt_secret(env):
secret = env["ir.config_parameter"].sudo().get_param(config_constants.INTERNAL_JWT_SECRET)
if not secret:
secret = uuid.uuid4().hex
env["ir.config_parameter"].sudo().set_param(config_constants.INTERNAL_JWT_SECRET, secret)
env.cr.commit()
return secret
def get_demo(env):
return env["ir.config_parameter"].sudo().get_param(config_constants.DOC_SERVER_DEMO)
def get_demo_date(env):
return env["ir.config_parameter"].sudo().get_param(config_constants.DOC_SERVER_DEMO_DATE)
def get_same_tab(env):
return env["ir.config_parameter"].sudo().get_param(config_constants.SAME_TAB)
def get_certificate_verify_disabled(env):
return env["ir.config_parameter"].sudo().get_param(config_constants.DOC_SERVER_DISABLE_CERTIFICATE)
def set_doc_server_public_url(env, url):
if not url:
url = "http://documentserver/"
env["ir.config_parameter"].sudo().set_param(config_constants.DOC_SERVER_PUBLIC_URL, fix_url(url))
def set_doc_server_odoo_url(env, url):
env["ir.config_parameter"].sudo().set_param(config_constants.DOC_SERVER_ODOO_URL, fix_url(url))
def set_doc_server_inner_url(env, url):
env["ir.config_parameter"].sudo().set_param(config_constants.DOC_SERVER_INNER_URL, fix_url(url))
def set_jwt_header(env, header):
env["ir.config_parameter"].sudo().set_param(config_constants.DOC_SERVER_JWT_HEADER, header)
def set_jwt_secret(env, secret):
env["ir.config_parameter"].sudo().set_param(config_constants.DOC_SERVER_JWT_SECRET, secret)
def set_demo(env, param):
demo = get_demo(env)
demo_date = get_demo_date(env)
if not demo_date:
set_demo_date(env)
if param:
set_doc_server_public_url(env, "https://onlinedocs.docs.onlyoffice.com/")
set_doc_server_odoo_url(env, "")
set_doc_server_inner_url(env, "")
set_jwt_header(env, "AuthorizationJWT")
set_jwt_secret(env, "sn2puSUF7muF5Jas")
elif demo and not param:
set_doc_server_public_url(env, "http://documentserver/")
set_doc_server_odoo_url(env, "")
set_doc_server_inner_url(env, "")
set_jwt_header(env, "Authorization")
set_jwt_secret(env, "")
env["ir.config_parameter"].sudo().set_param(config_constants.DOC_SERVER_DEMO, param)
def set_demo_date(env):
demo_date = date.today()
env["ir.config_parameter"].sudo().set_param(config_constants.DOC_SERVER_DEMO_DATE, demo_date)
def set_same_tab(env, param):
env["ir.config_parameter"].sudo().set_param(config_constants.SAME_TAB, param)
def set_certificate_verify_disabled(env, param):
env["ir.config_parameter"].sudo().set_param(config_constants.DOC_SERVER_DISABLE_CERTIFICATE, param)
def fix_url(url):
if url:
return fix_end_slash(fix_proto(url))
def fix_proto(url):
return url if url.startswith("http") else ("http://" + url)
def fix_end_slash(url):
return url if url.endswith("/") else (url + "/")