From 8191fafa58c606585fe6b46c53eb0a31329f6c9c Mon Sep 17 00:00:00 2001 From: ChillarAnand Date: Tue, 28 Dec 2021 09:35:40 +0530 Subject: [PATCH 1/4] chore: Add test for archiving site before dropping --- frappe/tests/test_commands.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/frappe/tests/test_commands.py b/frappe/tests/test_commands.py index 14ed77eeeb..b266f3f21f 100644 --- a/frappe/tests/test_commands.py +++ b/frappe/tests/test_commands.py @@ -474,6 +474,24 @@ class TestCommands(BaseTestCommands): # cleanup shutil.rmtree(test_app_path) + def disable_test_bench_drop_site_should_archive_site(self): + site = 'test_site.localhost' + + self.execute( + f"bench new-site {site} --force --verbose --admin-password {frappe.conf.admin_password} " + f"--mariadb-root-password {frappe.conf.root_password}" + ) + self.assertEqual(self.returncode, 0) + + self.execute(f"bench drop-site {site} --force --root-password {frappe.conf.root_password}") + self.assertEqual(self.returncode, 0) + + bench_path = frappe.utils.get_bench_path() + site_directory = os.path.join(bench_path, f'sites/{site}') + self.assertFalse(os.path.exists(site_directory)) + archive_directory = os.path.join(bench_path, f'archived/sites/{site}') + self.assertTrue(os.path.exists(archive_directory)) + class RemoveAppUnitTests(unittest.TestCase): def test_delete_modules(self): From 2d5c5c7f10fd75e7b57afd1ce28fe1d985fda9b6 Mon Sep 17 00:00:00 2001 From: Suraj Shetty <13928957+surajshetty3416@users.noreply.github.com> Date: Tue, 28 Dec 2021 16:09:42 +0530 Subject: [PATCH 2/4] fix: Use `frappe.permissions.has_permission` for proper error message (#15467) --- frappe/model/document.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/model/document.py b/frappe/model/document.py index 9b1f9f0cf3..1f079feedc 100644 --- a/frappe/model/document.py +++ b/frappe/model/document.py @@ -190,7 +190,7 @@ class Document(BaseDocument): :param permtype: one of `read`, `write`, `submit`, `cancel`, `delete`""" if self.flags.ignore_permissions: return True - return frappe.has_permission(self.doctype, permtype, self, verbose=verbose) + return frappe.permissions.has_permission(self.doctype, permtype, self, verbose=verbose) def raise_no_permission_to(self, perm_type): """Raise `frappe.PermissionError`.""" From 0fd20c7862ae0a8e11be09d3ecaf6f8a506ebec3 Mon Sep 17 00:00:00 2001 From: Shariq Ansari Date: Tue, 28 Dec 2021 19:10:59 +0530 Subject: [PATCH 3/4] fix: do not validate if options is undefined --- frappe/public/js/frappe/form/controls/link.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/frappe/public/js/frappe/form/controls/link.js b/frappe/public/js/frappe/form/controls/link.js index 3f1a44805a..ed355cf8b4 100644 --- a/frappe/public/js/frappe/form/controls/link.js +++ b/frappe/public/js/frappe/form/controls/link.js @@ -456,6 +456,8 @@ frappe.ui.form.ControlLink = class ControlLink extends frappe.ui.form.ControlDat this.docname, value); } validate_link_and_fetch(df, options, docname, value) { + if (!options) return; + let field_value = ""; const fetch_map = this.fetch_map; const columns_to_fetch = Object.values(fetch_map); From 8947a542d1d3152dbf68c6fcc6b22286d01dd52b Mon Sep 17 00:00:00 2001 From: Himanshu Date: Wed, 29 Dec 2021 10:15:52 +0530 Subject: [PATCH 4/4] fix: translations in setup wizard (#15401) Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com> --- frappe/desk/page/setup_wizard/setup_wizard.js | 39 ++++++++++--------- frappe/public/js/frappe/ui/slides.js | 19 ++++++--- 2 files changed, 33 insertions(+), 25 deletions(-) diff --git a/frappe/desk/page/setup_wizard/setup_wizard.js b/frappe/desk/page/setup_wizard/setup_wizard.js index 32d5bf235b..cc91a16345 100644 --- a/frappe/desk/page/setup_wizard/setup_wizard.js +++ b/frappe/desk/page/setup_wizard/setup_wizard.js @@ -46,14 +46,6 @@ frappe.pages['setup-wizard'].on_page_load = function (wrapper) { slide_class: frappe.setup.SetupWizardSlide, unidirectional: 1, done_state: 1, - before_load: ($footer) => { - $footer.find('.next-btn').removeClass('btn-default') - .addClass('btn-primary'); - $footer.find('.text-right').prepend( - $(``)); - - } } frappe.wizard = new frappe.setup.SetupWizard(wizard_settings); frappe.setup.run_event("after_load"); @@ -97,7 +89,7 @@ frappe.setup.SetupWizard = class SetupWizard extends frappe.ui.Slides { super.make(); this.container.addClass("container setup-wizard-slide with-form"); this.$next_btn.addClass('action'); - this.$complete_btn = this.$footer.find('.complete-btn').addClass('action'); + this.$complete_btn.addClass('action'); this.setup_keyboard_nav(); } @@ -145,7 +137,6 @@ frappe.setup.SetupWizard = class SetupWizard extends frappe.ui.Slides { this.$next_btn.removeClass("btn-primary").hide(); this.$complete_btn.addClass("btn-primary").show() .on('click', () => this.action_on_complete()); - } else { this.$next_btn.addClass("btn-primary").show(); this.$complete_btn.removeClass("btn-primary").hide(); @@ -178,6 +169,7 @@ frappe.setup.SetupWizard = class SetupWizard extends frappe.ui.Slides { this.setup(); this.show_slide(this.current_id); + this.refresh(this.current_id); setTimeout(() => { this.container.find('.form-control').first().focus(); }, 200); @@ -347,7 +339,6 @@ frappe.setup.SetupWizardSlide = class SetupWizardSlide extends frappe.ui.Slide { // Frappe slides settings // ====================================================== - frappe.setup.slides_settings = [ { // Welcome (language) slide @@ -365,10 +356,10 @@ frappe.setup.slides_settings = [ onload: function (slide) { this.setup_fields(slide); + let browser_language = frappe.setup.utils.get_language_name_from_code(navigator.language); + let language_field = slide.get_field("language"); - var language_field = slide.get_field("language"); - - language_field.set_input(frappe.setup.data.default_language || "English"); + language_field.set_input(browser_language || "English"); if (!frappe.setup._from_load_messages) { language_field.$input.trigger("change"); @@ -532,12 +523,18 @@ frappe.setup.utils = { /* Set a slide's country, timezone and currency fields */ - var data = frappe.setup.data.regional_data; - - var country_field = slide.get_field('country'); - + let data = frappe.setup.data.regional_data; + let country_field = slide.get_field('country'); + let translated_countries = []; + + Object.keys(data.country_info).sort().forEach(country => { + translated_countries.push({ + label: __(country), + value: country + }); + }); - country_field.set_data(Object.keys(data.country_info).sort()); + country_field.set_data(translated_countries); slide.get_input("currency") .empty() @@ -584,6 +581,10 @@ frappe.setup.utils = { }); }, + get_language_name_from_code: function (language_code) { + return frappe.setup.data.lang.codes_to_names[language_code] || "English"; + }, + bind_region_events: function (slide) { /* Bind a slide's country, timezone and currency fields diff --git a/frappe/public/js/frappe/ui/slides.js b/frappe/public/js/frappe/ui/slides.js index f9ac26844c..f79f54b786 100644 --- a/frappe/public/js/frappe/ui/slides.js +++ b/frappe/public/js/frappe/ui/slides.js @@ -21,7 +21,7 @@ frappe.ui.Slide = class Slide { this.$body = $(`
-

${this.title}

+

${__(this.title)}

@@ -40,7 +40,7 @@ frappe.ui.Slide = class Slide { if (this.image_src) this.$content.append( $(``)); - if (this.help) this.$content.append($(`

${this.help}

`)); + if (this.help) this.$content.append($(`

${__(this.help)}

`)); this.reqd_fields = []; @@ -263,7 +263,7 @@ frappe.ui.Slides = class Slides { .appendTo(this.container); this.render_progress_dots(); - this.make_prev_next_buttons(); + this.make_prev_next_complete_buttons(); if (this.before_load) this.before_load(this.$footer); // can be on demand @@ -289,6 +289,7 @@ frappe.ui.Slides = class Slides { } } else { if (this.made_slide_ids.includes(id + "")) { + this.slide_dict[id].done = false; this.slide_dict[id].destroy(); this.slide_dict[id].make(); } @@ -298,6 +299,7 @@ frappe.ui.Slides = class Slides { refresh(id) { this.render_progress_dots(); + this.make_prev_next_complete_buttons(); this.show_hide_prev_next(id); this.$body.find('.form-control').first().focus(); } @@ -338,13 +340,16 @@ frappe.ui.Slides = class Slides { if (!this.unidirectional) this.bind_progress_dots(); } - make_prev_next_buttons() { + make_prev_next_complete_buttons() { + this.$footer.empty(); + $(`
- +
- + +
`).appendTo(this.$footer); @@ -361,6 +366,8 @@ frappe.ui.Slides = class Slides { this.show_slide(this.current_id + 1); } }); + + this.$complete_btn = this.$footer.find('.complete-btn').attr('tabIndex', 0); } bind_progress_dots() {