<reponame>girip11/frappe_docker
import os, frappe, compileall, re, json

from frappe.migrate import migrate
from frappe.utils import get_sites
from check_connection import get_config

def save_config(config):
    with open('common_site_config.json', 'w') as f:
        return json.dump(config, f, indent=1, sort_keys=True)

def set_maintenance_mode(enable=True):
    conf = get_config()

    if enable:
        conf.update({ "maintenance_mode": 1, "pause_scheduler": 1 })
        save_config(conf)

    if not enable:
        conf.update({ "maintenance_mode": 0, "pause_scheduler": 0 })
        save_config(conf)

def migrate_sites(maintenance_mode=False):
    installed_sites = ":".join(get_sites())
    sites = os.environ.get("SITES", installed_sites).split(":")
    if not maintenance_mode:
        maintenance_mode = True if os.environ.get("MAINTENANCE_MODE") else False

    if maintenance_mode:
        set_maintenance_mode(True)

    for site in sites:
        print('Migrating', site)
        frappe.init(site=site)
        frappe.connect()
        try:
            migrate()
        finally:
            frappe.destroy()

    if maintenance_mode:
        set_maintenance_mode(False)

def main():
    migrate_sites()
    exit(0)

if __name__ == "__main__":
    main()
