Merge pull request #24432 from blaggacao/chore/cleanup-frappe-connect-2

chore: cleanup frappe connect II/II
This commit is contained in:
Akhil Narang 2024-02-02 16:53:19 +05:30 committed by GitHub
commit f19c25ec42
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
12 changed files with 46 additions and 54 deletions

View file

@ -305,10 +305,6 @@ def init(site: str, sites_path: str = ".", new_site: bool = False, force=False)
local.initialised = True
# Set the user as database name if not set in config
if local.conf and local.conf.db_name is not None and local.conf.db_user is None:
local.conf.db_user = local.conf.db_name
def connect(
site: str | None = None, db_name: str | None = None, set_admin_as_user: bool = True
@ -316,7 +312,7 @@ def connect(
"""Connect to site database instance.
:param site: (Deprecated) If site is given, calls `frappe.init`.
:param db_name: Optional. Will use from `site_config.json`.
:param db_name: (Deprecated) Optional. Will use from `site_config.json`.
:param set_admin_as_user: Set Administrator as current user.
"""
from frappe.database import get_db
@ -329,13 +325,24 @@ def connect(
"Instead, explicitly invoke frappe.init(site) prior to calling frappe.connect(), if initializing the site is necessary."
)
init(site)
if db_name:
from frappe.utils.deprecations import deprecation_warning
deprecation_warning(
"Calling frappe.connect with the db_name argument is deprecated and will be removed in next major version. "
"Instead, explicitly invoke frappe.init(site) with the right config prior to calling frappe.connect(), if necessary."
)
assert db_name or local.conf.db_user, "site must be fully initialized, db_user missing"
assert db_name or local.conf.db_name, "site must be fully initialized, db_name missing"
assert local.conf.db_password, "site must be fully initialized, db_password missing"
local.db = get_db(
host=local.conf.db_host,
port=local.conf.db_port,
user=local.conf.db_user or db_name or local.conf.db_name,
user=local.conf.db_user or db_name,
password=local.conf.db_password,
cur_db_name=db_name or local.conf.db_name,
cur_db_name=local.conf.db_name or db_name,
)
if set_admin_as_user:
set_user("Administrator")
@ -423,6 +430,11 @@ def get_site_config(sites_path: str | None = None, site_path: str | None = None)
os.environ.get("FRAPPE_DB_PORT") or config.get("db_port") or db_default_ports(config["db_type"])
)
# Set the user as database name if not set in config
config["db_user"] = (
os.environ.get("FRAPPE_DB_USER") or config.get("db_user") or config.get("db_name")
)
return config

View file

@ -772,12 +772,11 @@ def run_tests(
click.secho(f"bench --site {site} set-config allow_tests true", fg="green")
return
frappe.init(site=site)
frappe.flags.skip_before_tests = skip_before_tests
frappe.flags.skip_test_records = skip_test_records
ret = frappe.test_runner.main(
site,
app,
module,
doctype,

View file

@ -23,17 +23,17 @@ def setup_database(force, verbose=None, no_mariadb_socket=False):
)
def bootstrap_database(db_name, verbose=None, source_sql=None):
def bootstrap_database(verbose=None, source_sql=None):
import frappe
if frappe.conf.db_type == "postgres":
import frappe.database.postgres.setup_db
return frappe.database.postgres.setup_db.bootstrap_database(db_name, verbose, source_sql)
return frappe.database.postgres.setup_db.bootstrap_database(verbose, source_sql)
else:
import frappe.database.mariadb.setup_db
return frappe.database.mariadb.setup_db.bootstrap_database(db_name, verbose, source_sql)
return frappe.database.mariadb.setup_db.bootstrap_database(verbose, source_sql)
def drop_user_and_database(db_name, db_user):

View file

@ -67,17 +67,17 @@ def drop_user_and_database(
dbman.delete_user(db_user)
def bootstrap_database(db_name, verbose, source_sql=None):
def bootstrap_database(verbose, source_sql=None):
import sys
frappe.connect(db_name=db_name)
frappe.connect()
if not check_database_settings():
print("Database settings do not match expected values; stopping database setup.")
sys.exit(1)
import_db_from_sql(source_sql, verbose)
frappe.connect(db_name=db_name)
frappe.connect()
if "tabDefaultValue" not in frappe.db.get_tables(cached=False):
from click import secho

View file

@ -29,11 +29,12 @@ def setup_database():
root_conn.close()
def bootstrap_database(db_name, verbose, source_sql=None):
frappe.connect(db_name=db_name)
import_db_from_sql(source_sql, verbose)
frappe.connect(db_name=db_name)
def bootstrap_database(verbose, source_sql=None):
frappe.connect()
import_db_from_sql(source_sql, verbose)
frappe.connect()
if "tabDefaultValue" not in frappe.db.get_tables():
import sys

View file

@ -11,10 +11,3 @@ class TestForm(FrappeTestCase):
results = get_linked_docs("Role", "System Manager", linkinfo=get_linked_doctypes("Role"))
self.assertTrue("User" in results)
self.assertTrue("DocType" in results)
if __name__ == "__main__":
import unittest
frappe.connect()
unittest.main()

View file

@ -20,9 +20,10 @@ from frappe.utils.dashboard import sync_dashboards
from frappe.utils.synchronization import filelock
def _is_scheduler_enabled() -> bool:
def _is_scheduler_enabled(site) -> bool:
enable_scheduler = False
try:
frappe.init(site=site)
frappe.connect()
enable_scheduler = cint(frappe.db.get_single_value("System Settings", "enable_scheduler"))
except Exception:
@ -78,7 +79,7 @@ def _new_site(
try:
# enable scheduler post install?
enable_scheduler = _is_scheduler_enabled()
enable_scheduler = _is_scheduler_enabled(site)
except Exception:
enable_scheduler = False
@ -170,7 +171,6 @@ def install_db(
setup_database(force, verbose, no_mariadb_socket)
bootstrap_database(
db_name=frappe.conf.db_name,
verbose=verbose,
source_sql=source_sql,
)

View file

@ -41,9 +41,6 @@ def send_email(success, service_name, doctype, email_field, error_status=None):
def get_recipients(doctype, email_field):
if not frappe.db:
frappe.connect()
return split_emails(frappe.db.get_value(doctype, None, email_field))

View file

@ -38,6 +38,7 @@ def xmlrunner_wrapper(output):
def main(
site=None,
app=None,
module=None,
doctype=None,
@ -53,6 +54,10 @@ def main(
):
global unittest_runner
frappe.init(site=site)
if not frappe.db:
frappe.connect()
if doctype_list_path:
app, doctype_list_path = doctype_list_path.split(os.path.sep, 1)
with open(frappe.get_app_path(app, doctype_list_path)) as f:
@ -69,9 +74,6 @@ def main(
frappe.flags.print_messages = verbose
frappe.flags.in_test = True
if not frappe.db:
frappe.connect()
# workaround! since there is no separate test db
frappe.clear_cache()
scheduler_disabled_by_user = frappe.utils.scheduler.is_scheduler_disabled(verbose=False)
@ -342,9 +344,6 @@ def _add_test(app, path, filename, verbose, test_suite=None):
def make_test_records(doctype, verbose=0, force=False, commit=False):
if not frappe.db:
frappe.connect()
if frappe.flags.skip_test_records:
return

View file

@ -173,14 +173,18 @@ class BaseTestCommands(FrappeTestCase):
cmd_config = {
"test_site": TEST_SITE,
"admin_password": frappe.conf.admin_password,
"root_login": frappe.conf.root_login,
"root_password": frappe.conf.root_password,
"db_type": frappe.conf.db_type,
"db_root_username": frappe.conf.root_login,
"db_root_password": frappe.conf.root_password,
}
if not os.path.exists(os.path.join(TEST_SITE, "site_config.json")):
cls.execute(
"bench new-site {test_site} --admin-password {admin_password} --db-type" " {db_type}",
"bench new-site {test_site} "
"--admin-password {admin_password} "
"--db-root-username {db_root_username} "
"--db-root-password {db_root_password} "
"--db-type {db_type}",
cmd_config,
)

View file

@ -100,10 +100,3 @@ class TestFmtMoney(FrappeTestCase):
frappe.db.set_value("Currency", "JPY", "symbol_on_right", 1)
self.assertEqual(fmt_money(100.0, format="#,###.##", currency="JPY"), "100.00 ¥")
self.assertEqual(fmt_money(100.0, format="#,###.##", currency="USD"), "$ 100.00")
if __name__ == "__main__":
import unittest
frappe.connect()
unittest.main()

View file

@ -215,9 +215,6 @@ def get_translation_dict_from_file(path, lang, app, throw=False) -> dict[str, st
def get_user_translations(lang):
if not frappe.db:
frappe.connect()
def _read_from_db():
user_translations = {}
translations = frappe.get_all(
@ -977,9 +974,6 @@ def get_all_languages(with_language_name: bool = False) -> list:
def get_all_language_with_name():
return frappe.get_all("Language", ["language_code", "language_name"], {"enabled": 1})
if not frappe.db:
frappe.connect()
if with_language_name:
return frappe.cache.get_value("languages_with_name", get_all_language_with_name)
else: