diff --git a/frappe/commands/utils.py b/frappe/commands/utils.py index 51ac94ac70..4fca42d1ba 100644 --- a/frappe/commands/utils.py +++ b/frappe/commands/utils.py @@ -103,7 +103,7 @@ def execute(context, method, args=None, kwargs=None): args = () if kwargs: - kwargs = eval(args) + kwargs = eval(kwargs) else: kwargs = {} diff --git a/frappe/desk/page/setup_wizard/setup_wizard.js b/frappe/desk/page/setup_wizard/setup_wizard.js index b045107ab8..019bc84e50 100644 --- a/frappe/desk/page/setup_wizard/setup_wizard.js +++ b/frappe/desk/page/setup_wizard/setup_wizard.js @@ -465,8 +465,5 @@ frappe.wiz.on("before_load", function() { // add welcome slide frappe.wiz.add_slide(frappe.wiz.welcome); frappe.wiz.add_slide(frappe.wiz.region); - - if (!(frappe.boot.limits && frappe.boot.limits.users===1)) { - frappe.wiz.add_slide(frappe.wiz.user); - } + frappe.wiz.add_slide(frappe.wiz.user); }); diff --git a/frappe/desk/page/setup_wizard/setup_wizard.json b/frappe/desk/page/setup_wizard/setup_wizard.json index 2072d8f79f..1c236e73cf 100644 --- a/frappe/desk/page/setup_wizard/setup_wizard.json +++ b/frappe/desk/page/setup_wizard/setup_wizard.json @@ -1,18 +1,18 @@ { - "content": null, - "creation": "2013-10-04 13:49:33", - "docstatus": 0, - "doctype": "Page", - "idx": 1, - "modified": "2016-06-15 13:07:32.651564", - "modified_by": "Administrator", - "module": "Desk", - "name": "setup-wizard", - "owner": "Administrator", - "page_name": "setup-wizard", + "content": null, + "creation": "2013-10-04 13:49:33", + "docstatus": 0, + "doctype": "Page", + "idx": 1, + "modified": "2016-06-15 13:07:32.651565", + "modified_by": "Administrator", + "module": "Desk", + "name": "setup-wizard", + "owner": "Administrator", + "page_name": "setup-wizard", "roles": [ { - "role": "Administrator" + "role": "System Manager" } ], "script": null, diff --git a/frappe/desk/page/setup_wizard/setup_wizard.py b/frappe/desk/page/setup_wizard/setup_wizard.py index 3381034ca1..7d04b2904f 100755 --- a/frappe/desk/page/setup_wizard/setup_wizard.py +++ b/frappe/desk/page/setup_wizard/setup_wizard.py @@ -4,7 +4,8 @@ from __future__ import unicode_literals import frappe, json, os -from frappe.utils import strip +from frappe.utils import strip, cint +from frappe import _ from frappe.translate import (set_default_language, get_dict, get_lang_dict, send_translations, get_language_from_code) from frappe.geo.country_info import get_country_info @@ -16,6 +17,10 @@ from werkzeug.useragents import UserAgent def setup_complete(args): """Calls hooks for `setup_wizard_complete`, sets home page as `desktop` and clears cache. If wizard breaks, calls `setup_wizard_exception` hook""" + + if cint(frappe.db.get_single_value('System Settings', 'setup_complete')): + frappe.throw(_('Setup already complete')) + args = process_args(args) try: @@ -31,12 +36,12 @@ def setup_complete(args): for method in frappe.get_hooks("setup_wizard_complete"): frappe.get_attr(method)(args) - frappe.db.set_default('desktop:home_page', 'desktop') - frappe.db.set_value('System Settings', 'System Settings', 'setup_complete', 1) + disable_future_access() frappe.db.commit() frappe.clear_cache() except: + frappe.db.rollback() if args: traceback = frappe.get_traceback() for hook in frappe.get_hooks("setup_wizard_exception"): @@ -48,6 +53,7 @@ def setup_complete(args): for hook in frappe.get_hooks("setup_wizard_success"): frappe.get_attr(hook)(args) + def update_system_settings(args): number_format = get_country_info(args.get("country")).get("number_format", "#,###.##") @@ -127,6 +133,19 @@ def add_all_roles_to(name): d.role = role[0] user.save() +def disable_future_access(): + frappe.db.set_default('desktop:home_page', 'desktop') + frappe.db.set_value('System Settings', 'System Settings', 'setup_complete', 1) + + if not frappe.flags.in_test: + # remove all roles and add 'Administrator' to prevent future access + page = frappe.get_doc('Page', 'setup-wizard') + page.roles = [] + page.append('roles', {'role': 'Administrator'}) + page.flags.do_not_update_json = True + page.flags.ignore_permissions = True + page.save() + @frappe.whitelist() def load_messages(language): """Load translation messages for given language from all `setup_wizard_requires` @@ -213,5 +232,7 @@ def email_setup_wizard_exception(traceback, args): frappe.sendmail(recipients=frappe.local.conf.setup_wizard_exception_email, sender=frappe.session.user, subject="Exception in Setup Wizard - {}".format(frappe.local.site), - message=message) + message=message, + delayed=False) +