diff --git a/frappe/desk/page/setup_wizard/setup_wizard.js b/frappe/desk/page/setup_wizard/setup_wizard.js index 0534b9b2f90b..6ade115acc5f 100644 --- a/frappe/desk/page/setup_wizard/setup_wizard.js +++ b/frappe/desk/page/setup_wizard/setup_wizard.js @@ -418,10 +418,19 @@ frappe.setup.slides_settings = [ ], onload: function (slide) { + frappe.setup.utils.load_prefilled_data(slide, this.initialize_fields); + }, + + initialize_fields: function (slide) { + const setup_fields = function (slide) { + frappe.setup.utils.setup_region_fields(slide); + frappe.setup.utils.setup_language_field(slide); + }; + if (frappe.setup.data.regional_data) { this.setup_fields(slide); } else { - frappe.setup.utils.load_regional_data(slide, this.setup_fields); + frappe.setup.utils.load_regional_data(slide, setup_fields); } if (!slide.get_value("language")) { let session_language = @@ -440,11 +449,6 @@ frappe.setup.slides_settings = [ frappe.setup.utils.bind_region_events(slide); frappe.setup.utils.bind_language_events(slide); }, - - setup_fields: function (slide) { - frappe.setup.utils.setup_region_fields(slide); - frappe.setup.utils.setup_language_field(slide); - }, }, { // Profile slide @@ -472,6 +476,7 @@ frappe.setup.slides_settings = [ : __("Update Password"), fieldtype: "Password", length: 512, + depends_on: "eval:!frappe.boot.is_fc_site", }, ], @@ -489,7 +494,7 @@ frappe.setup.slides_settings = [ } else { slide.form.fields_dict.email.df.reqd = 1; slide.form.fields_dict.email.refresh(); - slide.form.fields_dict.password.df.reqd = 1; + if (!frappe.boot.is_fc_site) slide.form.fields_dict.password.df.reqd = 1; slide.form.fields_dict.password.refresh(); frappe.setup.utils.load_user_details(slide, this.setup_fields); @@ -509,6 +514,37 @@ frappe.setup.slides_settings = [ ]; frappe.setup.utils = { + load_prefilled_data: function (slide, callback) { + frappe.db + .get_value("System Settings", "System Settings", [ + "country", + "timezone", + "currency", + "language", + ]) + .then((r) => { + if (r.message) { + frappe.wizard.values.currency = r.message.currency; + frappe.wizard.values.country = r.message.country; + frappe.wizard.values.timezone = r.message.timezone; + frappe.wizard.values.language = r.message.language; + + frappe.db.get_value( + "User", + { name: ["not in", ["Administrator", "Guest"]] }, + ["full_name", "email"], + (r) => { + if (r) { + frappe.wizard.values.full_name = r.full_name; + frappe.wizard.values.email = r.email; + } + } + ); + } + callback(slide); + }); + }, + load_regional_data: function (slide, callback) { frappe.call({ method: "frappe.geo.country_info.get_country_timezone_info", diff --git a/frappe/desk/page/setup_wizard/setup_wizard.py b/frappe/desk/page/setup_wizard/setup_wizard.py index 9c82baa440ad..9f41abd731b6 100755 --- a/frappe/desk/page/setup_wizard/setup_wizard.py +++ b/frappe/desk/page/setup_wizard/setup_wizard.py @@ -61,6 +61,35 @@ def setup_complete(args): return process_setup_stages(stages, args) +@frappe.whitelist() +def initialize_system_settings_and_user(system_settings_data, user_data): + system_settings = frappe.get_single("System Settings") + + if cint(system_settings.setup_complete): + return + + system_settings_data = parse_args(sanitize_input(system_settings_data)) + system_settings.update( + { + "language": system_settings_data.get("language"), + "country": system_settings_data.get("country"), + "currency": system_settings_data.get("currency"), + "time_zone": system_settings_data.get("time_zone"), + } + ) + system_settings.save() + + user_data = parse_args(sanitize_input(user_data)) + frappe.get_doc( + { + "doctype": "User", + "email": user_data.get("email"), + "first_name": user_data.get("first_name"), + "last_name": user_data.get("last_name"), + } + ).insert() + + @frappe.task() def process_setup_stages(stages, user_input, is_background_task=False): from frappe.utils.telemetry import capture diff --git a/frappe/integrations/frappe_providers/frappecloud_billing.py b/frappe/integrations/frappe_providers/frappecloud_billing.py index 889fb49c55ac..f3ac0fd4647f 100644 --- a/frappe/integrations/frappe_providers/frappecloud_billing.py +++ b/frappe/integrations/frappe_providers/frappecloud_billing.py @@ -77,8 +77,7 @@ def api(method, data=None): @frappe.whitelist() def is_fc_site() -> bool: is_system_manager = frappe.get_roles(frappe.session.user).count("System Manager") - setup_completed = frappe.get_system_settings("setup_complete") - return bool(is_system_manager and setup_completed and frappe.conf.get("fc_communication_secret")) + return bool(is_system_manager and frappe.conf.get("fc_communication_secret")) # login to frappe cloud dashboard