From 274ccd1eae9f8db8f8fd9d38b2b142b0f0a5c3f5 Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Wed, 4 Jun 2014 15:20:02 +0530 Subject: [PATCH] Fixes in patches for user permissions --- frappe/cli.py | 23 +++++++++++++------ frappe/core/doctype/user/user.json | 7 ++++++ frappe/patches.txt | 2 +- .../create_custom_field_for_owner_match.py | 7 +++--- 4 files changed, 28 insertions(+), 11 deletions(-) diff --git a/frappe/cli.py b/frappe/cli.py index 1c0cfbd28d..c6901a55d9 100755 --- a/frappe/cli.py +++ b/frappe/cli.py @@ -7,6 +7,7 @@ from __future__ import unicode_literals import os import subprocess import frappe +from frappe.utils import cint site_arg_optional = ['serve', 'build', 'watch', 'celery', 'resize_images'] @@ -287,9 +288,9 @@ def use(sites_path): sitefile.write(frappe.local.site) # install -@cmd -def install(db_name, root_login="root", root_password=None, source_sql=None, +def _install(db_name, root_login="root", root_password=None, source_sql=None, admin_password = 'admin', force=False, site_config=None, reinstall=False, quiet=False, install_apps=None): + from frappe.installer import install_db, install_app, make_site_dirs import frappe.utils.scheduler @@ -312,17 +313,22 @@ def install(db_name, root_login="root", root_password=None, source_sql=None, install_app(app, verbose=verbose, set_as_patched=not source_sql) frappe.utils.scheduler.toggle_scheduler(enable_scheduler) - scheduler_status = "disabled" if frappe.utils.scheduler.is_scheduler_disabled() else "enabled" print "*** Scheduler is", scheduler_status, "***" +@cmd +def install(db_name, root_login="root", root_password=None, source_sql=None, + admin_password = 'admin', force=False, site_config=None, reinstall=False, quiet=False, install_apps=None): + _install(db_name, root_login, root_password, source_sql, admin_password, force, site_config, reinstall, quiet, install_apps) frappe.destroy() def _is_scheduler_enabled(): enable_scheduler = False try: frappe.connect() - enable_scheduler = frappe.db.get_default("enable_scheduler") + enable_scheduler = cint(frappe.db.get_default("enable_scheduler")) + except: + pass finally: frappe.db.close() @@ -363,10 +369,13 @@ def reinstall(quiet=False): @cmd def restore(db_name, source_sql, force=False, quiet=False, with_scheduler_enabled=False): import frappe.utils.scheduler - verbose = not quiet - install(db_name, source_sql=source_sql, verbose=verbose, force=force) + _install(db_name, source_sql=source_sql, quiet=quiet, force=force) - frappe.utils.scheduler.toggle_scheduler(with_scheduler_enabled) + try: + frappe.connect() + frappe.utils.scheduler.toggle_scheduler(with_scheduler_enabled) + finally: + frappe.destroy() @cmd def add_system_manager(email, first_name=None, last_name=None): diff --git a/frappe/core/doctype/user/user.json b/frappe/core/doctype/user/user.json index 8ab84a2e2a..c9a7ccaea4 100644 --- a/frappe/core/doctype/user/user.json +++ b/frappe/core/doctype/user/user.json @@ -473,6 +473,13 @@ "submit": 0, "write": 1 }, + { + "apply_user_permissions": 1, + "permlevel": 0, + "read": 1, + "role": "All", + "write": 1 + }, { "apply_user_permissions": 0, "create": 0, diff --git a/frappe/patches.txt b/frappe/patches.txt index 5e5e4ee87c..9f3b36b645 100644 --- a/frappe/patches.txt +++ b/frappe/patches.txt @@ -3,7 +3,7 @@ execute:import inlinestyler # new requirement execute:frappe.db.sql("""update `tabPatch Log` set patch=replace(patch, '.4_0.', '.v4_0.')""") #2014-05-12 execute:frappe.reload_doc('core', 'doctype', 'doctype', force=True) #2014-01-24 execute:frappe.reload_doc('core', 'doctype', 'docfield', force=True) #2014-03-01 -execute:frappe.reload_doc('core', 'doctype', 'docperm') #2013-13-26 +execute:frappe.reload_doc('core', 'doctype', 'docperm') #2014-06-04 execute:frappe.reload_doc('core', 'doctype', 'page') #2013-13-26 execute:frappe.reload_doc('core', 'doctype', 'report') #2014-06-03 execute:frappe.reload_doc('core', 'doctype', 'version') #2014-02-21 diff --git a/frappe/patches/v4_0/create_custom_field_for_owner_match.py b/frappe/patches/v4_0/create_custom_field_for_owner_match.py index 3d39b22e8a..168f36162b 100644 --- a/frappe/patches/v4_0/create_custom_field_for_owner_match.py +++ b/frappe/patches/v4_0/create_custom_field_for_owner_match.py @@ -16,8 +16,8 @@ def create_custom_field_for_owner_match(): where `match`='owner' and permlevel=0"""): # a link field pointing to User already exists - if frappe.db.get_value("DocField", {"parent": dt, "fieldtype": "Link", "options": "User", - "default": "__user"}): + if (frappe.db.get_value("DocField", {"parent": dt, "fieldtype": "Link", "options": "User", "default": "__user"}) + or frappe.db.get_value("Custom Field", {"dt": dt, "fieldtype": "Link", "options": "User", "default": "__user"})): print "User link field already exists for", dt continue @@ -28,7 +28,8 @@ def create_custom_field_for_owner_match(): "label": "{} Owner".format(dt), "fieldname": fieldname, "fieldtype": "Link", - "options": "User" + "options": "User", + "default": "__user" })) frappe.db.sql("""update `tab{doctype}` set `{fieldname}`=owner""".format(doctype=dt,