feat: initialise and preload system settings and user for setup wizard (#32108)
used in press to smoothen the signup experience
This commit is contained in:
parent
20e6957312
commit
dafc73836f
3 changed files with 73 additions and 9 deletions
|
|
@ -417,10 +417,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 =
|
||||
|
|
@ -439,11 +448,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
|
||||
|
|
@ -471,6 +475,7 @@ frappe.setup.slides_settings = [
|
|||
: __("Update Password"),
|
||||
fieldtype: "Password",
|
||||
length: 512,
|
||||
depends_on: "eval:!frappe.boot.is_fc_site",
|
||||
},
|
||||
],
|
||||
|
||||
|
|
@ -488,7 +493,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);
|
||||
|
|
@ -508,6 +513,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",
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue