diff --git a/frappe/__init__.py b/frappe/__init__.py index e00cf248b6..148a21e362 100644 --- a/frappe/__init__.py +++ b/frappe/__init__.py @@ -635,11 +635,12 @@ def delete_doc_if_exists(doctype, name, force=0): if db.exists(doctype, name): delete_doc(doctype, name, force=force) -def reload_doctype(doctype, force=False): +def reload_doctype(doctype, force=False, reset_permissions=False): """Reload DocType from model (`[module]/[doctype]/[name]/[name].json`) files.""" - reload_doc(scrub(db.get_value("DocType", doctype, "module")), "doctype", scrub(doctype), force=force) + reload_doc(scrub(db.get_value("DocType", doctype, "module")), "doctype", scrub(doctype), + force=force, reset_permissions=reset_permissions) -def reload_doc(module, dt=None, dn=None, force=False): +def reload_doc(module, dt=None, dn=None, force=False, reset_permissions=False): """Reload Document from model (`[module]/[doctype]/[name]/[name].json`) files. :param module: Module name. @@ -649,7 +650,7 @@ def reload_doc(module, dt=None, dn=None, force=False): """ import frappe.modules - return frappe.modules.reload_doc(module, dt, dn, force=force) + return frappe.modules.reload_doc(module, dt, dn, force=force, reset_permissions=reset_permissions) def rename_doc(doctype, old, new, debug=0, force=False, merge=False, ignore_permissions=False): """Rename a document. Calls `frappe.model.rename_doc.rename_doc`""" diff --git a/frappe/core/doctype/docfield/docfield.json b/frappe/core/doctype/docfield/docfield.json index 3601b986f0..bbec8ac810 100644 --- a/frappe/core/doctype/docfield/docfield.json +++ b/frappe/core/doctype/docfield/docfield.json @@ -1174,7 +1174,7 @@ "issingle": 0, "istable": 1, "max_attachments": 0, - "modified": "2016-10-26 17:29:04.205496", + "modified": "2017-01-06 07:29:04.205496", "modified_by": "Administrator", "module": "Core", "name": "DocField", diff --git a/frappe/core/page/data_import_tool/data_import_tool.py b/frappe/core/page/data_import_tool/data_import_tool.py index d77127d286..77786f09e1 100644 --- a/frappe/core/page/data_import_tool/data_import_tool.py +++ b/frappe/core/page/data_import_tool/data_import_tool.py @@ -92,7 +92,7 @@ def import_doc(path, overwrite=False, ignore_links=False, ignore_insert=False, for f in files: if f.endswith(".json"): frappe.flags.mute_emails = True - frappe.modules.import_file.import_file_by_path(f, data_import=True, force=True, pre_process=pre_process) + frappe.modules.import_file.import_file_by_path(f, data_import=True, force=True, pre_process=pre_process, reset_permissions=True) frappe.flags.mute_emails = False frappe.db.commit() elif f.endswith(".csv"): diff --git a/frappe/custom/doctype/custom_field/custom_field.json b/frappe/custom/doctype/custom_field/custom_field.json index af7d5a93d9..e7c0fd4a09 100644 --- a/frappe/custom/doctype/custom_field/custom_field.json +++ b/frappe/custom/doctype/custom_field/custom_field.json @@ -23,7 +23,6 @@ "ignore_xss_filter": 0, "in_filter": 1, "in_list_view": 1, - "in_standard_filter": 1, "label": "Document", "length": 0, "no_copy": 0, @@ -53,7 +52,6 @@ "ignore_xss_filter": 0, "in_filter": 1, "in_list_view": 0, - "in_standard_filter": 0, "label": "Label", "length": 0, "no_copy": 1, @@ -82,7 +80,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "Label Help", "length": 0, "no_copy": 0, @@ -110,7 +107,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 1, - "in_standard_filter": 0, "label": "Fieldname", "length": 0, "no_copy": 1, @@ -141,7 +137,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "Insert After", "length": 0, "no_copy": 1, @@ -170,7 +165,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "length": 0, "no_copy": 0, "permlevel": 0, @@ -198,7 +192,6 @@ "ignore_xss_filter": 0, "in_filter": 1, "in_list_view": 1, - "in_standard_filter": 0, "label": "Field Type", "length": 0, "no_copy": 0, @@ -230,7 +223,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "Precision", "length": 0, "no_copy": 0, @@ -259,7 +251,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 1, - "in_standard_filter": 0, "label": "Options", "length": 0, "no_copy": 0, @@ -288,7 +279,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "Options Help", "length": 0, "no_copy": 0, @@ -316,7 +306,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "length": 0, "no_copy": 0, "permlevel": 0, @@ -344,7 +333,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "Collapsible", "length": 0, "no_copy": 0, @@ -373,7 +361,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "Collapsible Depends On", "length": 0, "no_copy": 0, @@ -401,7 +388,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "Default Value", "length": 0, "no_copy": 0, @@ -430,7 +416,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "Depends On", "length": 255, "no_copy": 0, @@ -457,7 +442,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "Field Description", "length": 0, "no_copy": 0, @@ -489,7 +473,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "Permission Level", "length": 0, "no_copy": 0, @@ -518,7 +501,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "Width", "length": 0, "no_copy": 0, @@ -547,7 +529,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "", "length": 0, "no_copy": 0, @@ -577,7 +558,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 1, - "in_standard_filter": 0, "label": "Is Mandatory Field", "length": 0, "no_copy": 0, @@ -606,7 +586,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "Unique", "length": 0, "no_copy": 0, @@ -634,7 +613,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "Read Only", "length": 0, "no_copy": 0, @@ -662,7 +640,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "Ignore User Permissions", "length": 0, "no_copy": 0, @@ -689,7 +666,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "Hidden", "length": 0, "no_copy": 0, @@ -716,7 +692,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "Print Hide", "length": 0, "no_copy": 0, @@ -746,7 +721,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "Print Hide If No Value", "length": 0, "no_copy": 0, @@ -774,7 +748,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "Print Width", "length": 0, "no_copy": 1, @@ -801,7 +774,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "No Copy", "length": 0, "no_copy": 0, @@ -830,7 +802,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "Allow on Submit", "length": 0, "no_copy": 0, @@ -859,7 +830,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "In Report Filter", "length": 0, "no_copy": 0, @@ -888,7 +858,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "In List View", "length": 0, "no_copy": 0, @@ -908,14 +877,13 @@ "bold": 0, "collapsible": 0, "columns": 0, - "fieldname": "in_filter_dash", + "fieldname": "in_standard_filter", "fieldtype": "Check", "hidden": 0, "ignore_user_permissions": 0, "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "In Standard Filter", "length": 0, "no_copy": 0, @@ -943,7 +911,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "Report Hide", "length": 0, "no_copy": 0, @@ -972,7 +939,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "Index", "length": 0, "no_copy": 1, @@ -1000,7 +966,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "Ignore XSS Filter", "length": 0, "no_copy": 0, @@ -1028,7 +993,7 @@ "issingle": 0, "istable": 0, "max_attachments": 0, - "modified": "2016-11-07 05:23:16.370928", + "modified": "2017-01-06 12:24:04.186289", "modified_by": "Administrator", "module": "Custom", "name": "Custom Field", diff --git a/frappe/installer.py b/frappe/installer.py index 3a3237ea25..8da3af524d 100755 --- a/frappe/installer.py +++ b/frappe/installer.py @@ -129,7 +129,7 @@ def install_app(name, verbose=False, set_as_patched=True): if name != "frappe": add_module_defs(name) - sync_for(name, force=True, sync_everything=True, verbose=verbose) + sync_for(name, force=True, sync_everything=True, verbose=verbose, reset_permissions=True) sync_from_app(name) diff --git a/frappe/model/sync.py b/frappe/model/sync.py index 2253778f50..5bc1a5d0f8 100644 --- a/frappe/model/sync.py +++ b/frappe/model/sync.py @@ -12,17 +12,17 @@ from frappe.modules.import_file import import_file_by_path from frappe.modules.patch_handler import block_user from frappe.utils import update_progress_bar -def sync_all(force=0, verbose=False): +def sync_all(force=0, verbose=False, reset_permissions=False): block_user(True) for app in frappe.get_installed_apps(): - sync_for(app, force, verbose=verbose) + sync_for(app, force, verbose=verbose, reset_permissions=reset_permissions) block_user(False) frappe.clear_cache() -def sync_for(app_name, force=0, sync_everything = False, verbose=False): +def sync_for(app_name, force=0, sync_everything = False, verbose=False, reset_permissions=False): files = [] if app_name == "frappe": @@ -41,7 +41,7 @@ def sync_for(app_name, force=0, sync_everything = False, verbose=False): l = len(files) if l: for i, doc_path in enumerate(files): - import_file_by_path(doc_path, force=force) + import_file_by_path(doc_path, force=force, reset_permissions=reset_permissions) #print module_name + ' | ' + doctype + ' | ' + name frappe.db.commit() diff --git a/frappe/modules/import_file.py b/frappe/modules/import_file.py index 3738a04900..1893dd2375 100644 --- a/frappe/modules/import_file.py +++ b/frappe/modules/import_file.py @@ -7,19 +7,21 @@ import frappe, os, json from frappe.modules import get_module_path, scrub_dt_dn from frappe.utils import get_datetime_str -def import_files(module, dt=None, dn=None, force=False, pre_process=None): +def import_files(module, dt=None, dn=None, force=False, pre_process=None, reset_permissions=False): if type(module) is list: out = [] for m in module: - out.append(import_file(m[0], m[1], m[2], force=force, pre_process=pre_process)) + out.append(import_file(m[0], m[1], m[2], force=force, pre_process=pre_process, + reset_permissions=reset_permissions)) return out else: - return import_file(module, dt, dn, force=force, pre_process=pre_process) + return import_file(module, dt, dn, force=force, pre_process=pre_process, + reset_permissions=reset_permissions) -def import_file(module, dt, dn, force=False, pre_process=None): +def import_file(module, dt, dn, force=False, pre_process=None, reset_permissions=False): """Sync a file from txt if modifed, return false if not updated""" path = get_file_path(module, dt, dn) - ret = import_file_by_path(path, force, pre_process=pre_process) + ret = import_file_by_path(path, force, pre_process=pre_process, reset_permissions=reset_permissions) return ret def get_file_path(module, dt, dn): @@ -30,7 +32,7 @@ def get_file_path(module, dt, dn): return path -def import_file_by_path(path, force=False, data_import=False, pre_process=None): +def import_file_by_path(path, force=False, data_import=False, pre_process=None, reset_permissions=False): frappe.flags.in_import = True try: docs = read_doc_from_file(path) @@ -51,7 +53,8 @@ def import_file_by_path(path, force=False, data_import=False, pre_process=None): original_modified = doc.get("modified") - import_doc(doc, force=force, data_import=data_import, pre_process=pre_process) + import_doc(doc, data_import=data_import, pre_process=pre_process, + reset_permissions=reset_permissions) if original_modified: # since there is a new timestamp on the file, update timestamp in @@ -87,7 +90,7 @@ ignore_values = { ignore_doctypes = ["Page Role", "DocPerm"] -def import_doc(docdict, force=False, data_import=False, pre_process=None): +def import_doc(docdict, data_import=False, pre_process=None, reset_permissions=False): frappe.flags.in_import = True docdict["__islocal"] = 1 doc = frappe.get_doc(docdict) @@ -99,14 +102,14 @@ def import_doc(docdict, force=False, data_import=False, pre_process=None): if frappe.db.exists(doc.doctype, doc.name): old_doc = frappe.get_doc(doc.doctype, doc.name) - if doc.doctype in ignore_values and not force: + if doc.doctype in ignore_values: # update ignore values for key in ignore_values.get(doc.doctype) or []: doc.set(key, old_doc.get(key)) # update ignored docs into new doc for df in doc.meta.get_table_fields(): - if df.options in ignore_doctypes and not force: + if df.options in ignore_doctypes and not reset_permissions: doc.set(df.fieldname, []) ignore.append(df.options) diff --git a/frappe/modules/utils.py b/frappe/modules/utils.py index fb1f369a04..980e0b418c 100644 --- a/frappe/modules/utils.py +++ b/frappe/modules/utils.py @@ -136,9 +136,9 @@ def get_doc_path(module, doctype, name): dt, dn = scrub_dt_dn(doctype, name) return os.path.join(get_module_path(module), dt, dn) -def reload_doc(module, dt=None, dn=None, force=True): +def reload_doc(module, dt=None, dn=None, force=False, reset_permissions=False): from frappe.modules.import_file import import_files - return import_files(module, dt, dn, force=force) + return import_files(module, dt, dn, force=force, reset_permissions=reset_permissions) def export_doc(doctype, name, module=None): """Write a doc to standard path.""" diff --git a/frappe/patches.txt b/frappe/patches.txt index fd2e2a2cec..9005b95ba4 100644 --- a/frappe/patches.txt +++ b/frappe/patches.txt @@ -5,7 +5,7 @@ frappe.patches.v7_1.rename_scheduler_log_to_error_log frappe.patches.v6_1.rename_file_data frappe.patches.v7_0.re_route #2016-06-27 execute:frappe.reload_doc('core', 'doctype', 'doctype', force=True) #2016-10-17 -execute:frappe.reload_doc('core', 'doctype', 'docfield', force=True) #2016-02-26 +execute:frappe.reload_doc('core', 'doctype', 'docfield', force=True) #2017-01-06 execute:frappe.reload_doc('core', 'doctype', 'docperm') #2014-06-24 execute:frappe.reload_doc('core', 'doctype', 'role') execute:frappe.reload_doc('core', 'doctype', 'user') @@ -149,3 +149,4 @@ frappe.patches.v7_1.disabled_print_settings_for_custom_print_format frappe.patches.v7_2.set_doctype_engine frappe.patches.v7_2.merge_knowledge_base frappe.patches.v7_0.update_report_builder_json +frappe.patches.v7_2.set_in_standard_filter_property #1 \ No newline at end of file diff --git a/frappe/patches/v7_2/set_in_standard_filter_property.py b/frappe/patches/v7_2/set_in_standard_filter_property.py new file mode 100644 index 0000000000..85abda4008 --- /dev/null +++ b/frappe/patches/v7_2/set_in_standard_filter_property.py @@ -0,0 +1,12 @@ +import frappe + +def execute(): + frappe.reload_doc('custom', 'doctype', 'custom_field', force=True) + + try: + frappe.db.sql('update `tabCustom Field` set in_standard_filter = in_filter_dash') + except Exception, e: + if e.args[0]!=1054: raise e + + for doctype in frappe.get_all("DocType", {"istable": 0, "issingle": 0}): + frappe.reload_doctype(doctype.name, force=True) \ No newline at end of file