perf: slimmer and faster before_tests
diff --git a/erpnext/setup/utils.py b/erpnext/setup/utils.py
index 6db1961..fbf899c 100644
--- a/erpnext/setup/utils.py
+++ b/erpnext/setup/utils.py
@@ -1,7 +1,6 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
-
import frappe
from frappe import _
from frappe.utils import add_days, flt, get_datetime_str, nowdate
@@ -15,8 +14,9 @@
frappe.clear_cache()
# complete setup if missing
from frappe.desk.page.setup_wizard.setup_wizard import setup_complete
- current_year = now_datetime().year
- if not frappe.get_list("Company"):
+
+ if not frappe.db.a_row_exists("Company"):
+ current_year = now_datetime().year
setup_complete({
"currency" :"USD",
"full_name" :"Test User",
@@ -34,13 +34,15 @@
"chart_of_accounts" : "Standard",
"domains" : ["Manufacturing"],
})
+ _enable_all_domains()
frappe.db.sql("delete from `tabLeave Allocation`")
frappe.db.sql("delete from `tabLeave Application`")
frappe.db.sql("delete from `tabSalary Slip`")
frappe.db.sql("delete from `tabItem Price`")
- enable_all_roles_and_domains()
+ _enable_all_roles_for_admin()
+
set_defaults_for_tests()
frappe.db.commit()
@@ -119,22 +121,36 @@
def enable_all_roles_and_domains():
""" enable all roles and domain for testing """
- # add all roles to users
- domains = frappe.get_all("Domain")
+ _enable_all_domains()
+ _enable_all_roles_for_admin()
+
+
+def _enable_all_domains():
+ domains = frappe.get_all("Domain", pluck="name")
if not domains:
return
+ frappe.get_single('Domain Settings').set_active_domains(domains)
+
+def _enable_all_roles_for_admin():
from frappe.desk.page.setup_wizard.setup_wizard import add_all_roles_to
- frappe.get_single('Domain Settings').set_active_domains(\
- [d.name for d in domains])
- add_all_roles_to('Administrator')
+
+ all_roles = set(frappe.db.get_values("Role", pluck="name"))
+ admin_roles = set(frappe.db.get_values("Has Role",
+ {"parent": "Administrator"}, fieldname="role", pluck="role"))
+
+ if all_roles.difference(admin_roles):
+ add_all_roles_to('Administrator')
+
def set_defaults_for_tests():
- selling_settings = frappe.get_single("Selling Settings")
- selling_settings.customer_group = get_root_of("Customer Group")
- selling_settings.territory = get_root_of("Territory")
- selling_settings.save()
-
+ defaults = {
+ "customer_group": get_root_of("Customer Group"),
+ "territory": get_root_of("Territory"),
+ }
+ frappe.db.set_single_value("Selling Settings", defaults)
+ for key, value in defaults.items():
+ frappe.db.set_default(key, value)
frappe.db.set_single_value("Stock Settings", "auto_insert_price_list_rate_if_missing", 0)