odoo_account_ebics/account_ebics/migrations/13.0.1.1/post-migration.py
2022-12-23 11:36:35 +01:00

84 lines
2.7 KiB
Python

# Copyright 2009-2020 Noviat.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
import os
from openupgradelib import openupgrade # pylint: disable=W7936
@openupgrade.migrate()
def migrate(env, version):
_ebics_config_upgrade(env, version)
_noupdate_changes(env, version)
def _ebics_config_upgrade(env, version):
env.cr.execute("SELECT * FROM ebics_config")
cfg_datas = env.cr.dictfetchall()
for cfg_data in cfg_datas:
cfg = env["ebics.config"].browse(cfg_data["id"])
journal = env["account.journal"].search(
[("bank_account_id", "=", cfg_data["bank_id"])]
)
keys_fn_old = cfg_data["ebics_keys"]
ebics_keys_root = os.path.dirname(keys_fn_old)
if os.path.isfile(keys_fn_old):
keys_fn = ebics_keys_root + "/" + cfg_data["ebics_user"] + "_keys"
os.rename(keys_fn_old, keys_fn)
state = cfg_data["state"] == "active" and "confirm" or "draft"
cfg.write(
{
"company_ids": [(6, 0, [cfg_data["company_id"]])],
"journal_ids": [(6, 0, journal.ids)],
"ebics_keys": ebics_keys_root,
"state": state,
}
)
user_vals = {
"ebics_config_id": cfg_data["id"],
"name": cfg_data["ebics_user"],
}
for fld in [
"signature_class",
"ebics_passphrase",
"ebics_ini_letter_fn",
"ebics_public_bank_keys_fn",
"ebics_key_x509",
"ebics_key_x509_dn_cn",
"ebics_key_x509_dn_o",
"ebics_key_x509_dn_ou",
"ebics_key_x509_dn_c",
"ebics_key_x509_dn_st",
"ebics_key_x509_dn_l",
"ebics_key_x509_dn_e",
"ebics_file_format_ids",
"state",
]:
if cfg_data.get(fld):
if fld == "ebics_file_format_ids":
user_vals[fld] = [(6, 0, cfg_data[fld])]
elif fld == "state" and cfg_data["state"] == "active":
user_vals["state"] = "active_keys"
else:
user_vals[fld] = cfg_data[fld]
ebics_userid = env["ebics.userid"].create(user_vals)
env.cr.execute(
"""
UPDATE ir_attachment
SET res_model = 'ebics.userid', res_id = %s
WHERE name in ('ebics_ini_letter', 'ebics_public_bank_keys');
"""
% ebics_userid.id
)
if len(cfg_datas) == 1:
env.cr.execute("UPDATE ebics_file SET ebics_userid_id = %s" % ebics_userid.id)
def _noupdate_changes(env, version):
openupgrade.load_data(
env.cr, "account_ebics", "migrations/13.0.1.1/noupdate_changes.xml"
)