server-tools/letsencrypt/migrations/11.0.2.0.0/post-migrate.py

43 lines
1.4 KiB
Python

# Copyright 2018 Therp BV <https://therp.nl>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from odoo import api, SUPERUSER_ID
def migrate_altnames(env):
config = env["ir.config_parameter"]
existing = config.search([("key", "=like", "letsencrypt.altname.%")])
if not existing:
# We may be migrating from 10.0.2.0.0, in which case
# letsencrypt.altnames already exists and shouldn't be clobbered.
return
new_domains = "\n".join(existing.mapped("value"))
config.set_param("letsencrypt.altnames", new_domains)
existing.unlink()
def migrate_cron(env):
# Any interval that was appropriate for the old version is inappropriate
# for the new one, so it's ok to clobber it.
# But tweaking it afterwards is fine, so noupdate="1" still makes sense.
jobs = (
env["ir.cron"]
.with_context(active_test=False)
.search(
[
("ir_actions_server_id.model_id.model", "=", "letsencrypt"),
("ir_actions_server_id.code", "=", "model.cron()"),
]
)
)
if not jobs:
# ir.cron._try_lock doesn't handle empty recordsets well
return
jobs.write({"interval_type": "days", "interval_number": "1"})
jobs.mapped("ir_actions_server_id").write({"code": "model._cron()"})
def migrate(cr, version):
env = api.Environment(cr, SUPERUSER_ID, {})
migrate_altnames(env)
migrate_cron(env)