def restore_database(files_base, site_config_path, site):
    # restore database
    database_file = files_base + '-database.sql.gz'
    decompress_db(database_file, site)
    config = get_config()

    # Set db_type if it exists in backup site_config.json
    set_key_in_site_config('db_type', site, site_config_path)
    # Set db_host if it exists in backup site_config.json
    set_key_in_site_config('db_host', site, site_config_path)
    # Set db_port if it exists in backup site_config.json
    set_key_in_site_config('db_port', site, site_config_path)

    # get updated site_config
    site_config = get_site_config(site)

    # if no db_type exists, default to mariadb
    db_type = site_config.get('db_type', 'mariadb')
    is_database_restored = False

    if db_type == 'mariadb':
        restore_mariadb(config=config,
                        site_config=site_config,
                        database_file=database_file)
        is_database_restored = True
    elif db_type == 'postgres':
        restore_postgres(config=config,
                         site_config=site_config,
                         database_file=database_file)
        is_database_restored = True

    if is_database_restored:
        # Set encryption_key if it exists in backup site_config.json
        set_key_in_site_config('encryption_key', site, site_config_path)
Beispiel #2
0
Datei: new.py Projekt: ektai/erp
def main():
    config = get_config()
    db_type = 'mariadb'
    db_port = config.get('db_port', 3306)
    db_host = config.get('db_host')
    site_name = os.environ.get("SITE_NAME", 'site1.localhost')
    db_root_username = os.environ.get("DB_ROOT_USER", 'root')
    mariadb_root_password = get_password("MYSQL_ROOT_PASSWORD", 'admin')
    postgres_root_password = get_password("POSTGRES_PASSWORD")
    db_root_password = mariadb_root_password

    if postgres_root_password:
        db_type = 'postgres'
        db_host = os.environ.get("POSTGRES_HOST")
        db_port = 5432
        db_root_password = postgres_root_password
        if not db_host:
            db_host = config.get('db_host')
            print('Environment variable POSTGRES_HOST not found.')
            print('Using db_host from common_site_config.json')

        sites_path = os.getcwd()
        common_site_config_path = os.path.join(sites_path,
                                               COMMON_SITE_CONFIG_FILE)
        update_site_config("root_login",
                           db_root_username,
                           validate=False,
                           site_config_path=common_site_config_path)
        update_site_config("root_password",
                           db_root_password,
                           validate=False,
                           site_config_path=common_site_config_path)

    force = True if os.environ.get("FORCE", None) else False
    install_apps = os.environ.get("INSTALL_APPS", None)
    install_apps = install_apps.split(',') if install_apps else []
    frappe.init(site_name, new_site=True)

    if semantic_version.Version(frappe.__version__).major > 11:
        _new_site(
            None,
            site_name,
            mariadb_root_username=db_root_username,
            mariadb_root_password=db_root_password,
            admin_password=get_password("ADMIN_PASSWORD", 'admin'),
            verbose=True,
            install_apps=install_apps,
            source_sql=None,
            force=force,
            db_type=db_type,
            reinstall=False,
            db_host=db_host,
            db_port=db_port,
        )
    else:
        _new_site(
            None,
            site_name,
            mariadb_root_username=db_root_username,
            mariadb_root_password=db_root_password,
            admin_password=get_password("ADMIN_PASSWORD", 'admin'),
            verbose=True,
            install_apps=install_apps,
            source_sql=None,
            force=force,
            reinstall=False,
        )

    if db_type == "mariadb":
        site_config = get_site_config(site_name)
        db_name = site_config.get('db_name')
        db_password = site_config.get('db_password')

        mysql_command = [
            "mysql", f"-h{db_host}", f"-u{db_root_username}",
            f"-p{mariadb_root_password}", "-e"
        ]

        # Drop User if exists
        command = mysql_command + [
            f"DROP USER IF EXISTS '{db_name}'; FLUSH PRIVILEGES;"
        ]
        run_command(command)

        # Grant permission to database and set password
        grant_privileges = "ALL PRIVILEGES"

        # for Amazon RDS
        if config.get(RDS_DB) or site_config.get(RDS_DB):
            grant_privileges = RDS_PRIVILEGES

        command = mysql_command + [
            f"\
            CREATE USER IF NOT EXISTS '{db_name}'@'%' IDENTIFIED BY '{db_password}'; \
            GRANT {grant_privileges} ON `{db_name}`.* TO '{db_name}'@'%'; \
            FLUSH PRIVILEGES;"
        ]
        run_command(command)

    if frappe.redis_server:
        frappe.redis_server.connection_pool.disconnect()

    exit(0)
Beispiel #3
0
                for i in range(len(values)):
                    value = values[i]
                    if "@value" in value:
                        text += value["@value"]
                    else:
                        text += value["@id"]
                    if i != len(values) - 1:
                        # 複数ある場合にはパイプでつなぐ
                        text += "|"
            row.append(unicodedata.normalize("NFKC", text))

        media_num = len(obj["o:media"])
        row.append(media_num)
        media_sum += media_num

    row1.append("# of media")
    row2.append(media_sum)

    df = pd.DataFrame(table)

    df.to_excel(output_path, index=False, header=False)
    df.to_csv(output_path.replace("xlsx", "csv"), index=False, header=False)
    # df.to_csv(output_path.replace("xlsx", "tsv"), index=False, header=False, sep='\t')


if __name__ == "__main__":
    args = parse_args()
    key = args.site_name
    site_obj = utils.get_site_config(key)
    excel_generator(site_obj)