@@ -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`""" | |||
@@ -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", | |||
@@ -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"): | |||
@@ -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", | |||
@@ -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) | |||
@@ -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() | |||
@@ -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) | |||
@@ -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.""" | |||
@@ -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 |
@@ -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) |