From 1e8ee9354a0eb35653fe5a1a1bc6b392c0071f23 Mon Sep 17 00:00:00 2001 From: Ankush Menat Date: Mon, 12 Jun 2023 19:20:52 +0530 Subject: [PATCH] fix(DX): Check Frappe and ERPNext major versions (#35651) --- erpnext/__init__.py | 2 +- erpnext/hooks.py | 5 ++++- erpnext/setup/install.py | 21 +++++++++++++++++++++ 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/erpnext/__init__.py b/erpnext/__init__.py index c9c9c9c6df6..3e418c48cf8 100644 --- a/erpnext/__init__.py +++ b/erpnext/__init__.py @@ -3,7 +3,7 @@ import inspect import frappe -__version__ = "14.0.0-dev" +__version__ = "15.0.0-dev" def get_default_company(user=None): diff --git a/erpnext/hooks.py b/erpnext/hooks.py index 77dbc8f9b34..c821fcf4e62 100644 --- a/erpnext/hooks.py +++ b/erpnext/hooks.py @@ -39,7 +39,10 @@ setup_wizard_requires = "assets/erpnext/js/setup_wizard.js" setup_wizard_stages = "erpnext.setup.setup_wizard.setup_wizard.get_setup_stages" setup_wizard_test = "erpnext.setup.setup_wizard.test_setup_wizard.run_setup_wizard_test" -before_install = "erpnext.setup.install.check_setup_wizard_not_completed" +before_install = [ + "erpnext.setup.install.check_setup_wizard_not_completed", + "erpnext.setup.install.check_frappe_version", +] after_install = "erpnext.setup.install.after_install" boot_session = "erpnext.startup.boot.boot_session" diff --git a/erpnext/setup/install.py b/erpnext/setup/install.py index 1d5428a40e8..74c1ee22c99 100644 --- a/erpnext/setup/install.py +++ b/erpnext/setup/install.py @@ -2,12 +2,14 @@ # License: GNU General Public License v3. See license.txt +import click import frappe from frappe import _ from frappe.custom.doctype.custom_field.custom_field import create_custom_fields from frappe.desk.page.setup_wizard.setup_wizard import add_all_roles_to from frappe.utils import cint +import erpnext from erpnext.setup.default_energy_point_rules import get_default_energy_point_rules from erpnext.setup.doctype.incoterm.incoterm import create_incoterms @@ -41,6 +43,25 @@ You can reinstall this site (after saving your data) using: bench --site [sitena frappe.throw(message) # nosemgrep +def check_frappe_version(): + def major_version(v: str) -> str: + return v.split(".")[0] + + frappe_version = major_version(frappe.__version__) + erpnext_version = major_version(erpnext.__version__) + + if frappe_version == erpnext_version: + return + + click.secho( + f"You're attempting to install ERPNext version {erpnext_version} with Frappe version {frappe_version}. " + "This is not supported and will result in broken install. Switch to correct branch before installing.", + fg="red", + ) + + raise SystemExit(1) + + def set_single_defaults(): for dt in ( "Accounts Settings",