From 251f43ff87475165b9f054eb7d3bf9d7e080bd38 Mon Sep 17 00:00:00 2001
From: sbkolate
Date: Thu, 18 Feb 2016 15:52:58 +0530
Subject: [PATCH 01/72] Enable Custom Fields in Naming Series # 3019 of ERPNext
Issue
---
frappe/model/naming.py | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/frappe/model/naming.py b/frappe/model/naming.py
index 5152e83df0..aa2dfcd646 100644
--- a/frappe/model/naming.py
+++ b/frappe/model/naming.py
@@ -61,9 +61,8 @@ def set_name_by_naming_series(doc):
if not doc.naming_series:
frappe.throw(frappe._("Naming Series mandatory"))
- doc.name = make_autoname(doc.naming_series+'.#####')
-
-def make_autoname(key, doctype=''):
+ doc.name = make_autoname(doc.naming_series+'.#####', '', doc)
+def make_autoname(key='', doctype='', doc=''):
"""
Creates an autoname from the given key:
@@ -109,6 +108,8 @@ def make_autoname(key, doctype=''):
en = today.strftime("%d")
elif e=='YYYY':
en = today.strftime('%Y')
+ elif doc and doc.get(e,None):
+ en = doc.get(e,None)
else: en = e
n+=en
return n
From 2a5dbd718558e55bf9c78b63ce94c47452d9fcf1 Mon Sep 17 00:00:00 2001
From: sbkolate
Date: Fri, 19 Feb 2016 13:04:05 +0530
Subject: [PATCH 02/72] updated make_autoname() for adding Custom Fields in
Naming Series
---
frappe/model/naming.py | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/frappe/model/naming.py b/frappe/model/naming.py
index aa2dfcd646..21d18fc451 100644
--- a/frappe/model/naming.py
+++ b/frappe/model/naming.py
@@ -62,6 +62,7 @@ def set_name_by_naming_series(doc):
frappe.throw(frappe._("Naming Series mandatory"))
doc.name = make_autoname(doc.naming_series+'.#####', '', doc)
+
def make_autoname(key='', doctype='', doc=''):
"""
Creates an autoname from the given key:
@@ -108,8 +109,8 @@ def make_autoname(key='', doctype='', doc=''):
en = today.strftime("%d")
elif e=='YYYY':
en = today.strftime('%Y')
- elif doc and doc.get(e,None):
- en = doc.get(e,None)
+ elif doc and doc.get(e):
+ en = doc.get(e)
else: en = e
n+=en
return n
From 353e8a9d1f3720182ac4ce9f655ebeb4c2e77a91 Mon Sep 17 00:00:00 2001
From: Anand Doshi
Date: Thu, 18 Feb 2016 18:37:02 +0530
Subject: [PATCH 03/72] [fix] Sanitize form_dict and doc values to prevent XSS
---
frappe/core/doctype/communication/comment.py | 11 +-
frappe/core/doctype/docfield/docfield.json | 72 +-
frappe/core/doctype/docperm/docperm.json | 54 +-
.../error_snapshot/error_snapshot.json | 26 +-
frappe/core/doctype/file/file.json | 25 +-
frappe/core/doctype/patch_log/patch_log.js | 8 +
frappe/core/doctype/patch_log/patch_log.json | 6 +-
frappe/core/doctype/report/report.json | 30 +-
.../doctype/scheduler_log/scheduler_log.js | 8 +
.../doctype/scheduler_log/scheduler_log.json | 10 +-
frappe/core/doctype/version/version.json | 11 +-
.../doctype/custom_field/custom_field.json | 66 +-
.../customize_form_field.json | 41 +-
frappe/desk/form/load.py | 3 +
frappe/desk/notifications.py | 6 +-
frappe/email/__init__.py | 4 +-
.../email/doctype/bulk_email/bulk_email.json | 483 ++++-----
.../email_account/test_email_account.py | 1 +
.../email_alert_recipient.json | 12 +-
frappe/email/email_body.py | 3 +-
frappe/handler.py | 5 +-
frappe/model/base_document.py | 43 +-
frappe/model/document.py | 12 +-
frappe/model/naming.py | 6 +
frappe/patches.txt | 2 +-
frappe/public/css/form.css | 3 +
.../public/js/frappe/form/footer/timeline.js | 4 +-
frappe/public/less/form.less | 4 +
.../templates/includes/comments/comments.py | 4 +-
frappe/tests/test_document.py | 33 +
frappe/utils/__init__.py | 131 ++-
frappe/utils/jinja.py | 3 +-
frappe/utils/setup_docs.py | 6 +-
frappe/website/doctype/blog_post/blog_post.js | 8 +
.../website/doctype/blog_post/blog_post.json | 27 +-
frappe/website/doctype/blog_post/blog_post.py | 3 +-
frappe/website/doctype/web_form/web_form.json | 964 +++++++++---------
frappe/website/doctype/web_page/web_page.json | 57 +-
frappe/website/doctype/web_page/web_page.py | 3 +-
.../doctype/website_script/website_script.js | 8 +
.../website_script/website_script.json | 9 +-
.../website_settings/website_settings.json | 121 ++-
.../doctype/website_theme/website_theme.json | 61 +-
requirements.txt | 1 +
44 files changed, 1557 insertions(+), 841 deletions(-)
create mode 100644 frappe/core/doctype/patch_log/patch_log.js
create mode 100644 frappe/core/doctype/scheduler_log/scheduler_log.js
create mode 100644 frappe/website/doctype/blog_post/blog_post.js
create mode 100644 frappe/website/doctype/website_script/website_script.js
diff --git a/frappe/core/doctype/communication/comment.py b/frappe/core/doctype/communication/comment.py
index 78f7b2ab67..589210918b 100644
--- a/frappe/core/doctype/communication/comment.py
+++ b/frappe/core/doctype/communication/comment.py
@@ -15,15 +15,8 @@ def validate_comment(doc):
if not (doc.communication_type=='Comment' and doc.reference_doctype and doc.reference_name):
return
- comment_count = frappe.db.sql("""select count(*) from `tabCommunication`
- where
- communication_type='Comment'
- and reference_doctype=%(reference_doctype)s
- and reference_name=%(reference_name)s""",
- {"reference_doctype": doc.reference_doctype, "reference_name": doc.reference_name})[0][0]
-
- if comment_count >= 50:
- frappe.throw(_("Cannot add more than 50 comments"))
+ if doc.comment_type=="Comment" and "" not in doc.content:
+ doc.content += '\n'
def on_trash(doc):
if doc.communication_type != "Comment":
diff --git a/frappe/core/doctype/docfield/docfield.json b/frappe/core/doctype/docfield/docfield.json
index f53ebdda47..9d81c082c0 100644
--- a/frappe/core/doctype/docfield/docfield.json
+++ b/frappe/core/doctype/docfield/docfield.json
@@ -16,6 +16,7 @@
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "",
@@ -39,6 +40,7 @@
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 1,
"label": "Label",
@@ -67,6 +69,7 @@
"fieldtype": "Select",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 1,
"label": "Type",
@@ -93,6 +96,7 @@
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 1,
"label": "Name",
@@ -118,6 +122,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 1,
"label": "Mandatory",
@@ -147,6 +152,7 @@
"fieldtype": "Select",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Precision",
@@ -172,6 +178,7 @@
"fieldtype": "Int",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Length",
@@ -196,6 +203,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Index",
@@ -223,6 +231,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "In List View",
@@ -248,6 +257,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Bold",
@@ -273,6 +283,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Collapsible",
@@ -295,9 +306,10 @@
"collapsible": 0,
"depends_on": "eval:doc.fieldtype==\"Section Break\"",
"fieldname": "collapsible_depends_on",
- "fieldtype": "Small Text",
+ "fieldtype": "Code",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Collapsible Depends On",
@@ -322,6 +334,7 @@
"fieldtype": "Column Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"length": 0,
@@ -345,6 +358,7 @@
"fieldtype": "Text",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 1,
"label": "Options",
@@ -370,6 +384,7 @@
"fieldtype": "Small Text",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Default",
@@ -395,6 +410,7 @@
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Permissions",
@@ -415,9 +431,10 @@
"bold": 0,
"collapsible": 0,
"fieldname": "depends_on",
- "fieldtype": "Small Text",
+ "fieldtype": "Code",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Depends On",
@@ -443,6 +460,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Hidden",
@@ -470,6 +488,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Read Only",
@@ -495,6 +514,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Unique",
@@ -520,6 +540,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Set Only Once",
@@ -543,6 +564,7 @@
"fieldtype": "Column Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"length": 0,
@@ -566,6 +588,7 @@
"fieldtype": "Int",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Perm Level",
@@ -594,6 +617,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Ignore User Permissions",
@@ -617,6 +641,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Allow on Submit",
@@ -644,6 +669,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Report Hide",
@@ -663,6 +689,32 @@
"unique": 0,
"width": "50px"
},
+ {
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "description": "Don't HTML Encode HTML tags like <script> or just characters like < or >, as they could be intentionally used in this field",
+ "fieldname": "ignore_xss_filter",
+ "fieldtype": "Check",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Ignore XSS Filter",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
{
"allow_on_submit": 0,
"bold": 0,
@@ -671,6 +723,7 @@
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Display",
@@ -694,6 +747,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "In Filter",
@@ -721,6 +775,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "No Copy",
@@ -748,6 +803,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Print Hide",
@@ -776,6 +832,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Print Hide If No Value",
@@ -800,6 +857,7 @@
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Print Width",
@@ -823,6 +881,7 @@
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Width",
@@ -850,6 +909,7 @@
"fieldtype": "Column Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"length": 0,
@@ -872,6 +932,7 @@
"fieldtype": "Small Text",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 1,
"label": "Description",
@@ -899,6 +960,7 @@
"fieldtype": "Data",
"hidden": 1,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"length": 0,
@@ -923,6 +985,7 @@
"fieldtype": "Data",
"hidden": 1,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"length": 0,
@@ -949,12 +1012,13 @@
"issingle": 0,
"istable": 1,
"max_attachments": 0,
- "modified": "2015-11-24 02:28:08.985496",
+ "modified": "2016-02-22 09:08:47.112186",
"modified_by": "Administrator",
"module": "Core",
"name": "DocField",
"owner": "Administrator",
"permissions": [],
"read_only": 0,
- "read_only_onload": 0
+ "read_only_onload": 0,
+ "sort_order": "ASC"
}
\ No newline at end of file
diff --git a/frappe/core/doctype/docperm/docperm.json b/frappe/core/doctype/docperm/docperm.json
index c8085aa8fb..7b4be6800c 100644
--- a/frappe/core/doctype/docperm/docperm.json
+++ b/frappe/core/doctype/docperm/docperm.json
@@ -16,6 +16,7 @@
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Role and Level",
@@ -23,6 +24,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -38,6 +40,7 @@
"fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 1,
"label": "Role",
@@ -48,6 +51,7 @@
"options": "Role",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"print_width": "150px",
"read_only": 0,
"report_hide": 0,
@@ -66,6 +70,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Apply User Permissions",
@@ -73,6 +78,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -89,6 +95,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "If user is the owner",
@@ -97,6 +104,7 @@
"permlevel": 0,
"precision": "",
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -112,12 +120,14 @@
"fieldtype": "Column Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"length": 0,
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -134,6 +144,7 @@
"fieldtype": "Int",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 1,
"label": "Level",
@@ -143,6 +154,7 @@
"oldfieldtype": "Int",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"print_width": "40px",
"read_only": 0,
"report_hide": 0,
@@ -159,9 +171,10 @@
"depends_on": "",
"description": "JSON list of DocTypes used to apply User Permissions. If empty, all linked DocTypes will be used to apply User Permissions.",
"fieldname": "user_permission_doctypes",
- "fieldtype": "Text",
+ "fieldtype": "Code",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "User Permission DocTypes",
@@ -169,6 +182,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 1,
"report_hide": 0,
"reqd": 0,
@@ -184,6 +198,7 @@
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Permissions",
@@ -191,6 +206,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -207,6 +223,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 1,
"label": "Read",
@@ -216,6 +233,7 @@
"oldfieldtype": "Check",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"print_width": "32px",
"read_only": 0,
"report_hide": 0,
@@ -234,6 +252,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 1,
"label": "Write",
@@ -243,6 +262,7 @@
"oldfieldtype": "Check",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"print_width": "32px",
"read_only": 0,
"report_hide": 0,
@@ -261,6 +281,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 1,
"label": "Create",
@@ -270,6 +291,7 @@
"oldfieldtype": "Check",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"print_width": "32px",
"read_only": 0,
"report_hide": 0,
@@ -288,6 +310,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 1,
"label": "Delete",
@@ -295,6 +318,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -310,12 +334,14 @@
"fieldtype": "Column Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"length": 0,
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -331,6 +357,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 1,
"label": "Submit",
@@ -340,6 +367,7 @@
"oldfieldtype": "Check",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"print_width": "32px",
"read_only": 0,
"report_hide": 0,
@@ -357,6 +385,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 1,
"label": "Cancel",
@@ -366,6 +395,7 @@
"oldfieldtype": "Check",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"print_width": "32px",
"read_only": 0,
"report_hide": 0,
@@ -383,6 +413,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Amend",
@@ -392,6 +423,7 @@
"oldfieldtype": "Check",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"print_width": "32px",
"read_only": 0,
"report_hide": 0,
@@ -409,6 +441,7 @@
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Additional Permissions",
@@ -416,6 +449,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -432,6 +466,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Report",
@@ -439,6 +474,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"print_width": "32px",
"read_only": 0,
"report_hide": 0,
@@ -457,6 +493,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Export",
@@ -464,6 +501,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -479,6 +517,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Import",
@@ -486,6 +525,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -502,6 +542,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Set User Permissions",
@@ -509,6 +550,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -524,12 +566,14 @@
"fieldtype": "Column Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"length": 0,
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -546,6 +590,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Share",
@@ -554,6 +599,7 @@
"permlevel": 0,
"precision": "",
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -570,6 +616,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Print",
@@ -577,6 +624,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -593,6 +641,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Email",
@@ -600,6 +649,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -617,7 +667,7 @@
"issingle": 0,
"istable": 1,
"max_attachments": 0,
- "modified": "2015-11-16 06:29:45.429411",
+ "modified": "2016-02-22 09:18:14.138259",
"modified_by": "Administrator",
"module": "Core",
"name": "DocPerm",
diff --git a/frappe/core/doctype/error_snapshot/error_snapshot.json b/frappe/core/doctype/error_snapshot/error_snapshot.json
index b9dd81387b..e7dd851b2d 100644
--- a/frappe/core/doctype/error_snapshot/error_snapshot.json
+++ b/frappe/core/doctype/error_snapshot/error_snapshot.json
@@ -16,6 +16,7 @@
"fieldtype": "HTML",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Snapshot View",
@@ -40,6 +41,7 @@
"fieldtype": "Check",
"hidden": 1,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 1,
"in_list_view": 0,
"label": "Seen",
@@ -61,9 +63,10 @@
"bold": 0,
"collapsible": 0,
"fieldname": "evalue",
- "fieldtype": "Small Text",
+ "fieldtype": "Code",
"hidden": 1,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 1,
"label": "Friendly Title",
@@ -88,6 +91,7 @@
"fieldtype": "Datetime",
"hidden": 1,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Timestamp",
@@ -113,6 +117,7 @@
"fieldtype": "Int",
"hidden": 1,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 1,
"label": "Relapses",
@@ -137,6 +142,7 @@
"fieldtype": "Data",
"hidden": 1,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Exception Type",
@@ -158,9 +164,10 @@
"bold": 0,
"collapsible": 0,
"fieldname": "traceback",
- "fieldtype": "Small Text",
+ "fieldtype": "Code",
"hidden": 1,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Traceback",
@@ -185,6 +192,7 @@
"fieldtype": "Data",
"hidden": 1,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Parent Error Snapshot",
@@ -207,9 +215,10 @@
"bold": 0,
"collapsible": 0,
"fieldname": "pyver",
- "fieldtype": "Small Text",
+ "fieldtype": "Code",
"hidden": 1,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Pyver",
@@ -231,9 +240,10 @@
"bold": 0,
"collapsible": 0,
"fieldname": "exception",
- "fieldtype": "Small Text",
+ "fieldtype": "Code",
"hidden": 1,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Exception",
@@ -255,9 +265,10 @@
"bold": 0,
"collapsible": 0,
"fieldname": "locals",
- "fieldtype": "Text",
+ "fieldtype": "Code",
"hidden": 1,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Locals",
@@ -279,9 +290,10 @@
"bold": 0,
"collapsible": 0,
"fieldname": "frames",
- "fieldtype": "Text",
+ "fieldtype": "Code",
"hidden": 1,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Frames",
@@ -308,7 +320,7 @@
"issingle": 0,
"istable": 0,
"max_attachments": 0,
- "modified": "2015-12-28 00:44:30.751680",
+ "modified": "2016-02-22 09:23:46.208471",
"modified_by": "Administrator",
"module": "Core",
"name": "Error Snapshot",
diff --git a/frappe/core/doctype/file/file.json b/frappe/core/doctype/file/file.json
index 7c7b2a0a2a..7ad3426de3 100644
--- a/frappe/core/doctype/file/file.json
+++ b/frappe/core/doctype/file/file.json
@@ -16,6 +16,7 @@
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "File Name",
@@ -42,6 +43,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Is Private",
@@ -66,6 +68,7 @@
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Preview",
@@ -90,6 +93,7 @@
"fieldtype": "HTML",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Preview HTML",
@@ -114,6 +118,7 @@
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"length": 0,
@@ -138,6 +143,7 @@
"fieldtype": "Check",
"hidden": 1,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Is Home Folder",
@@ -162,6 +168,7 @@
"fieldtype": "Check",
"hidden": 1,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Is Attachments Folder",
@@ -186,6 +193,7 @@
"fieldtype": "Int",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 1,
"label": "File Size",
@@ -209,6 +217,7 @@
"fieldtype": "Column Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"length": 0,
@@ -230,9 +239,10 @@
"collapsible": 0,
"depends_on": "eval:!doc.is_folder",
"fieldname": "file_url",
- "fieldtype": "Small Text",
+ "fieldtype": "Code",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "File URL",
@@ -256,6 +266,7 @@
"fieldtype": "Small Text",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Thumbnail URL",
@@ -280,6 +291,7 @@
"fieldtype": "Link",
"hidden": 1,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Folder",
@@ -305,6 +317,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Is Folder",
@@ -330,6 +343,7 @@
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"length": 0,
@@ -353,6 +367,7 @@
"fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Attached To DocType",
@@ -377,6 +392,7 @@
"fieldtype": "Column Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"length": 0,
@@ -400,6 +416,7 @@
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Attached To Name",
@@ -423,6 +440,7 @@
"fieldtype": "Data",
"hidden": 1,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Content Hash",
@@ -446,6 +464,7 @@
"fieldtype": "Int",
"hidden": 1,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "lft",
@@ -470,6 +489,7 @@
"fieldtype": "Int",
"hidden": 1,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "rgt",
@@ -494,6 +514,7 @@
"fieldtype": "Data",
"hidden": 1,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "old_parent",
@@ -522,7 +543,7 @@
"istable": 0,
"max_attachments": 0,
"menu_index": 0,
- "modified": "2015-12-08 05:03:48.767257",
+ "modified": "2016-02-22 09:23:59.892258",
"modified_by": "Administrator",
"module": "Core",
"name": "File",
diff --git a/frappe/core/doctype/patch_log/patch_log.js b/frappe/core/doctype/patch_log/patch_log.js
new file mode 100644
index 0000000000..0080584a29
--- /dev/null
+++ b/frappe/core/doctype/patch_log/patch_log.js
@@ -0,0 +1,8 @@
+// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
+// For license information, please see license.txt
+
+frappe.ui.form.on('Patch Log', {
+ refresh: function(frm) {
+
+ }
+});
diff --git a/frappe/core/doctype/patch_log/patch_log.json b/frappe/core/doctype/patch_log/patch_log.json
index 96a0e4fff8..edbd03bceb 100644
--- a/frappe/core/doctype/patch_log/patch_log.json
+++ b/frappe/core/doctype/patch_log/patch_log.json
@@ -15,9 +15,10 @@
"bold": 0,
"collapsible": 0,
"fieldname": "patch",
- "fieldtype": "Small Text",
+ "fieldtype": "Code",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Patch",
@@ -25,6 +26,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -43,7 +45,7 @@
"issingle": 0,
"istable": 0,
"max_attachments": 0,
- "modified": "2015-11-16 06:29:51.487656",
+ "modified": "2016-02-22 09:31:31.854246",
"modified_by": "Administrator",
"module": "Core",
"name": "Patch Log",
diff --git a/frappe/core/doctype/report/report.json b/frappe/core/doctype/report/report.json
index ffe98701f0..4d40a60899 100644
--- a/frappe/core/doctype/report/report.json
+++ b/frappe/core/doctype/report/report.json
@@ -17,6 +17,7 @@
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Report Name",
@@ -24,6 +25,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 1,
@@ -39,6 +41,7 @@
"fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 1,
"label": "Ref DocType",
@@ -47,6 +50,7 @@
"options": "DocType",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 1,
@@ -62,6 +66,7 @@
"fieldtype": "Select",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 1,
"label": "Is Standard",
@@ -70,6 +75,7 @@
"options": "No\nYes",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 1,
@@ -85,6 +91,7 @@
"fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Module",
@@ -93,6 +100,7 @@
"options": "Module Def",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -108,6 +116,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Add Total Row",
@@ -115,6 +124,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -130,12 +140,14 @@
"fieldtype": "Column Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"length": 0,
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -151,6 +163,7 @@
"fieldtype": "Select",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Report Type",
@@ -159,6 +172,7 @@
"options": "Report Builder\nQuery Report\nScript Report",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 1,
@@ -174,6 +188,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Disabled",
@@ -181,6 +196,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -198,6 +214,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Apply User Permissions",
@@ -205,6 +222,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -220,12 +238,14 @@
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"length": 0,
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -242,6 +262,7 @@
"fieldtype": "Code",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Query",
@@ -249,6 +270,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -266,6 +288,7 @@
"fieldtype": "Code",
"hidden": 1,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Javascript",
@@ -273,6 +296,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -286,9 +310,10 @@
"collapsible": 0,
"depends_on": "eval:doc.report_type==\"Report Builder\"",
"fieldname": "json",
- "fieldtype": "Text",
+ "fieldtype": "Code",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "JSON",
@@ -296,6 +321,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 1,
"report_hide": 0,
"reqd": 0,
@@ -314,7 +340,7 @@
"issingle": 0,
"istable": 0,
"max_attachments": 0,
- "modified": "2015-11-16 06:29:55.357855",
+ "modified": "2016-02-22 09:14:41.050580",
"modified_by": "Administrator",
"module": "Core",
"name": "Report",
diff --git a/frappe/core/doctype/scheduler_log/scheduler_log.js b/frappe/core/doctype/scheduler_log/scheduler_log.js
new file mode 100644
index 0000000000..ac3b026934
--- /dev/null
+++ b/frappe/core/doctype/scheduler_log/scheduler_log.js
@@ -0,0 +1,8 @@
+// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
+// For license information, please see license.txt
+
+frappe.ui.form.on('Scheduler Log', {
+ refresh: function(frm) {
+
+ }
+});
diff --git a/frappe/core/doctype/scheduler_log/scheduler_log.json b/frappe/core/doctype/scheduler_log/scheduler_log.json
index 7582bb8960..fb94e75991 100644
--- a/frappe/core/doctype/scheduler_log/scheduler_log.json
+++ b/frappe/core/doctype/scheduler_log/scheduler_log.json
@@ -19,6 +19,7 @@
"fieldtype": "Check",
"hidden": 1,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Seen",
@@ -27,6 +28,7 @@
"permlevel": 0,
"precision": "",
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -42,6 +44,7 @@
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 1,
"label": "Method",
@@ -49,6 +52,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -61,9 +65,10 @@
"bold": 0,
"collapsible": 0,
"fieldname": "error",
- "fieldtype": "Text",
+ "fieldtype": "Code",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Error",
@@ -71,6 +76,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -89,7 +95,7 @@
"issingle": 0,
"istable": 0,
"max_attachments": 0,
- "modified": "2015-11-16 06:29:57.440897",
+ "modified": "2016-02-22 09:35:31.852571",
"modified_by": "Administrator",
"module": "Core",
"name": "Scheduler Log",
diff --git a/frappe/core/doctype/version/version.json b/frappe/core/doctype/version/version.json
index a86578db39..ba9a975797 100644
--- a/frappe/core/doctype/version/version.json
+++ b/frappe/core/doctype/version/version.json
@@ -17,6 +17,7 @@
"fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 1,
"label": "Ref DocType",
@@ -25,6 +26,7 @@
"options": "DocType",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 1,
@@ -40,6 +42,7 @@
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 1,
"label": "Docname",
@@ -47,6 +50,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 1,
@@ -62,6 +66,7 @@
"fieldtype": "Code",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 1,
"label": "Doclist JSON",
@@ -69,6 +74,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 1,
@@ -87,7 +93,7 @@
"issingle": 0,
"istable": 0,
"max_attachments": 0,
- "modified": "2015-11-16 06:30:00.036254",
+ "modified": "2016-02-22 07:59:43.968145",
"modified_by": "Administrator",
"module": "Core",
"name": "Version",
@@ -115,5 +121,6 @@
}
],
"read_only": 0,
- "read_only_onload": 0
+ "read_only_onload": 0,
+ "sort_order": "ASC"
}
\ No newline at end of file
diff --git a/frappe/custom/doctype/custom_field/custom_field.json b/frappe/custom/doctype/custom_field/custom_field.json
index e7bb910d58..6b320b6c68 100644
--- a/frappe/custom/doctype/custom_field/custom_field.json
+++ b/frappe/custom/doctype/custom_field/custom_field.json
@@ -7,6 +7,7 @@
"description": "Adds a custom field to a DocType",
"docstatus": 0,
"doctype": "DocType",
+ "document_type": "Setup",
"fields": [
{
"allow_on_submit": 0,
@@ -16,6 +17,7 @@
"fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 1,
"in_list_view": 1,
"label": "Document",
@@ -42,6 +44,7 @@
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 1,
"in_list_view": 0,
"label": "Label",
@@ -67,6 +70,7 @@
"fieldtype": "HTML",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Label Help",
@@ -91,6 +95,7 @@
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 1,
"label": "Fieldname",
@@ -118,6 +123,7 @@
"fieldtype": "Select",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Insert After",
@@ -143,6 +149,7 @@
"fieldtype": "Column Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"length": 0,
@@ -167,6 +174,7 @@
"fieldtype": "Select",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 1,
"in_list_view": 1,
"label": "Field Type",
@@ -195,6 +203,7 @@
"fieldtype": "Select",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Precision",
@@ -220,6 +229,7 @@
"fieldtype": "Text",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 1,
"label": "Options",
@@ -245,6 +255,7 @@
"fieldtype": "HTML",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Options Help",
@@ -269,6 +280,7 @@
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"length": 0,
@@ -293,6 +305,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Collapsible",
@@ -315,9 +328,10 @@
"collapsible": 0,
"depends_on": "eval:doc.fieldtype==\"Section Break\"",
"fieldname": "collapsible_depends_on",
- "fieldtype": "Data",
+ "fieldtype": "Code",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Collapsible Depends On",
@@ -342,6 +356,7 @@
"fieldtype": "Text",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Default Value",
@@ -364,9 +379,10 @@
"bold": 0,
"collapsible": 0,
"fieldname": "depends_on",
- "fieldtype": "Small Text",
+ "fieldtype": "Code",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Depends On",
@@ -390,6 +406,7 @@
"fieldtype": "Text",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Field Description",
@@ -418,6 +435,7 @@
"fieldtype": "Int",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Permission Level",
@@ -443,6 +461,7 @@
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Width",
@@ -468,6 +487,7 @@
"fieldtype": "Column Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "",
@@ -494,6 +514,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 1,
"label": "Is Mandatory Field",
@@ -519,6 +540,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Unique",
@@ -543,6 +565,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Read Only",
@@ -567,6 +590,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Ignore User Permissions",
@@ -590,6 +614,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Hidden",
@@ -613,6 +638,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Print Hide",
@@ -639,6 +665,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Print Hide If No Value",
@@ -663,6 +690,7 @@
"fieldtype": "Data",
"hidden": 1,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Print Width",
@@ -686,6 +714,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "No Copy",
@@ -711,6 +740,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Allow on Submit",
@@ -736,6 +766,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "In Report Filter",
@@ -761,6 +792,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "In List View",
@@ -784,6 +816,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Report Hide",
@@ -809,6 +842,7 @@
"fieldtype": "Check",
"hidden": 1,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Index",
@@ -823,6 +857,32 @@
"search_index": 0,
"set_only_once": 0,
"unique": 0
+ },
+ {
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "description": "Don't HTML Encode HTML tags like <script> or just characters like < or >, as they could be intentionally used in this field",
+ "fieldname": "ignore_xss_filter",
+ "fieldtype": "Check",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Ignore XSS Filter",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
}
],
"hide_heading": 0,
@@ -835,7 +895,7 @@
"issingle": 0,
"istable": 0,
"max_attachments": 0,
- "modified": "2016-01-25 04:54:05.700031",
+ "modified": "2016-02-22 09:11:06.796094",
"modified_by": "Administrator",
"module": "Custom",
"name": "Custom Field",
diff --git a/frappe/custom/doctype/customize_form_field/customize_form_field.json b/frappe/custom/doctype/customize_form_field/customize_form_field.json
index 0c332c2ddf..27d3ff8600 100644
--- a/frappe/custom/doctype/customize_form_field/customize_form_field.json
+++ b/frappe/custom/doctype/customize_form_field/customize_form_field.json
@@ -7,6 +7,7 @@
"custom": 0,
"docstatus": 0,
"doctype": "DocType",
+ "document_type": "Setup",
"fields": [
{
"allow_on_submit": 0,
@@ -16,6 +17,7 @@
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Label and Type",
@@ -40,6 +42,7 @@
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 1,
"label": "Label",
@@ -66,6 +69,7 @@
"fieldtype": "Select",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 1,
"label": "Type",
@@ -92,6 +96,7 @@
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 1,
"label": "Name",
@@ -117,6 +122,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Mandatory",
@@ -144,6 +150,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Unique",
@@ -168,6 +175,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "In List View",
@@ -191,6 +199,7 @@
"fieldtype": "Column Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"length": 0,
@@ -216,6 +225,7 @@
"fieldtype": "Select",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Precision",
@@ -242,6 +252,7 @@
"fieldtype": "Int",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Length",
@@ -267,6 +278,7 @@
"fieldtype": "Text",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 1,
"label": "Options",
@@ -292,6 +304,7 @@
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Permissions",
@@ -312,11 +325,12 @@
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
- "description": "This field will appear only if the fieldname defined here has value OR the rules are true (examples): \nmyfield\neval:doc.myfield=='My Value'\neval:doc.age>18",
+ "description": "This field will appear only if the fieldname defined here has value OR the rules are true (examples): \nmyfield\neval:doc.myfield=='My Value'\neval:doc.age>18",
"fieldname": "depends_on",
- "fieldtype": "Data",
+ "fieldtype": "Code",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Depends On",
@@ -343,6 +357,7 @@
"fieldtype": "Int",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 1,
"label": "Perm Level",
@@ -368,6 +383,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Hidden",
@@ -395,6 +411,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Read Only",
@@ -420,6 +437,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Collapsible",
@@ -442,9 +460,10 @@
"collapsible": 0,
"depends_on": "eval:doc.fieldtype==\"Section Break\"",
"fieldname": "collapsible_depends_on",
- "fieldtype": "Data",
+ "fieldtype": "Code",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Collapsible Depends On",
@@ -469,6 +488,7 @@
"fieldtype": "Column Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"length": 0,
@@ -492,6 +512,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Ignore User Permissions",
@@ -515,6 +536,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Allow on Submit",
@@ -540,6 +562,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Report Hide",
@@ -565,6 +588,7 @@
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Display",
@@ -589,6 +613,7 @@
"fieldtype": "Text",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Default",
@@ -614,6 +639,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "In Filter",
@@ -641,6 +667,7 @@
"fieldtype": "Column Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"length": 0,
@@ -664,6 +691,7 @@
"fieldtype": "Text",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Description",
@@ -691,6 +719,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Print Hide",
@@ -717,6 +746,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Print Hide If No Value",
@@ -742,6 +772,7 @@
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Print Width",
@@ -767,6 +798,7 @@
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 1,
"label": "Width",
@@ -794,6 +826,7 @@
"fieldtype": "Check",
"hidden": 1,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Is Custom Field",
@@ -820,7 +853,7 @@
"issingle": 0,
"istable": 1,
"max_attachments": 0,
- "modified": "2015-11-24 02:27:50.426961",
+ "modified": "2016-02-22 09:11:53.773635",
"modified_by": "Administrator",
"module": "Custom",
"name": "Customize Form Field",
diff --git a/frappe/desk/form/load.py b/frappe/desk/form/load.py
index b8971079cd..fcc4859e42 100644
--- a/frappe/desk/form/load.py
+++ b/frappe/desk/form/load.py
@@ -147,6 +147,9 @@ def _get_communications(doctype, name, start=0, limit=20):
"attached_to_name": c.name}
))
+ elif c.communication_type=="Comment" and c.comment_type=="Comment":
+ c.content = frappe.utils.markdown(c.content)
+
return communications
def get_assignments(dt, dn):
diff --git a/frappe/desk/notifications.py b/frappe/desk/notifications.py
index 247c45cd94..c4910175bb 100644
--- a/frappe/desk/notifications.py
+++ b/frappe/desk/notifications.py
@@ -68,7 +68,8 @@ def get_notifications_for(notification_type, config, notification_count):
frappe.cache().hset("notification_count:" + m, frappe.session.user, open_count[m])
except frappe.PermissionError:
- frappe.msgprint("Permission Error in notifications for {0}".format(m))
+ pass
+ # frappe.msgprint("Permission Error in notifications for {0}".format(m))
return open_count
@@ -92,7 +93,8 @@ def get_notifications_for_doctypes(config, notification_count):
result = frappe.get_attr(condition)()
except frappe.PermissionError:
- frappe.msgprint("Permission Error in notifications for {0}".format(d))
+ pass
+ # frappe.msgprint("Permission Error in notifications for {0}".format(d))
except Exception, e:
# OperationalError: (1412, 'Table definition has changed, please retry transaction')
diff --git a/frappe/email/__init__.py b/frappe/email/__init__.py
index 4218598484..1c300ef559 100644
--- a/frappe/email/__init__.py
+++ b/frappe/email/__init__.py
@@ -6,12 +6,12 @@ import frappe
from frappe.email.email_body import get_email
from frappe.email.smtp import send
+from frappe.utils import markdown
def sendmail_md(recipients, sender=None, msg=None, subject=None, attachments=None, content=None,
reply_to=None, cc=(), message_id=None):
"""send markdown email"""
- import markdown2
- sendmail(recipients, sender, markdown2.markdown(content or msg), subject, attachments, reply_to=reply_to, cc=cc)
+ sendmail(recipients, sender, markdown(content or msg), subject, attachments, reply_to=reply_to, cc=cc)
def sendmail(recipients, sender='', msg='', subject='[No Subject]', attachments=None, content=None,
reply_to=None, cc=(), message_id=None):
diff --git a/frappe/email/doctype/bulk_email/bulk_email.json b/frappe/email/doctype/bulk_email/bulk_email.json
index b84f496968..18977b4c93 100644
--- a/frappe/email/doctype/bulk_email/bulk_email.json
+++ b/frappe/email/doctype/bulk_email/bulk_email.json
@@ -1,257 +1,276 @@
{
- "allow_copy": 0,
- "allow_import": 0,
- "allow_rename": 0,
- "autoname": "hash",
- "creation": "2012-08-02 15:17:28",
- "custom": 0,
- "description": "Bulk Email records.",
- "docstatus": 0,
- "doctype": "DocType",
- "document_type": "System",
+ "allow_copy": 0,
+ "allow_import": 0,
+ "allow_rename": 0,
+ "autoname": "hash",
+ "creation": "2012-08-02 15:17:28",
+ "custom": 0,
+ "description": "Bulk Email records.",
+ "docstatus": 0,
+ "doctype": "DocType",
+ "document_type": "System",
"fields": [
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "fieldname": "sender",
- "fieldtype": "Data",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Sender",
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "fieldname": "sender",
+ "fieldtype": "Data",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Sender",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "fieldname": "recipient",
- "fieldtype": "Data",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 1,
- "label": "Recipient",
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "fieldname": "recipient",
+ "fieldtype": "Data",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 1,
+ "label": "Recipient",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "fieldname": "message",
- "fieldtype": "Code",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Message",
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "fieldname": "message",
+ "fieldtype": "Code",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Message",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "default": "Not Sent",
- "fieldname": "status",
- "fieldtype": "Select",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 1,
- "label": "Status",
- "length": 0,
- "no_copy": 0,
- "options": "\nNot Sent\nSending\nSent\nError\nExpired",
- "permlevel": 0,
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "default": "Not Sent",
+ "fieldname": "status",
+ "fieldtype": "Select",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 1,
+ "label": "Status",
+ "length": 0,
+ "no_copy": 0,
+ "options": "\nNot Sent\nSending\nSent\nError\nExpired",
+ "permlevel": 0,
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "fieldname": "error",
- "fieldtype": "Text",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Error",
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "fieldname": "error",
+ "fieldtype": "Code",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Error",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "fieldname": "reference_doctype",
- "fieldtype": "Link",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Reference DocType",
- "length": 0,
- "no_copy": 0,
- "options": "DocType",
- "permlevel": 0,
- "print_hide": 0,
- "read_only": 1,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "fieldname": "reference_doctype",
+ "fieldtype": "Link",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Reference DocType",
+ "length": 0,
+ "no_copy": 0,
+ "options": "DocType",
+ "permlevel": 0,
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 1,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "fieldname": "reference_name",
- "fieldtype": "Data",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Reference DocName",
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "print_hide": 0,
- "read_only": 1,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "fieldname": "reference_name",
+ "fieldtype": "Data",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Reference DocName",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 1,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "fieldname": "send_after",
- "fieldtype": "Datetime",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Send After",
- "length": 0,
- "no_copy": 1,
- "permlevel": 0,
- "precision": "",
- "print_hide": 0,
- "read_only": 1,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "fieldname": "send_after",
+ "fieldtype": "Datetime",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Send After",
+ "length": 0,
+ "no_copy": 1,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 1,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "default": "1",
- "fieldname": "priority",
- "fieldtype": "Int",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Priority",
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "precision": "",
- "print_hide": 0,
- "read_only": 1,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "default": "1",
+ "fieldname": "priority",
+ "fieldtype": "Int",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Priority",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 1,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
}
- ],
- "hide_heading": 0,
- "hide_toolbar": 0,
- "icon": "icon-envelope",
- "idx": 1,
- "in_create": 1,
- "in_dialog": 0,
- "is_submittable": 0,
- "issingle": 0,
- "istable": 0,
- "max_attachments": 0,
- "modified": "2015-12-24 06:29:43.089602",
- "modified_by": "Administrator",
- "module": "Email",
- "name": "Bulk Email",
- "owner": "Administrator",
+ ],
+ "hide_heading": 0,
+ "hide_toolbar": 0,
+ "icon": "icon-envelope",
+ "idx": 1,
+ "in_create": 1,
+ "in_dialog": 0,
+ "is_submittable": 0,
+ "issingle": 0,
+ "istable": 0,
+ "max_attachments": 0,
+ "modified": "2016-02-22 09:14:36.762997",
+ "modified_by": "Administrator",
+ "module": "Email",
+ "name": "Bulk Email",
+ "owner": "Administrator",
"permissions": [
{
- "amend": 0,
- "apply_user_permissions": 0,
- "cancel": 0,
- "create": 0,
- "delete": 1,
- "email": 1,
- "export": 0,
- "if_owner": 0,
- "import": 0,
- "permlevel": 0,
- "print": 1,
- "read": 1,
- "report": 1,
- "role": "System Manager",
- "set_user_permissions": 0,
- "share": 0,
- "submit": 0,
+ "amend": 0,
+ "apply_user_permissions": 0,
+ "cancel": 0,
+ "create": 0,
+ "delete": 1,
+ "email": 1,
+ "export": 0,
+ "if_owner": 0,
+ "import": 0,
+ "permlevel": 0,
+ "print": 1,
+ "read": 1,
+ "report": 1,
+ "role": "System Manager",
+ "set_user_permissions": 0,
+ "share": 0,
+ "submit": 0,
"write": 0
}
- ],
- "read_only": 0,
- "read_only_onload": 0
-}
+ ],
+ "read_only": 0,
+ "read_only_onload": 0,
+ "sort_order": "DESC"
+}
\ No newline at end of file
diff --git a/frappe/email/doctype/email_account/test_email_account.py b/frappe/email/doctype/email_account/test_email_account.py
index 23d4cfe409..92fa8633cd 100644
--- a/frappe/email/doctype/email_account/test_email_account.py
+++ b/frappe/email/doctype/email_account/test_email_account.py
@@ -106,6 +106,7 @@ class TestEmailAccount(unittest.TestCase):
send_email=True)["name"]
sent_mail = email.message_from_string(frappe.get_last_doc("Bulk Email").message)
+
with open(os.path.join(os.path.dirname(__file__), "test_mails", "reply-1.raw"), "r") as f:
raw = f.read()
raw = raw.replace("<-- in-reply-to -->", sent_mail.get("Message-Id"))
diff --git a/frappe/email/doctype/email_alert_recipient/email_alert_recipient.json b/frappe/email/doctype/email_alert_recipient/email_alert_recipient.json
index c28dc54e22..a2c82fdfe5 100644
--- a/frappe/email/doctype/email_alert_recipient/email_alert_recipient.json
+++ b/frappe/email/doctype/email_alert_recipient/email_alert_recipient.json
@@ -17,6 +17,7 @@
"fieldtype": "Select",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 1,
"label": "Email By Document Field",
@@ -24,6 +25,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -37,16 +39,19 @@
"collapsible": 0,
"description": "Optional: Always send to these ids. Each email id on a new row",
"fieldname": "cc",
- "fieldtype": "Text",
+ "fieldtype": "Code",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 1,
"label": "CC",
"length": 0,
"no_copy": 0,
+ "options": "Email",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -63,6 +68,7 @@
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 1,
"label": "Condition",
@@ -70,6 +76,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -80,13 +87,14 @@
],
"hide_heading": 0,
"hide_toolbar": 0,
+ "idx": 0,
"in_create": 0,
"in_dialog": 0,
"is_submittable": 0,
"issingle": 0,
"istable": 1,
"max_attachments": 0,
- "modified": "2015-11-16 06:29:46.092268",
+ "modified": "2016-02-22 09:19:41.689603",
"modified_by": "Administrator",
"module": "Email",
"name": "Email Alert Recipient",
diff --git a/frappe/email/email_body.py b/frappe/email/email_body.py
index 93345b03f3..9d35c4f9b4 100644
--- a/frappe/email/email_body.py
+++ b/frappe/email/email_body.py
@@ -5,9 +5,8 @@ from __future__ import unicode_literals
import frappe
from frappe.utils.pdf import get_pdf
from frappe.email.smtp import get_outgoing_email_account
-from frappe.utils import get_url, scrub_urls, strip, expand_relative_urls, cint, split_emails, to_markdown
+from frappe.utils import get_url, scrub_urls, strip, expand_relative_urls, cint, split_emails, to_markdown, markdown
import email.utils
-from markdown2 import markdown
def get_email(recipients, sender='', msg='', subject='[No Subject]',
text_content = None, footer=None, print_html=None, formatted=None, attachments=None,
diff --git a/frappe/handler.py b/frappe/handler.py
index 5325530d7b..c3f51adf8e 100755
--- a/frappe/handler.py
+++ b/frappe/handler.py
@@ -10,7 +10,6 @@ import frappe.sessions
import frappe.utils.file_manager
import frappe.desk.form.run_method
from frappe.utils.response import build_response
-import bleach
def handle():
"""handle request"""
@@ -50,10 +49,9 @@ def is_whitelisted(method):
if method not in frappe.xss_safe_methods:
# strictly sanitize form_dict
# escapes html characters like <> except for predefined tags like a, b, ul etc.
- # if required, we can add more whitelisted tags like div, p, etc. (see its documentation)
for key, value in frappe.form_dict.items():
if isinstance(value, basestring):
- frappe.form_dict[key] = bleach.clean(value)
+ frappe.form_dict[key] = frappe.utils.sanitize_html(value)
else:
if not method in frappe.whitelisted:
@@ -109,6 +107,7 @@ def uploadfile():
return ret
+
def get_attr(cmd):
"""get method object from cmd"""
if '.' in cmd:
diff --git a/frappe/model/base_document.py b/frappe/model/base_document.py
index a94030cd64..f98b7e997c 100644
--- a/frappe/model/base_document.py
+++ b/frappe/model/base_document.py
@@ -4,7 +4,8 @@
from __future__ import unicode_literals
import frappe, sys
from frappe import _
-from frappe.utils import cint, flt, now, cstr, strip_html, getdate, get_datetime, to_timedelta
+from frappe.utils import (cint, flt, now, cstr, strip_html, getdate, get_datetime, to_timedelta,
+ sanitize_html, sanitize_email)
from frappe.model import default_fields
from frappe.model.naming import set_new_name
from frappe.modules import load_doctype_module
@@ -177,7 +178,7 @@ class BaseDocument(object):
d = frappe._dict()
for fieldname in self.meta.get_valid_columns():
d[fieldname] = self.get(fieldname)
-
+
# if no need for sanitization and value is None, continue
if not sanitize and d[fieldname] is None:
continue
@@ -188,7 +189,7 @@ class BaseDocument(object):
d[fieldname] = cint(d[fieldname])
elif df.fieldtype in ("Currency", "Float", "Percent") and not isinstance(d[fieldname], float):
-
+
d[fieldname] = flt(d[fieldname])
elif df.fieldtype in ("Datetime", "Date") and d[fieldname]=="":
@@ -505,6 +506,42 @@ class BaseDocument(object):
frappe.throw(_("Not allowed to change {0} after submission").format(df.label),
frappe.UpdateAfterSubmitError)
+ def _sanitize_content(self):
+ """Sanitize HTML and Email in field values. Used to prevent XSS.
+
+ - Ignore if 'Ignore XSS Filter' is checked or fieldtype is 'Code'
+ """
+ if frappe.flags.in_install:
+ return
+
+ for fieldname, value in self.get_valid_dict().items():
+ if not value or not isinstance(value, basestring):
+ continue
+
+ elif ("<" not in value and ">" not in value):
+ # doesn't look like html so no need
+ continue
+
+ elif "" in value and not ("'
+ escaped_xss = xss.replace('<', '<').replace('>', '>')
+ d.subject += xss
+ d.save()
+ d.load_from_db()
+
+ self.assertTrue(xss not in d.subject)
+ self.assertTrue(escaped_xss in d.subject)
+
+ # onload
+ xss = 'Test
'
+ escaped_xss = 'Test
'
+ d.subject += xss
+ d.save()
+ d.load_from_db()
+
+ self.assertTrue(xss not in d.subject)
+ self.assertTrue(escaped_xss in d.subject)
+
+ # css attributes
+ xss = 'Test
'
+ escaped_xss = 'Test
'
+ d.subject += xss
+ d.save()
+ d.load_from_db()
+
+ self.assertTrue(xss not in d.subject)
+ self.assertTrue(escaped_xss in d.subject)
+
diff --git a/frappe/utils/__init__.py b/frappe/utils/__init__.py
index 426978c459..f6d3552125 100644
--- a/frappe/utils/__init__.py
+++ b/frappe/utils/__init__.py
@@ -5,10 +5,16 @@
from __future__ import unicode_literals
from werkzeug.test import Client
-import os, sys, re, urllib
+import os, re, urllib, sys
+import json
import frappe
import requests
+import bleach
+import bleach_whitelist
+from html5lib.sanitizer import HTMLSanitizer
+from markdown2 import markdown as _markdown
+
# utility functions like cint, int, flt, etc.
from frappe.utils.data import *
@@ -97,7 +103,9 @@ def validate_email_add(email_str, throw=False):
def split_emails(txt):
email_list = []
- for email in re.split(''',(?=(?:[^"]|"[^"]*")*$)''', cstr(txt)):
+
+ # emails can be separated by comma or newline
+ for email in re.split('''[,\\n](?=(?:[^"]|"[^"]*")*$)''', cstr(txt)):
email = strip(cstr(email))
if email:
email_list.append(email)
@@ -177,70 +185,6 @@ def strip_html_tags(text):
"""Remove html tags from text"""
return re.sub("\<[^>]*\>", "", text)
-def pprint_dict(d, level=1, no_blanks=True):
- """
- Pretty print a dictionary with indents
- """
- if no_blanks:
- remove_blanks(d)
-
- # make indent
- indent, ret = '', ''
- for i in range(0,level): indent += '\t'
-
- # add lines
- comment, lines = '', []
- kl = d.keys()
- kl.sort()
-
- # make lines
- for key in kl:
- if key != '##comment':
- tmp = {key: d[key]}
- lines.append(indent + str(tmp)[1:-1] )
-
- # add comment string
- if '##comment' in kl:
- ret = ('\n' + indent) + '# ' + d['##comment'] + '\n'
-
- # open
- ret += indent + '{\n'
-
- # lines
- ret += indent + ',\n\t'.join(lines)
-
- # close
- ret += '\n' + indent + '}'
-
- return ret
-
-def get_common(d1,d2):
- """
- returns (list of keys) the common part of two dicts
- """
- return [p for p in d1 if p in d2 and d1[p]==d2[p]]
-
-def get_common_dict(d1, d2):
- """
- return common dictionary of d1 and d2
- """
- ret = {}
- for key in d1:
- if key in d2 and d2[key]==d1[key]:
- ret[key] = d1[key]
- return ret
-
-def get_diff_dict(d1, d2):
- """
- return common dictionary of d1 and d2
- """
- diff_keys = set(d2.keys()).difference(set(d1.keys()))
-
- ret = {}
- for d in diff_keys: ret[d] = d2[d]
- return ret
-
-
def get_file_timestamp(fn):
"""
Returns timestamp of the given file
@@ -427,11 +371,9 @@ def get_request_session(max_retries=3):
return session
def watch(path, handler=None, debug=True):
- import sys
import time
- import logging
from watchdog.observers import Observer
- from watchdog.events import LoggingEventHandler, FileSystemEventHandler
+ from watchdog.events import FileSystemEventHandler
class Handler(FileSystemEventHandler):
def on_any_event(self, event):
@@ -454,3 +396,54 @@ def watch(path, handler=None, debug=True):
except KeyboardInterrupt:
observer.stop()
observer.join()
+
+def sanitize_html(html):
+ """
+ Sanitize HTML tags, attributes and style to prevent XSS attacks
+ Based on bleach clean, bleach whitelist and HTML5lib's Sanitizer defaults
+
+ Does not sanitize JSON, as it could lead to future problems
+ """
+ if not isinstance(html, basestring):
+ return html
+
+ elif is_json(html):
+ return html
+
+ # retuns html with escaped tags, escaped orphan >, <, etc.
+ escaped_html = bleach.clean(html,
+ tags=HTMLSanitizer.acceptable_elements + HTMLSanitizer.svg_elements,
+ attributes={"*": HTMLSanitizer.acceptable_attributes, "svg": HTMLSanitizer.svg_attributes},
+ styles=bleach_whitelist.all_styles,
+ strip_comments=False)
+
+ return escaped_html
+
+def is_json(text):
+ try:
+ json.loads(text)
+
+ except ValueError:
+ return False
+
+ else:
+ return True
+
+def markdown(text):
+ html = _markdown(text)
+ html = html.replace("", "")
+ html = sanitize_html(html)
+ return html
+
+def sanitize_email(emails):
+ from email.utils import parseaddr, formataddr
+
+ sanitized = []
+ for e in split_emails(emails):
+ if not validate_email_add(e):
+ continue
+
+ fullname, email_id = parseaddr(e)
+ sanitized.append(formataddr((fullname, email_id)))
+
+ return ", ".join(sanitized)
diff --git a/frappe/utils/jinja.py b/frappe/utils/jinja.py
index 345b1edf76..6d53443dfe 100644
--- a/frappe/utils/jinja.py
+++ b/frappe/utils/jinja.py
@@ -127,9 +127,8 @@ def get_jloader():
def set_filters(jenv):
import frappe
- from frappe.utils import global_date_format, cint, cstr, flt
+ from frappe.utils import global_date_format, cint, cstr, flt, markdown
from frappe.website.utils import get_shade, abs_url
- from markdown2 import markdown
jenv.filters["global_date_format"] = global_date_format
jenv.filters["markdown"] = markdown
diff --git a/frappe/utils/setup_docs.py b/frappe/utils/setup_docs.py
index f3e59e4f08..fa7df65cb9 100644
--- a/frappe/utils/setup_docs.py
+++ b/frappe/utils/setup_docs.py
@@ -6,10 +6,10 @@ Call from command line:
"""
-import os, json, frappe, markdown2, shutil
+import os, json, frappe, shutil
import frappe.website.statics
from frappe.website.context import get_context
-from markdown2 import markdown
+from frappe.utils import markdown
class setup_docs(object):
def __init__(self, app):
@@ -38,7 +38,7 @@ class setup_docs(object):
"source_link": self.docs_config.source_link,
"hide_install": getattr(self.docs_config, "hide_install", False),
"docs_base_url": self.docs_config.docs_base_url,
- "long_description": markdown2.markdown(getattr(self.docs_config, "long_description", "")),
+ "long_description": markdown(getattr(self.docs_config, "long_description", "")),
"license": self.hooks.get("app_license")[0],
"branch": getattr(self.docs_config, "branch", None) or "develop",
"style": getattr(self.docs_config, "style", "")
diff --git a/frappe/website/doctype/blog_post/blog_post.js b/frappe/website/doctype/blog_post/blog_post.js
new file mode 100644
index 0000000000..e1b8341139
--- /dev/null
+++ b/frappe/website/doctype/blog_post/blog_post.js
@@ -0,0 +1,8 @@
+// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
+// For license information, please see license.txt
+
+frappe.ui.form.on('Blog Post', {
+ refresh: function(frm) {
+
+ }
+});
diff --git a/frappe/website/doctype/blog_post/blog_post.json b/frappe/website/doctype/blog_post/blog_post.json
index e41e39990a..1acd776256 100644
--- a/frappe/website/doctype/blog_post/blog_post.json
+++ b/frappe/website/doctype/blog_post/blog_post.json
@@ -15,6 +15,7 @@
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Title",
@@ -22,6 +23,7 @@
"no_copy": 1,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 1,
@@ -37,6 +39,7 @@
"fieldtype": "Date",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Published On",
@@ -44,6 +47,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -59,6 +63,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Published",
@@ -66,6 +71,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -81,12 +87,14 @@
"fieldtype": "Column Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"length": 0,
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -102,6 +110,7 @@
"fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 1,
"label": "Blog Category",
@@ -110,6 +119,7 @@
"options": "Blog Category",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 1,
@@ -125,6 +135,7 @@
"fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 1,
"label": "Blogger",
@@ -133,6 +144,7 @@
"options": "Blogger",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 1,
@@ -148,6 +160,7 @@
"fieldtype": "Read Only",
"hidden": 1,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Parent Website Route",
@@ -156,6 +169,7 @@
"options": "",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 1,
"report_hide": 0,
"reqd": 0,
@@ -171,12 +185,14 @@
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"length": 0,
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -193,6 +209,7 @@
"fieldtype": "Small Text",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Blog Intro",
@@ -200,6 +217,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -215,6 +233,7 @@
"fieldtype": "Text Editor",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 1,
"in_filter": 0,
"in_list_view": 0,
"label": "Content",
@@ -222,6 +241,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 1,
@@ -237,6 +257,7 @@
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Page Name",
@@ -244,6 +265,7 @@
"no_copy": 1,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -259,6 +281,7 @@
"fieldtype": "Check",
"hidden": 1,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Email Sent",
@@ -266,6 +289,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -284,7 +308,7 @@
"issingle": 0,
"istable": 0,
"max_attachments": 5,
- "modified": "2015-11-16 06:29:42.508658",
+ "modified": "2016-02-22 09:16:25.270128",
"modified_by": "Administrator",
"module": "Website",
"name": "Blog Post",
@@ -333,5 +357,6 @@
],
"read_only": 0,
"read_only_onload": 0,
+ "sort_order": "ASC",
"title_field": "title"
}
\ No newline at end of file
diff --git a/frappe/website/doctype/blog_post/blog_post.py b/frappe/website/doctype/blog_post/blog_post.py
index 0ade3a9e05..30d37db136 100644
--- a/frappe/website/doctype/blog_post/blog_post.py
+++ b/frappe/website/doctype/blog_post/blog_post.py
@@ -7,9 +7,8 @@ import frappe
from frappe import _
from frappe.website.website_generator import WebsiteGenerator
from frappe.website.render import clear_cache
-from frappe.utils import today, cint, global_date_format, get_fullname, strip_html_tags
+from frappe.utils import today, cint, global_date_format, get_fullname, strip_html_tags, markdown
from frappe.website.utils import find_first_image, get_comment_list
-from markdown2 import markdown
class BlogPost(WebsiteGenerator):
save_versions = True
diff --git a/frappe/website/doctype/web_form/web_form.json b/frappe/website/doctype/web_form/web_form.json
index a927fa6139..202ed583cd 100644
--- a/frappe/website/doctype/web_form/web_form.json
+++ b/frappe/website/doctype/web_form/web_form.json
@@ -1,509 +1,551 @@
{
- "allow_copy": 0,
- "allow_import": 0,
- "allow_rename": 0,
- "autoname": "field:title",
- "creation": "2014-09-01 14:08:48.624556",
- "custom": 0,
- "docstatus": 0,
- "doctype": "DocType",
- "document_type": "Document",
+ "allow_copy": 0,
+ "allow_import": 0,
+ "allow_rename": 0,
+ "autoname": "field:title",
+ "creation": "2014-09-01 14:08:48.624556",
+ "custom": 0,
+ "docstatus": 0,
+ "doctype": "DocType",
+ "document_type": "Document",
"fields": [
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "fieldname": "title",
- "fieldtype": "Data",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Title",
- "length": 0,
- "no_copy": 1,
- "permlevel": 0,
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 1,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "fieldname": "title",
+ "fieldtype": "Data",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Title",
+ "length": 0,
+ "no_copy": 1,
+ "permlevel": 0,
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 1,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "description": "Website URL",
- "fieldname": "page_name",
- "fieldtype": "Data",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Page Name",
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 1,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "description": "Website URL",
+ "fieldname": "page_name",
+ "fieldtype": "Data",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Page Name",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 1,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "fieldname": "doc_type",
- "fieldtype": "Link",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 1,
- "label": "Select DocType",
- "length": 0,
- "no_copy": 0,
- "options": "DocType",
- "permlevel": 0,
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 1,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "fieldname": "doc_type",
+ "fieldtype": "Link",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 1,
+ "label": "Select DocType",
+ "length": 0,
+ "no_copy": 0,
+ "options": "DocType",
+ "permlevel": 0,
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 1,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "fieldname": "column_break_4",
- "fieldtype": "Column Break",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "fieldname": "column_break_4",
+ "fieldtype": "Column Break",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "fieldname": "is_standard",
- "fieldtype": "Check",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Is Standard",
- "no_copy": 0,
- "permlevel": 0,
- "precision": "",
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "fieldname": "is_standard",
+ "fieldtype": "Check",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Is Standard",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "fieldname": "published",
- "fieldtype": "Check",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Published",
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "fieldname": "published",
+ "fieldtype": "Check",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Published",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "fieldname": "login_required",
- "fieldtype": "Check",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Login Required",
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "fieldname": "login_required",
+ "fieldtype": "Check",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Login Required",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "depends_on": "login_required",
- "fieldname": "allow_edit",
- "fieldtype": "Check",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Allow Edit",
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "depends_on": "login_required",
+ "fieldname": "allow_edit",
+ "fieldtype": "Check",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Allow Edit",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "depends_on": "login_required",
- "fieldname": "allow_multiple",
- "fieldtype": "Check",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Allow Multiple",
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "depends_on": "login_required",
+ "fieldname": "allow_multiple",
+ "fieldtype": "Check",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Allow Multiple",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "depends_on": "allow_multiple",
- "fieldname": "allow_delete",
- "fieldtype": "Check",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Allow Delete",
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "precision": "",
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "depends_on": "allow_multiple",
+ "fieldname": "allow_delete",
+ "fieldtype": "Check",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Allow Delete",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "depends_on": "login_required",
- "fieldname": "allow_comments",
- "fieldtype": "Check",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Allow Comments",
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "depends_on": "login_required",
+ "fieldname": "allow_comments",
+ "fieldtype": "Check",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Allow Comments",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "fieldname": "fields",
- "fieldtype": "Section Break",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Fields",
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "fieldname": "fields",
+ "fieldtype": "Section Break",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Fields",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "fieldname": "introduction_text",
- "fieldtype": "Text",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Introduction",
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "fieldname": "introduction_text",
+ "fieldtype": "Text",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Introduction",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "fieldname": "web_form_fields",
- "fieldtype": "Table",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Web Form Fields",
- "length": 0,
- "no_copy": 0,
- "options": "Web Form Field",
- "permlevel": 0,
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "fieldname": "web_form_fields",
+ "fieldtype": "Table",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Web Form Fields",
+ "length": 0,
+ "no_copy": 0,
+ "options": "Web Form Field",
+ "permlevel": 0,
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "fieldname": "actions",
- "fieldtype": "Section Break",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Actions",
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "fieldname": "actions",
+ "fieldtype": "Section Break",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Actions",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "description": "Message to be displayed on successful completion",
- "fieldname": "success_message",
- "fieldtype": "Text",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Success Message",
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "description": "Message to be displayed on successful completion",
+ "fieldname": "success_message",
+ "fieldtype": "Text",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Success Message",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "description": "Go to this url after completing the form.",
- "fieldname": "success_url",
- "fieldtype": "Data",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Success URL",
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "description": "Go to this url after completing the form.",
+ "fieldname": "success_url",
+ "fieldtype": "Data",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Success URL",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "fieldname": "advanced",
- "fieldtype": "Section Break",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Advanced",
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "precision": "",
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "fieldname": "advanced",
+ "fieldtype": "Section Break",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Advanced",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "description": "Text to be displayed for Link to Web Page if this form has a web page. Link route will be automatically generated based on `page_name` and `parent_website_route`",
- "fieldname": "web_page_link_text",
- "fieldtype": "Data",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Web Page Link Text",
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "precision": "",
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "description": "Text to be displayed for Link to Web Page if this form has a web page. Link route will be automatically generated based on `page_name` and `parent_website_route`",
+ "fieldname": "web_page_link_text",
+ "fieldtype": "Data",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Web Page Link Text",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
- },
+ },
{
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "description": "In JSON as [{\"title\":\"Jobs\", \"name\":\"jobs\"}]",
- "fieldname": "breadcrumbs",
- "fieldtype": "Small Text",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Breadcrumbs",
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "precision": "",
- "print_hide": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "description": "In JSON as [{\"title\":\"Jobs\", \"name\":\"jobs\"}]",
+ "fieldname": "breadcrumbs",
+ "fieldtype": "Code",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Breadcrumbs",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
"unique": 0
}
- ],
- "hide_heading": 0,
- "hide_toolbar": 0,
- "icon": "icon-edit",
- "in_create": 0,
- "in_dialog": 0,
- "is_submittable": 0,
- "issingle": 0,
- "istable": 0,
- "max_attachments": 0,
- "modified": "2015-11-16 06:30:00.321700",
- "modified_by": "Administrator",
- "module": "Website",
- "name": "Web Form",
- "name_case": "",
- "owner": "Administrator",
+ ],
+ "hide_heading": 0,
+ "hide_toolbar": 0,
+ "icon": "icon-edit",
+ "idx": 0,
+ "in_create": 0,
+ "in_dialog": 0,
+ "is_submittable": 0,
+ "issingle": 0,
+ "istable": 0,
+ "max_attachments": 0,
+ "modified": "2016-02-22 09:38:31.955298",
+ "modified_by": "Administrator",
+ "module": "Website",
+ "name": "Web Form",
+ "name_case": "",
+ "owner": "Administrator",
"permissions": [
{
- "amend": 0,
- "apply_user_permissions": 0,
- "cancel": 0,
- "create": 1,
- "delete": 1,
- "email": 0,
- "export": 0,
- "if_owner": 0,
- "import": 0,
- "permlevel": 0,
- "print": 0,
- "read": 1,
- "report": 1,
- "role": "Website Manager",
- "set_user_permissions": 0,
- "share": 1,
- "submit": 0,
+ "amend": 0,
+ "apply_user_permissions": 0,
+ "cancel": 0,
+ "create": 1,
+ "delete": 1,
+ "email": 0,
+ "export": 0,
+ "if_owner": 0,
+ "import": 0,
+ "permlevel": 0,
+ "print": 0,
+ "read": 1,
+ "report": 1,
+ "role": "Website Manager",
+ "set_user_permissions": 0,
+ "share": 1,
+ "submit": 0,
"write": 1
}
- ],
- "read_only": 0,
- "read_only_onload": 0,
- "sort_field": "modified",
- "sort_order": "DESC",
+ ],
+ "read_only": 0,
+ "read_only_onload": 0,
+ "sort_field": "modified",
+ "sort_order": "DESC",
"title_field": "title"
-}
+}
\ No newline at end of file
diff --git a/frappe/website/doctype/web_page/web_page.json b/frappe/website/doctype/web_page/web_page.json
index f8956e819f..95e8da5440 100644
--- a/frappe/website/doctype/web_page/web_page.json
+++ b/frappe/website/doctype/web_page/web_page.json
@@ -17,6 +17,7 @@
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Title",
@@ -24,6 +25,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -40,6 +42,7 @@
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Title",
@@ -47,6 +50,7 @@
"no_copy": 1,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 1,
@@ -63,6 +67,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Show Title",
@@ -71,6 +76,7 @@
"permlevel": 0,
"precision": "",
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -87,6 +93,7 @@
"fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Slideshow",
@@ -95,6 +102,7 @@
"options": "Website Slideshow",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -110,12 +118,14 @@
"fieldtype": "Column Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"length": 0,
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -133,6 +143,7 @@
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Page Name",
@@ -140,6 +151,7 @@
"no_copy": 1,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -155,6 +167,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Published",
@@ -162,6 +175,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -178,6 +192,7 @@
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Content",
@@ -185,6 +200,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -201,6 +217,7 @@
"fieldtype": "Text Editor",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Main Section",
@@ -208,6 +225,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -223,6 +241,7 @@
"fieldtype": "Fold",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"length": 0,
@@ -230,6 +249,7 @@
"permlevel": 0,
"precision": "",
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -245,6 +265,7 @@
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Custom Javascript",
@@ -252,6 +273,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -268,6 +290,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Insert Code",
@@ -275,6 +298,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -291,6 +315,7 @@
"fieldtype": "Code",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Javascript",
@@ -299,6 +324,7 @@
"options": "Javascript",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -314,6 +340,7 @@
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Custom CSS",
@@ -321,6 +348,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -336,6 +364,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Insert Style",
@@ -343,6 +372,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -359,6 +389,7 @@
"fieldtype": "Code",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "CSS",
@@ -367,6 +398,7 @@
"options": "CSS",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -382,6 +414,7 @@
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"length": 0,
@@ -389,6 +422,7 @@
"permlevel": 0,
"precision": "",
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -404,6 +438,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Enable Comments",
@@ -411,6 +446,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -426,6 +462,7 @@
"fieldtype": "Select",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Text Align",
@@ -434,6 +471,7 @@
"options": "Left\nCenter\nRight",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -449,6 +487,7 @@
"fieldtype": "Column Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"length": 0,
@@ -456,6 +495,7 @@
"permlevel": 0,
"precision": "",
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -471,6 +511,7 @@
"fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Parent Web Page",
@@ -479,6 +520,7 @@
"options": "Web Page",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -494,6 +536,7 @@
"fieldtype": "Read Only",
"hidden": 1,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Parent Website Route",
@@ -502,6 +545,7 @@
"options": "",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -518,6 +562,7 @@
"fieldtype": "Int",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Priority",
@@ -525,6 +570,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -540,6 +586,7 @@
"fieldtype": "Small Text",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Template Path",
@@ -547,6 +594,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 1,
"report_hide": 0,
"reqd": 0,
@@ -564,6 +612,7 @@
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "",
@@ -571,6 +620,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -587,6 +637,7 @@
"fieldtype": "Small Text",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Description",
@@ -594,6 +645,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -610,6 +662,7 @@
"fieldtype": "Text",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Header",
@@ -617,6 +670,7 @@
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -635,7 +689,7 @@
"issingle": 0,
"istable": 0,
"max_attachments": 20,
- "modified": "2015-11-16 06:30:00.482822",
+ "modified": "2016-02-22 08:00:02.354788",
"modified_by": "Administrator",
"module": "Website",
"name": "Web Page",
@@ -665,5 +719,6 @@
"read_only": 0,
"read_only_onload": 0,
"search_fields": "title",
+ "sort_order": "ASC",
"title_field": "title"
}
\ No newline at end of file
diff --git a/frappe/website/doctype/web_page/web_page.py b/frappe/website/doctype/web_page/web_page.py
index 1736e8bb3d..978d610b98 100644
--- a/frappe/website/doctype/web_page/web_page.py
+++ b/frappe/website/doctype/web_page/web_page.py
@@ -4,12 +4,11 @@
from __future__ import unicode_literals
import frappe, re, os, json, imp
import requests, requests.exceptions
-from frappe.utils import strip_html
+from frappe.utils import strip_html, markdown
from frappe.website.website_generator import WebsiteGenerator
from frappe.website.router import resolve_route
from frappe.website.doctype.website_slideshow.website_slideshow import get_slideshow
from frappe.website.utils import find_first_image, get_comment_list, get_full_index
-from markdown2 import markdown
from frappe.utils.jinja import render_template
from jinja2.exceptions import TemplateSyntaxError
from frappe import _
diff --git a/frappe/website/doctype/website_script/website_script.js b/frappe/website/doctype/website_script/website_script.js
new file mode 100644
index 0000000000..a64b8efff1
--- /dev/null
+++ b/frappe/website/doctype/website_script/website_script.js
@@ -0,0 +1,8 @@
+// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
+// For license information, please see license.txt
+
+frappe.ui.form.on('Website Script', {
+ refresh: function(frm) {
+
+ }
+});
diff --git a/frappe/website/doctype/website_script/website_script.json b/frappe/website/doctype/website_script/website_script.json
index 541e3f9dc5..5d603f041e 100644
--- a/frappe/website/doctype/website_script/website_script.json
+++ b/frappe/website/doctype/website_script/website_script.json
@@ -17,13 +17,16 @@
"fieldtype": "Code",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Javascript",
+ "length": 0,
"no_copy": 0,
"options": "Javascript",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -41,7 +44,8 @@
"is_submittable": 0,
"issingle": 1,
"istable": 0,
- "modified": "2015-02-05 05:11:49.093880",
+ "max_attachments": 0,
+ "modified": "2016-02-22 08:00:04.936041",
"modified_by": "Administrator",
"module": "Website",
"name": "Website Script",
@@ -69,5 +73,6 @@
}
],
"read_only": 0,
- "read_only_onload": 0
+ "read_only_onload": 0,
+ "sort_order": "ASC"
}
\ No newline at end of file
diff --git a/frappe/website/doctype/website_settings/website_settings.json b/frappe/website/doctype/website_settings/website_settings.json
index 3ef204feb6..80f506d114 100644
--- a/frappe/website/doctype/website_settings/website_settings.json
+++ b/frappe/website/doctype/website_settings/website_settings.json
@@ -16,12 +16,15 @@
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Landing Page",
+ "length": 0,
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -38,13 +41,16 @@
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 1,
"label": "Home Page",
+ "length": 0,
"no_copy": 0,
"options": "",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -61,12 +67,15 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 1,
"label": "Home Page is Products",
+ "length": 0,
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -82,11 +91,14 @@
"fieldtype": "Column Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
+ "length": 0,
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -103,12 +115,15 @@
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 1,
"label": "Title Prefix",
+ "length": 0,
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -124,12 +139,15 @@
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
+ "length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -146,14 +164,17 @@
"fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Website Theme",
+ "length": 0,
"no_copy": 0,
"options": "Website Theme",
"permlevel": 0,
"precision": "",
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -169,14 +190,17 @@
"fieldtype": "Image",
"hidden": 1,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Website Theme Image",
+ "length": 0,
"no_copy": 0,
"options": "website_theme_image_link",
"permlevel": 0,
"precision": "",
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -189,16 +213,19 @@
"bold": 0,
"collapsible": 0,
"fieldname": "website_theme_image_link",
- "fieldtype": "Small Text",
+ "fieldtype": "Code",
"hidden": 1,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Website Theme Image Link",
+ "length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -215,12 +242,15 @@
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Banner",
+ "length": 0,
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -237,13 +267,16 @@
"fieldtype": "Attach Image",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Banner Image",
+ "length": 0,
"no_copy": 0,
"options": "",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -259,12 +292,15 @@
"fieldtype": "Button",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Set Banner from Image",
+ "length": 0,
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -280,12 +316,15 @@
"fieldtype": "Column Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
+ "length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -302,12 +341,15 @@
"fieldtype": "Small Text",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Banner HTML",
+ "length": 0,
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -324,12 +366,15 @@
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Top Bar",
+ "length": 0,
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -346,12 +391,15 @@
"fieldtype": "Small Text",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Brand HTML",
+ "length": 0,
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -367,13 +415,16 @@
"fieldtype": "Table",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Top Bar Items",
+ "length": 0,
"no_copy": 0,
"options": "Top Bar Item",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -390,12 +441,15 @@
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Sidebar",
+ "length": 0,
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -411,13 +465,16 @@
"fieldtype": "Table",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Sidebar Items",
+ "length": 0,
"no_copy": 0,
"options": "Top Bar Item",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -433,12 +490,15 @@
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Footer",
+ "length": 0,
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -454,12 +514,15 @@
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Copyright",
+ "length": 0,
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -476,12 +539,15 @@
"fieldtype": "Text Editor",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Address",
+ "length": 0,
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -497,13 +563,16 @@
"fieldtype": "Table",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Footer Items",
+ "length": 0,
"no_copy": 0,
"options": "Top Bar Item",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -519,13 +588,16 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Hide Footer Signup",
+ "length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -541,12 +613,15 @@
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Integrations",
+ "length": 0,
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -563,12 +638,15 @@
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Google Analytics ID",
+ "length": 0,
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -584,11 +662,14 @@
"fieldtype": "Column Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
+ "length": 0,
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -604,12 +685,15 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Google Plus One",
+ "length": 0,
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -625,12 +709,15 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Facebook Share",
+ "length": 0,
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -646,12 +733,15 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Linked In Share",
+ "length": 0,
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -667,12 +757,15 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Twitter Share",
+ "length": 0,
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -689,12 +782,15 @@
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Twitter Share via",
+ "length": 0,
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -710,12 +806,15 @@
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "More Information",
+ "length": 0,
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -732,13 +831,16 @@
"fieldtype": "Attach",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "FavIcon",
+ "length": 0,
"no_copy": 0,
"options": "",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -755,12 +857,15 @@
"fieldtype": "Text",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Subdomain",
+ "length": 0,
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 1,
"report_hide": 0,
"reqd": 0,
@@ -776,11 +881,14 @@
"fieldtype": "Column Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
+ "length": 0,
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -797,12 +905,15 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Disable Signup",
+ "length": 0,
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -818,13 +929,16 @@
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "",
+ "length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -841,14 +955,17 @@
"fieldtype": "Code",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "<head> HTML",
+ "length": 0,
"no_copy": 0,
"options": "HTML",
"permlevel": 0,
"precision": "",
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -867,7 +984,7 @@
"issingle": 1,
"istable": 0,
"max_attachments": 10,
- "modified": "2015-10-19 03:04:48.520048",
+ "modified": "2016-02-22 09:38:53.160165",
"modified_by": "Administrator",
"module": "Website",
"name": "Website Settings",
diff --git a/frappe/website/doctype/website_theme/website_theme.json b/frappe/website/doctype/website_theme/website_theme.json
index 743172795f..f9c4f54799 100644
--- a/frappe/website/doctype/website_theme/website_theme.json
+++ b/frappe/website/doctype/website_theme/website_theme.json
@@ -17,6 +17,7 @@
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Theme",
@@ -25,6 +26,7 @@
"permlevel": 0,
"precision": "",
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 1,
@@ -41,6 +43,7 @@
"fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Module",
@@ -50,6 +53,7 @@
"permlevel": 0,
"precision": "",
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 1,
@@ -67,6 +71,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Apply Style",
@@ -75,6 +80,7 @@
"permlevel": 0,
"precision": "",
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -91,6 +97,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Custom?",
@@ -99,6 +106,7 @@
"permlevel": 0,
"precision": "",
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -114,6 +122,7 @@
"fieldtype": "Column Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"length": 0,
@@ -121,6 +130,7 @@
"permlevel": 0,
"precision": "",
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -134,9 +144,10 @@
"collapsible": 0,
"description": "Link to your Bootstrap theme",
"fieldname": "bootstrap",
- "fieldtype": "Small Text",
+ "fieldtype": "Code",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Link to Bootstrap CSS",
@@ -145,6 +156,7 @@
"permlevel": 0,
"precision": "",
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -161,6 +173,7 @@
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"length": 0,
@@ -168,6 +181,7 @@
"permlevel": 0,
"precision": "",
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -184,6 +198,7 @@
"fieldtype": "Select",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Font Size",
@@ -193,6 +208,7 @@
"permlevel": 0,
"precision": "",
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -209,6 +225,7 @@
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Google Font (Text)",
@@ -217,6 +234,7 @@
"permlevel": 0,
"precision": "",
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -233,6 +251,7 @@
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Google Font (Heading)",
@@ -241,6 +260,7 @@
"permlevel": 0,
"precision": "",
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -256,6 +276,7 @@
"fieldtype": "Column Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"length": 0,
@@ -263,6 +284,7 @@
"permlevel": 0,
"precision": "",
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -278,6 +300,7 @@
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Text Color",
@@ -286,6 +309,7 @@
"permlevel": 0,
"precision": "",
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -301,6 +325,7 @@
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Link Color",
@@ -309,6 +334,7 @@
"permlevel": 0,
"precision": "",
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -324,6 +350,7 @@
"fieldtype": "Select",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Heading Style",
@@ -333,6 +360,7 @@
"permlevel": 0,
"precision": "",
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -349,6 +377,7 @@
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"length": 0,
@@ -356,6 +385,7 @@
"permlevel": 0,
"precision": "",
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -371,6 +401,7 @@
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Top Bar Color",
@@ -379,6 +410,7 @@
"permlevel": 0,
"precision": "",
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -394,6 +426,7 @@
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Top Bar Text Color",
@@ -402,6 +435,7 @@
"permlevel": 0,
"precision": "",
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -417,6 +451,7 @@
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Hide Sidebar",
@@ -425,6 +460,7 @@
"permlevel": 0,
"precision": "",
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -440,6 +476,7 @@
"fieldtype": "Column Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"length": 0,
@@ -447,6 +484,7 @@
"permlevel": 0,
"precision": "",
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -462,6 +500,7 @@
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Footer Color",
@@ -470,6 +509,7 @@
"permlevel": 0,
"precision": "",
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -485,6 +525,7 @@
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Footer Text Color",
@@ -493,6 +534,7 @@
"permlevel": 0,
"precision": "",
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -509,6 +551,7 @@
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"length": 0,
@@ -516,6 +559,7 @@
"permlevel": 0,
"precision": "",
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -531,6 +575,7 @@
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Background Color",
@@ -539,6 +584,7 @@
"permlevel": 0,
"precision": "",
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -554,6 +600,7 @@
"fieldtype": "Column Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"length": 0,
@@ -561,6 +608,7 @@
"permlevel": 0,
"precision": "",
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -577,6 +625,7 @@
"fieldtype": "Attach Image",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Background Image",
@@ -585,6 +634,7 @@
"permlevel": 0,
"precision": "",
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -601,6 +651,7 @@
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"length": 0,
@@ -608,6 +659,7 @@
"permlevel": 0,
"precision": "",
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -625,6 +677,7 @@
"fieldtype": "Code",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Style using CSS",
@@ -633,6 +686,7 @@
"permlevel": 0,
"precision": "",
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -648,6 +702,7 @@
"fieldtype": "Code",
"hidden": 0,
"ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "JavaScript",
@@ -656,6 +711,7 @@
"permlevel": 0,
"precision": "",
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -666,13 +722,14 @@
],
"hide_heading": 0,
"hide_toolbar": 0,
+ "idx": 0,
"in_create": 0,
"in_dialog": 0,
"is_submittable": 0,
"issingle": 0,
"istable": 0,
"max_attachments": 0,
- "modified": "2015-11-16 06:30:00.700801",
+ "modified": "2016-02-22 09:39:16.920883",
"modified_by": "Administrator",
"module": "Website",
"name": "Website Theme",
diff --git a/requirements.txt b/requirements.txt
index 794388a750..8b74dcf845 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -29,5 +29,6 @@ click
num2words
watchdog==0.8.0
bleach
+bleach-whitelist
Pillow
beautifulsoup4
From 88e4178446028b8cb3d57d4d033b56ebf1c9a5bf Mon Sep 17 00:00:00 2001
From: Anand Doshi
Date: Tue, 23 Feb 2016 12:44:34 +0530
Subject: [PATCH 04/72] [fix] frappe.tools.downloadify: use data-url if
download feature is missing in link tag
---
frappe/public/js/frappe/misc/tools.js | 21 ++++++++++++++-------
1 file changed, 14 insertions(+), 7 deletions(-)
diff --git a/frappe/public/js/frappe/misc/tools.js b/frappe/public/js/frappe/misc/tools.js
index f5a8015968..63f05552c6 100644
--- a/frappe/public/js/frappe/misc/tools.js
+++ b/frappe/public/js/frappe/misc/tools.js
@@ -9,15 +9,22 @@ frappe.tools.downloadify = function(data, roles, title) {
return;
}
+ var filename = title + ".csv";
var csv_data = frappe.tools.to_csv(data);
-
- // Used Blob object, because it can handle large files
- var blob_object = new Blob([csv_data], { type: 'text/csv' });
- var blob_url = URL.createObjectURL(blob_object);
-
var a = document.createElement('a');
- a.download = title + '.csv';
- a.href = blob_url;
+
+ if ("download" in a) {
+ // Used Blob object, because it can handle large files
+ var blob_object = new Blob([csv_data], { type: 'text/csv;charset=UTF-8' });
+ a.href = URL.createObjectURL(blob_object);
+ a.download = filename;
+
+ } else {
+ // use old method
+ a.href = 'data:attachment/csv,' + encodeURIComponent(csv_data);
+ a.download = filename;
+ a.target = "_blank";
+ }
document.body.appendChild(a);
a.click();
From a3999826b6ebe0b8760a4491e273197d75466472 Mon Sep 17 00:00:00 2001
From: Neil Trini Lasrado
Date: Tue, 23 Feb 2016 18:52:28 +0530
Subject: [PATCH 05/72] Added new_line_sep to data.py
---
frappe/utils/data.py | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/frappe/utils/data.py b/frappe/utils/data.py
index d5fc004caf..720b694f7f 100644
--- a/frappe/utils/data.py
+++ b/frappe/utils/data.py
@@ -532,6 +532,21 @@ def comma_sep(some_list, pattern):
else:
return some_list
+def new_line_sep(some_list):
+ if isinstance(some_list, (list, tuple)):
+ # list(some_list) is done to preserve the existing list
+ some_list = [unicode(s) for s in list(some_list)]
+ if not some_list:
+ return ""
+ elif len(some_list) == 1:
+ return some_list[0]
+ else:
+ some_list = ["%s" % s for s in some_list]
+ return format("\n ".join(some_list))
+ else:
+ return some_list
+
+
def filter_strip_join(some_list, sep):
"""given a list, filter None values, strip spaces and join"""
return (cstr(sep)).join((cstr(a).strip() for a in filter(None, some_list)))
From 8ca3fea7622f1435a6b4616dd3d6724c4d8c1d0a Mon Sep 17 00:00:00 2001
From: Rushabh Mehta
Date: Wed, 24 Feb 2016 12:53:36 +0530
Subject: [PATCH 06/72] [minor] [fix] [docs] fix missing link
---
frappe/docs/user/guides/app-development/index.txt | 2 +-
frappe/hooks.py | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/frappe/docs/user/guides/app-development/index.txt b/frappe/docs/user/guides/app-development/index.txt
index 32b9c08c0d..2c74940479 100644
--- a/frappe/docs/user/guides/app-development/index.txt
+++ b/frappe/docs/user/guides/app-development/index.txt
@@ -4,7 +4,7 @@ generating-docs
how-enable-developer-mode-in-frappe
fetch-custom-field-value-from-master-to-all-related-transactions
executing-code-on-doctype-events
-how-to-add-customizations-to-app
+how-to-create-custom-fields-during-app-installation
insert-a-document-via-api
how-to-improve-a-standard-control
overriding-link-query-by-custom-script
diff --git a/frappe/hooks.py b/frappe/hooks.py
index 5203f1a5bb..67994207b0 100644
--- a/frappe/hooks.py
+++ b/frappe/hooks.py
@@ -1,7 +1,7 @@
from __future__ import unicode_literals
app_name = "frappe"
app_title = "Frappe Framework"
-app_publisher = "Frappe Technologies Pvt. Ltd."
+app_publisher = "Frappe Technologies"
app_description = "Full stack web framework with Python, Javascript, MariaDB, Redis, Node"
app_icon = "octicon octicon-circuit-board"
From a79bb3cf6e57d3ba69656406f7960cf93943e1e8 Mon Sep 17 00:00:00 2001
From: Anand Doshi
Date: Wed, 24 Feb 2016 13:02:19 +0530
Subject: [PATCH 07/72] [fix] Try to reconnect to dropbox if token expires.
Also upgrade to oauth2.
---
.../doctype/dropbox_backup/dropbox_backup.py | 70 ++++++++++++++-----
1 file changed, 52 insertions(+), 18 deletions(-)
diff --git a/frappe/integrations/doctype/dropbox_backup/dropbox_backup.py b/frappe/integrations/doctype/dropbox_backup/dropbox_backup.py
index 9e0723e0b9..bf9198c73c 100644
--- a/frappe/integrations/doctype/dropbox_backup/dropbox_backup.py
+++ b/frappe/integrations/doctype/dropbox_backup/dropbox_backup.py
@@ -15,6 +15,9 @@ from __future__ import unicode_literals
import frappe
from frappe.model.document import Document
from frappe.utils import cint, split_emails, get_request_site_address, cstr
+from frappe.utils.backups import new_backup
+from frappe.utils import get_files_path, get_backups_path
+
import os
from frappe import _
@@ -38,7 +41,6 @@ def take_backups_if(freq):
def take_backups_dropbox():
did_not_upload, error_log = [], []
try:
- from frappe.integrations.doctype.dropbox_backup.dropbox_backup import backup_to_dropbox
did_not_upload, error_log = backup_to_dropbox()
if did_not_upload: raise Exception
@@ -60,7 +62,9 @@ def send_email(success, service_name, error_status=None):
subject = "[Warning] Backup Upload Failed"
message ="""Backup Upload Failed
Oops, your automated backup to %s
failed.
- Error message: %s
+ Error message:
+
%s
+
Please contact your system manager for more information.
""" % (service_name, error_status)
@@ -87,7 +91,6 @@ def get_dropbox_authorize_url():
@frappe.whitelist(allow_guest=True)
def dropbox_callback(oauth_token=None, not_approved=False):
- from dropbox import client
if not not_approved:
if frappe.db.get_value("Dropbox Backup", None, "dropbox_access_key")==oauth_token:
allowed = 1
@@ -127,23 +130,15 @@ def dropbox_callback(oauth_token=None, not_approved=False):
frappe.response['page_name'] = 'message.html'
def backup_to_dropbox():
- from dropbox import client, session
- from frappe.utils.backups import new_backup
- from frappe.utils import get_files_path, get_backups_path
if not frappe.db:
frappe.connect()
- sess = session.DropboxSession(frappe.conf.dropbox_access_key, frappe.conf.dropbox_secret_key, "app_folder")
-
- sess.set_token(frappe.db.get_value("Dropbox Backup", None, "dropbox_access_key"),
- frappe.db.get_value("Dropbox Backup", None, "dropbox_access_secret"))
-
- dropbox_client = client.DropboxClient(sess)
+ dropbox_client = get_dropbox_client()
# upload database
backup = new_backup(ignore_files=True)
filename = os.path.join(get_backups_path(), os.path.basename(backup.backup_path_db))
- upload_file_to_dropbox(filename, "/database", dropbox_client)
+ dropbox_client = upload_file_to_dropbox(filename, "/database", dropbox_client)
frappe.db.close()
@@ -151,12 +146,33 @@ def backup_to_dropbox():
did_not_upload = []
error_log = []
- upload_from_folder(get_files_path(), "/files", dropbox_client, did_not_upload, error_log)
- upload_from_folder(get_files_path(is_private=1), "/private/files", dropbox_client, did_not_upload, error_log)
+ dropbox_client = upload_from_folder(get_files_path(), "/files", dropbox_client, did_not_upload, error_log)
+ dropbox_client = upload_from_folder(get_files_path(is_private=1), "/private/files", dropbox_client, did_not_upload, error_log)
frappe.connect()
return did_not_upload, list(set(error_log))
+def get_dropbox_client(previous_dropbox_client=None):
+ from dropbox import client
+
+ sess = get_dropbox_session()
+
+ sess.set_token(frappe.db.get_value("Dropbox Backup", None, "dropbox_access_key"),
+ frappe.db.get_value("Dropbox Backup", None, "dropbox_access_secret"))
+
+ dropbox_client = client.DropboxClient(sess)
+
+ # upgrade to oauth2
+ token = dropbox_client.create_oauth2_access_token()
+ dropbox_client = client.DropboxClient(token)
+
+ if previous_dropbox_client:
+ dropbox_client.connection_reset_count = previous_dropbox_client.connection_reset_count + 1
+ else:
+ dropbox_client.connection_reset_count = 0
+
+ return dropbox_client
+
def upload_from_folder(path, dropbox_folder, dropbox_client, did_not_upload, error_log):
import dropbox.rest
@@ -187,11 +203,13 @@ def upload_from_folder(path, dropbox_folder, dropbox_client, did_not_upload, err
if not found:
try:
- upload_file_to_dropbox(filepath, dropbox_folder, dropbox_client)
+ dropbox_client = upload_file_to_dropbox(filepath, dropbox_folder, dropbox_client)
except Exception:
did_not_upload.append(filename)
error_log.append(frappe.get_traceback())
+ return dropbox_client
+
def get_dropbox_session():
try:
from dropbox import session
@@ -218,10 +236,26 @@ def upload_file_to_dropbox(filename, folder, dropbox_client):
try:
uploader.upload_chunked()
uploader.finish(folder + "/" + os.path.basename(filename), overwrite=True)
- except rest.ErrorResponse:
- pass
+
+ except rest.ErrorResponse, e:
+ # if "[401] u'Access token not found.'",
+ # it means that the user needs to again allow dropbox backup from the UI
+ # so re-raise
+
+ if (e.startswith("[401]")
+ and dropbox_client.connection_reset_count < 10
+ and e != "[401] u'Access token not found.'"):
+
+ # session expired, so get a new connection!
+ # [401] u"The given OAuth 2 access token doesn't exist or has expired."
+ dropbox_client = get_dropbox_client(dropbox_client)
+
+ else:
+ raise
else:
dropbox_client.put_file(folder + "/" + os.path.basename(filename), f, overwrite=True)
+ return dropbox_client
+
if __name__=="__main__":
backup_to_dropbox()
From 5649950dd21ca8bdabba490f56f8c6dabc5f1119 Mon Sep 17 00:00:00 2001
From: Nabin Hait
Date: Wed, 24 Feb 2016 14:40:00 +0530
Subject: [PATCH 08/72] [translations]
---
frappe/translations/fr.csv | 42 ++++++-------
frappe/translations/hr.csv | 30 ++++-----
frappe/translations/ko.csv | 14 ++---
frappe/translations/nl.csv | 64 +++++++++----------
frappe/translations/pl.csv | 114 +++++++++++++++++-----------------
frappe/translations/pt-BR.csv | 2 +-
frappe/translations/pt.csv | 2 +-
7 files changed, 134 insertions(+), 134 deletions(-)
diff --git a/frappe/translations/fr.csv b/frappe/translations/fr.csv
index fa8bc2b2eb..c935473c52 100644
--- a/frappe/translations/fr.csv
+++ b/frappe/translations/fr.csv
@@ -26,7 +26,7 @@ apps/frappe/frappe/config/core.py +42,Logs,Logs
DocType: DocPerm,This role update User Permissions for a user,Ce rôle Permission mise à jour de l'utilisateur pour un utilisateur
apps/frappe/frappe/public/js/frappe/model/model.js +510,Rename {0},Renommer {0}
DocType: Workflow State,zoom-out,Réduire
-apps/frappe/frappe/public/js/legacy/form.js +66,Cannot open {0} when its instance is open,pas trouvé
+apps/frappe/frappe/public/js/legacy/form.js +66,Cannot open {0} when its instance is open,Ne peut ouvrir {0} quand son instance est ouverte
apps/frappe/frappe/model/document.py +756,Table {0} cannot be empty,La Table {0} ne peut pas être vide
apps/frappe/frappe/public/js/frappe/views/reports/grid_report.js +893,With Ledgers,Permanence Annuler {0} ?
DocType: Communication,Reference Owner,référence propriétaire
@@ -63,7 +63,7 @@ apps/frappe/frappe/public/js/frappe/ui/upload.html +12,Web Link,Lien Web
apps/frappe/frappe/public/js/frappe/misc/pretty_date.js +41,1 minute ago,il y a 1 minute
apps/frappe/frappe/core/page/data_import_tool/data_import_main.html +33,"Recommended bulk editing records via import, or understanding the import format.","Modification d'enregistrements en vrac Recommandé par l'importation, ou de comprendre le format d'importation."
apps/frappe/frappe/core/page/permission_manager/permission_manager_help.html +36,"Apart from System Manager, roles with Set User Permissions right can set permissions for other users for that Document Type.","En dehors de System Manager, les rôles avec Définir les autorisations de droit d'utilisateur peut définir des autorisations pour d'autres utilisateurs pour ce type de document."
-DocType: Company History,Company History,Historique de l'entreprise
+DocType: Company History,Company History,Historique de la société
DocType: Workflow State,volume-up,Augmenter le volume
apps/frappe/frappe/core/page/data_import_tool/importer.py +45,Only allowed {0} rows in one import,Seulement autorisés {0} lignes d'une importation
apps/frappe/frappe/public/js/frappe/list/list_sidebar.js +61,Refresh Stats,Actualiser Statistiques
@@ -224,7 +224,7 @@ apps/frappe/frappe/core/doctype/file/file_list.js +176,New,Nouveau
DocType: System Settings,Loading...,Chargement en cours ...
DocType: DocField,Password,Mot de passe
DocType: Blogger,Will be used in url (usually first name).,Sera utilisé dans url (généralement prénom).
-apps/frappe/frappe/client.py +63,Can not edit Read Only fields,Ne peut Editer les champs en Lecture Seule
+apps/frappe/frappe/client.py +63,Can not edit Read Only fields,Ne peut éditer les champs en lecture seule
apps/frappe/frappe/print/page/print_format_builder/print_format_builder.js +463,Edit Heading,Modifier rubrique
DocType: File,File URL,URL du fichier
apps/frappe/frappe/desk/doctype/event/event.py +68,Upcoming Events for Today,Prochains événements pour Aujourd'hui
@@ -347,13 +347,13 @@ DocType: Workflow Transition,Defines actions on states and the next step and all
apps/frappe/frappe/core/page/permission_manager/permission_manager_help.html +11,"As a best practice, do not assign the same set of permission rule to different Roles. Instead, set multiple Roles to the same User.","Comme une meilleure pratique , ne pas attribuer le même ensemble de règle d'autorisation pour différents rôles . Au lieu de cela , définir plusieurs rôles à un même utilisateur ."
DocType: Web Form,Message to be displayed on successful completion,Message qui sera affiché sur la réussite
DocType: Contact Us Settings,Address Title,Titre de l'adresse
-DocType: Website Settings,Footer Items,Articles de bas de page
+DocType: Website Settings,Footer Items,Éléments du pied de page
apps/frappe/frappe/public/js/frappe/ui/page.html +21,Menu,Menu
DocType: DefaultValue,DefaultValue,Valeur par défaut
DocType: Dropbox Backup,Daily,Quotidien
apps/frappe/frappe/config/setup.py +19,User Roles,Définition des rôles
DocType: Property Setter,Property Setter overrides a standard DocType or Field property,Propriété Setter remplace un DOCTYPE standard ou bien le terrain
-apps/frappe/frappe/core/doctype/user/user.py +380,Cannot Update: Incorrect / Expired Link.,Vous ne pouvez pas mettre à jour : Lien Mauvais ou périmée .
+apps/frappe/frappe/core/doctype/user/user.py +380,Cannot Update: Incorrect / Expired Link.,La mise à jour ne peut être effectuée : Lien incorrect ou périmé .
DocType: DocField,Set Only Once,Défini qu'une seule fois
apps/frappe/frappe/core/doctype/user/user.py +315,Username {0} already exists,Nom d'utilisateur {0} existe déjà
apps/frappe/frappe/core/doctype/doctype/doctype.py +528,{0}: Cannot set import as {1} is not importable,{0} : Impossible de définir l'importation car {1} n'est pas importable
@@ -463,7 +463,7 @@ apps/frappe/frappe/config/setup.py +176,"States for workflow (e.g. Draft, Approv
apps/frappe/frappe/public/js/frappe/form/link_selector.js +136,Set Quantity,Ensemble Quantité
DocType: User,Unsubscribed,Désabonné
,Data Import Tool,Outil d'importation de données
-apps/frappe/frappe/core/doctype/user/user.py +425,Registration Details Emailed.,Modalités d'inscription envoyé par courriel.
+apps/frappe/frappe/core/doctype/user/user.py +425,Registration Details Emailed.,Modalités d'inscription envoyé par E-mail.
DocType: Workflow State,Stop,arrêtez
DocType: Top Bar Item,Link to the page you want to open. Leave blank if you want to make it a group parent.,Lien vers la page que vous souhaitez ouvrir. Laissez ce champ vide si vous voulez faire un parent du groupe.
DocType: DocType,Is Single,Est célibataire
@@ -471,7 +471,7 @@ apps/frappe/frappe/email/bulk.py +231,{0} has left the conversation in {1} {2},{
DocType: Blogger,User ID of a Blogger,ID de l'utilisateur d'un Blogger
apps/frappe/frappe/core/doctype/user/user.py +201,There should remain at least one System Manager,Il devrait y rester au moins un administrateur système
DocType: Workflow State,circle-arrow-right,cercle flèche à droite
-apps/frappe/frappe/public/js/legacy/form.js +72,Cannot open instance when its {0} is open,Création / modification par
+apps/frappe/frappe/public/js/legacy/form.js +72,Cannot open instance when its {0} is open,Ne peut ouvrir un instance quand son {0} est ouverte
DocType: Scheduler Log,Method,Méthode
DocType: Report,Script Report,Rapport de Script
DocType: About Us Settings,Company Introduction,Présentation de l'entreprise
@@ -639,7 +639,7 @@ DocType: DocPerm,Set User Permissions,Définir les autorisations des utilisateur
DocType: Email Account,Email Account Name,Nom du compte E-mail
apps/frappe/frappe/core/page/permission_manager/permission_manager.js +249,Select Document Types,Sélectionnez Types de documents
DocType: File,old_parent,old_parent
-DocType: Email Account,"e.g. ""Support"", ""Sales"", ""Jerry Yang""","par exemple ""Support "","" vente "","" Jerry Yang """
+DocType: Email Account,"e.g. ""Support"", ""Sales"", ""Jerry Yang""","Ex. ""Support "","" vente "",""Jerry Yang"""
apps/frappe/frappe/public/js/frappe/form/workflow.js +115,Document Status transition from,Statut du document de transition
DocType: DocField,Description,Description
DocType: Print Settings,Repeat Header and Footer in PDF,Répétez-tête et pied de page en PDF
@@ -739,7 +739,7 @@ apps/frappe/frappe/core/page/data_import_tool/exporter.py +60,Notes:,Remarques:
apps/frappe/frappe/public/js/frappe/form/control.js +1391,Markdown,Markdown
DocType: DocShare,Document Name,Nom du document
DocType: ToDo,Medium,Moyen
-apps/frappe/frappe/public/js/frappe/form/linked_with.js +86,Not enough permission to see links.,Pas l'autorisation suffisante pour voir les liens.
+apps/frappe/frappe/public/js/frappe/form/linked_with.js +86,Not enough permission to see links.,Autorisation insuffisante pour voir les liens.
DocType: Customize Form,Customize Form,Personnaliser le formulaire
DocType: Currency,A symbol for this currency. For e.g. $,Un symbole pour cette monnaie. Par exemple $
apps/frappe/frappe/public/js/frappe/ui/toolbar/about.js +4,Frappe Framework,Framework Frappe
@@ -831,7 +831,7 @@ apps/frappe/frappe/public/js/frappe/form/control.js +765,Please save the documen
apps/frappe/frappe/public/js/frappe/ui/messages.js +163,Enter your password,Entrez votre mot de passe
DocType: Dropbox Backup,Dropbox Access Secret,Dropbox accès secrète
apps/frappe/frappe/core/doctype/doctype/doctype.py +351,Fold must come before a Section Break,Pliez doit venir avant un saut de section
-apps/frappe/frappe/core/doctype/user/user.py +430,Not allowed to reset the password of {0},Non autorisé pour réinitialiser le mot de passe de {0}
+apps/frappe/frappe/core/doctype/user/user.py +430,Not allowed to reset the password of {0},Non autorisé a réinitialiser le mot de passe de {0}
DocType: Workflow State,hand-down,la main vers le bas
apps/frappe/frappe/core/doctype/doctype/doctype.py +494,{0}: Cannot set Cancel without Submit,{0} : Impossible de définir Annuler sans Soumettre
DocType: Website Theme,Theme,Thème
@@ -931,7 +931,7 @@ apps/frappe/frappe/core/doctype/doctype/doctype.py +446,Enter at least one permi
apps/frappe/frappe/public/js/frappe/model/model.js +20,Created On,Créé le
DocType: Workflow State,align-center,Centrer
apps/frappe/frappe/public/js/frappe/form/set_sharing.html +6,Can Write,Peut Ecrire
-apps/frappe/frappe/core/page/permission_manager/permission_manager_help.html +16,"Certain documents, like an Invoice, should not be changed once final. The final state for such documents is called Submitted. You can restrict which roles can Submit.","Certains documents , comme une facture , ne devraient pas être modifiés une fois finale . L'état final de ces documents est appelée Soumis . Vous pouvez limiter les rôles pouvant Soumettre."
+apps/frappe/frappe/core/page/permission_manager/permission_manager_help.html +16,"Certain documents, like an Invoice, should not be changed once final. The final state for such documents is called Submitted. You can restrict which roles can Submit.","Certains documents , comme une facture , ne devraient pas être modifiés une fois finalisés . L'état final de ces documents est appelée soumis . Vous pouvez limiter les rôles pouvant soumettre."
apps/frappe/frappe/public/js/frappe/views/reports/query_report.js +619,You are not allowed to export this report,Vous n'êtes pas autorisé à exporter ce rapport.
DocType: ToDo,Sender,Expéditeur
DocType: Web Page,Description for search engine optimization.,Description pour l'optimisation des moteurs de recherche.
@@ -1005,7 +1005,7 @@ apps/frappe/frappe/public/js/legacy/print_format.js +125,You are not allowed to
apps/frappe/frappe/public/js/frappe/views/reports/grid_report.js +286,Loading Report,Chargement rapport
DocType: Page,Standard,Standard
apps/frappe/frappe/public/js/frappe/form/form_sidebar.html +26,Attach File,Joindre un fichier
-apps/frappe/frappe/templates/emails/password_update.html +1,Password Update Notification,Mot de passe Mise à jour de notification
+apps/frappe/frappe/templates/emails/password_update.html +1,Password Update Notification,Notification de mise à jour du mot de passe
apps/frappe/frappe/desk/page/backups/backups.html +13,Size,Taille
apps/frappe/frappe/public/js/frappe/form/footer/assign_to.js +62,Assignment Complete,Cession complète
DocType: DocPerm,User Permission DocTypes,DocTypes d'autorisation de l'utilisateur
@@ -1279,7 +1279,7 @@ apps/frappe/frappe/core/doctype/user/user.js +317,Role Permissions,Permissions d
apps/frappe/frappe/public/js/frappe/form/set_sharing.html +5,Can Read,Peut Lire
DocType: Standard Reply,Response,Réponse
apps/frappe/frappe/public/js/frappe/form/workflow.js +41,Workflow will start after saving.,Workflow démarre après la sauvegarde.
-apps/frappe/frappe/public/js/frappe/form/set_sharing.html +7,Can Share,Peuvent partager
+apps/frappe/frappe/public/js/frappe/form/set_sharing.html +7,Can Share,Peut partager
apps/frappe/frappe/email/smtp.py +33,Invalid recipient address,Adresse de destinataire invalide
DocType: Workflow State,step-forward,l'étape de l'avant-
apps/frappe/frappe/core/doctype/user/user.js +41,Refreshing...,Actualisation ...
@@ -1300,7 +1300,7 @@ DocType: Website Theme,Apply Style,Appliquer le style
apps/frappe/frappe/public/js/frappe/form/form_sidebar.html +39,Shared With,Partagé avec
,Modules Setup,modules installation
apps/frappe/frappe/core/page/data_import_tool/exporter.py +230,Type:,Type:
-DocType: Communication,Unshared,non partagée
+DocType: Communication,Unshared,Non partagée
apps/frappe/frappe/desk/moduleview.py +57,Module Not Found,Module introuvable
DocType: User,Location,Lieu
,Permitted Documents For User,Documents autorisés pour l'utilisateur
@@ -1364,7 +1364,7 @@ DocType: DocType,Allow Import via Data Import Tool,Autoriser l'importation v
apps/frappe/frappe/model/base_document.py +505,Not allowed to change {0} after submission,Non autorisé à changer {0} après la présentation
DocType: Communication,Comment Type,Type de commentaire
apps/frappe/frappe/config/setup.py +8,Users,Utilisateurs
-DocType: Report,Report Type,Rapport Genre
+DocType: Report,Report Type,Rapport type
DocType: Email Account,Signature,Signature
apps/frappe/frappe/public/js/frappe/form/share.js +112,Share With,Partager avec
apps/frappe/frappe/core/doctype/user/user.js +130,Loading,Chargement
@@ -1383,7 +1383,7 @@ DocType: Event,Sunday,Dimanche
apps/frappe/frappe/public/js/frappe/form/save.js +14,Amending,Amendement
apps/frappe/frappe/public/js/frappe/form/link_selector.js +5,Dialog box to select a Link Value,Boîte de dialogue pour sélectionner une valeur de lien
DocType: Contact Us Settings,Send enquiries to this email address,Envoyer une demande à cette adresse courriel
-DocType: Letter Head,Letter Head Name,Nom de A en-tête
+DocType: Letter Head,Letter Head Name,Nom de l'en-tête
apps/frappe/frappe/config/website.py +23,User editable form on Website.,Utilisateur formulaire modifiable sur le Site.
DocType: Workflow State,file,fichier
apps/frappe/frappe/templates/pages/login.html +74,Back to Login,Retour connexion
@@ -1499,7 +1499,7 @@ DocType: Website Theme,This must be checked if the below style settings are appl
apps/frappe/frappe/print/page/print_format_builder/print_format_builder.js +111,Name of the new Print Format,Nom du nouveau Format d'Impression
apps/frappe/frappe/core/page/data_import_tool/exporter.py +229,Mandatory:,Obligatoire:
,User Permissions Manager,Gestion autorisations des utilisateurs
-DocType: Property Setter,New value to be set,La nouvelle valeur à régler
+DocType: Property Setter,New value to be set,Nouvelle valeur à régler
DocType: Email Alert,Days Before or After,Jours avant ou après
DocType: Email Alert,Email Alert,Alerte E-mail
apps/frappe/frappe/core/page/permission_manager/permission_manager_help.html +34,Select Document Types to set which User Permissions are used to limit access.,Sélectionner les types de document pour définir les autorisations utilisateur sont utilisés pour limiter l'accès.
@@ -1760,7 +1760,7 @@ DocType: Role,Role Name,Nom du Rôle
apps/frappe/frappe/config/core.py +27,Script or Query reports,Script ou une requête rapports
DocType: Workflow Document State,Workflow Document State,Etat du document de workflow
apps/frappe/frappe/core/page/permission_manager/permission_manager_help.html +32,"To give acess to a role for only specific records, check the Apply User Permissions. User Permissions are used to limit users with such role to specific records.","Pour donner acess à un rôle pour que les enregistrements spécifiques, vérifiez les permissions d'utilisation se appliquent. les autorisations des utilisateurs sont utilisés pour limiter les utilisateurs avec ce rôle à des enregistrements spécifiques."
-apps/frappe/frappe/workflow/doctype/workflow/workflow.py +70,Cannot cancel before submitting. See Transition {0},Vous ne pouvez pas annuler avant de soumettre .
+apps/frappe/frappe/workflow/doctype/workflow/workflow.py +70,Cannot cancel before submitting. See Transition {0},Impossible d'annuler avant de soumettre . Voir transition {0}
apps/frappe/frappe/templates/pages/print.py +173,Print Format {0} is disabled,Format d'impression {0} est désactivé
DocType: Email Alert,Send days before or after the reference date,Envoyer jours avant ou après la date de référence
DocType: User,Allow user to login only after this hour (0-24),Permettre à l'utilisateur de se connecter seulement après cette heure (0-24)
@@ -1894,14 +1894,14 @@ apps/frappe/frappe/core/doctype/user/user.py +240,User {0} cannot be renamed,Uti
DocType: Website Settings,An icon file with .ico extension. Should be 16 x 16 px. Generated using a favicon generator. [favicon-generator.org],Un fichier d'icône avec .ico. Devrait être 16 x 16 px. Généré en utilisant un générateur de favicon. [favicon-generator.org]
apps/frappe/frappe/website/doctype/website_settings/website_settings.js +17,Exported,exporté
DocType: DocPerm,"JSON list of DocTypes used to apply User Permissions. If empty, all linked DocTypes will be used to apply User Permissions.","JSON liste des DocTypes utilisés pour appliquer les autorisations des utilisateurs. Se il est vide, tous liés DocTypes seront utilisés pour appliquer les autorisations des utilisateurs."
-DocType: Report,Ref DocType,Réf DocType
+DocType: Report,Ref DocType,Réf. DocType
apps/frappe/frappe/core/doctype/doctype/doctype.py +499,{0}: Cannot set Amend without Cancel,{0} : Impossible de définir Modifier sans Annuler
apps/frappe/frappe/public/js/frappe/form/print_layout.html +20,Full Page,Pleine page
DocType: DocType,Is Child Table,Est-table enfant
apps/frappe/frappe/utils/csvutils.py +123,{0} must be one of {1},{0} doit être l'un des {1}
apps/frappe/frappe/public/js/frappe/form/form_viewers.js +26,{0} is currently viewing this document,{0} est en train de regarder ce document
apps/frappe/frappe/config/core.py +52,Background Email Queue,Contexte Email Queue
-apps/frappe/frappe/templates/emails/password_reset.html +1,Password Reset,Password Reset
+apps/frappe/frappe/templates/emails/password_reset.html +1,Password Reset,Initialisation du mot de passe
DocType: Communication,Opened,Ouvert
DocType: Workflow State,chevron-left,chevron gauche
DocType: Bulk Email,Sending,Envoi
@@ -2002,7 +2002,7 @@ apps/frappe/frappe/custom/doctype/customize_form/customize_form.js +158,"Change
apps/frappe/frappe/website/doctype/web_form/web_form.py +27,You need to be in developer mode to edit a Standard Web Form,Vous devez être en mode développeur pour modifier un formulaire Web standard
apps/frappe/frappe/public/js/frappe/views/reports/query_report.js +48,"For comparative filters, start with","Pour les filtres de comparaison, commencez par"
DocType: Website Theme,Link to Bootstrap CSS,Lien vers Bootstrap CSS
-DocType: Workflow State,camera,appareil photo
+DocType: Workflow State,camera,Caméra
DocType: Website Settings,Brand HTML,Marque HTML
apps/frappe/frappe/templates/includes/login/login.js +19,Both login and password required,Un login et un mot de passe sont requis
apps/frappe/frappe/model/document.py +436,Please refresh to get the latest document.,S'il vous plaît Refresh pour obtenir la dernière version du document.
diff --git a/frappe/translations/hr.csv b/frappe/translations/hr.csv
index 595bcfa747..af1ec10ca0 100644
--- a/frappe/translations/hr.csv
+++ b/frappe/translations/hr.csv
@@ -60,7 +60,7 @@ DocType: Print Settings,Classic,Klasik
apps/frappe/frappe/public/js/frappe/views/reports/query_report.js +49,For ranges,Za raspone
DocType: Workflow State,indent-right,alineje-desno
apps/frappe/frappe/public/js/frappe/ui/upload.html +12,Web Link,Web Link
-apps/frappe/frappe/public/js/frappe/misc/pretty_date.js +41,1 minute ago,prije 1 minutu
+apps/frappe/frappe/public/js/frappe/misc/pretty_date.js +41,1 minute ago,Prije 1 minutu
apps/frappe/frappe/core/page/data_import_tool/data_import_main.html +33,"Recommended bulk editing records via import, or understanding the import format.","Preporučena skupno uređivanje zapisa putem uvoza, odnosno razumijevanje uvoz formatu."
apps/frappe/frappe/core/page/permission_manager/permission_manager_help.html +36,"Apart from System Manager, roles with Set User Permissions right can set permissions for other users for that Document Type.","Osim System Manager, uloge s postavite korisnički Dozvole pravo može postaviti dozvole za ostale korisnike za tu vrstu dokumenta."
DocType: Company History,Company History,Povijest tvrtke
@@ -108,7 +108,7 @@ apps/frappe/frappe/custom/doctype/custom_field/custom_field.py +108,"Insert Afte
DocType: Workflow State,circle-arrow-up,krug sa strelicom prema gore
apps/frappe/frappe/public/js/frappe/upload.js +156,Uploading...,Prijenos ...
DocType: Workflow State,italic,kurzivan
-apps/frappe/frappe/core/doctype/doctype/doctype.py +501,{0}: Cannot set Import without Create,{0} : Ne može se uvoz bez Stvoriti
+apps/frappe/frappe/core/doctype/doctype/doctype.py +501,{0}: Cannot set Import without Create,{0} : Ne može se uvesti bez stvaranja
apps/frappe/frappe/config/desk.py +21,Event and other calendars.,Događaj i druge kalendare.
apps/frappe/frappe/public/js/frappe/views/reports/reportview.js +614,Drag to sort columns,Povucite kako bi sortirali stupce
apps/frappe/frappe/print/page/print_format_builder/print_format_builder_column_selector.html +2,Widths can be set in px or %.,Širina može biti postavljena u px ili%.
@@ -355,7 +355,7 @@ DocType: Property Setter,Property Setter overrides a standard DocType or Field p
apps/frappe/frappe/core/doctype/user/user.py +380,Cannot Update: Incorrect / Expired Link.,Ne možete ažurirati : Nepravilan / istekla .
DocType: DocField,Set Only Once,Postaviti samo jednom
apps/frappe/frappe/core/doctype/user/user.py +315,Username {0} already exists,Korisničko ime {0} već postoji
-apps/frappe/frappe/core/doctype/doctype/doctype.py +528,{0}: Cannot set import as {1} is not importable,{0} : Ne može se uvesti kao {1} nije za uvoz
+apps/frappe/frappe/core/doctype/doctype/doctype.py +528,{0}: Cannot set import as {1} is not importable,{0} : Ne može se postaviti uvoz kao {1} nije za uvoz
DocType: Top Bar Item,"target = ""_blank""",target = "_blank"
DocType: Workflow State,hdd,HDD
DocType: ToDo,High,Visok
@@ -365,7 +365,7 @@ apps/frappe/frappe/desk/query_report.py +19,You don't have access to Report: {0}
DocType: User,Send Welcome Email,Pošalji e-mail dobrodošlice
apps/frappe/frappe/core/page/user_permissions/user_permissions.js +132,Upload CSV file containing all user permissions in the same format as Download.,Pošalji CSV datoteku koja sadrži sve korisničke dozvole u istom obliku kao preuzimanje.
apps/frappe/frappe/public/js/frappe/ui/filters/filters.js +359,Remove Filter,Uklonite filtar
-apps/frappe/frappe/config/setup.py +108,Bulk Rename,Bulk Rename
+apps/frappe/frappe/config/setup.py +108,Bulk Rename,Skupno preimenuj
DocType: DocField,Heading,Naslov
DocType: Workflow State,resize-vertical,resize-vertikalna
DocType: Contact Us Settings,Introductory information for the Contact Us Page,Uvodni podaci za stranicu Kontaktirajte nas
@@ -386,7 +386,7 @@ DocType: DocType,Sort Order,sortiranje
apps/frappe/frappe/custom/doctype/customize_form/customize_form.py +137,'In List View' not allowed for type {0} in row {1},'U prikazu popisa' nisu dopušteni za tip {0} u redu {1}
DocType: Custom Field,Select the label after which you want to insert new field.,Odaberite oznaku nakon što želite umetnuti novo polje.
DocType: Website Settings,Tweet will be shared via your user account (if specified),Tweet će se dijeliti putem vašeg korisničkog računa (ako je određeno)
-,Document Share Report,Dokument Podijeli Prijavi
+,Document Share Report,Dokument podijele prijava
DocType: User,Last Login,Zadnja prijava
apps/frappe/frappe/core/doctype/doctype/doctype.py +411,Fieldname is required in row {0},"Podataka, Naziv Polja je potrebno u redu {0}"
apps/frappe/frappe/print/page/print_format_builder/print_format_builder_column_selector.html +4,Column,Kolona
@@ -408,7 +408,7 @@ apps/frappe/frappe/public/js/frappe/ui/editor.html +12,Number list,Popis brojeva
apps/frappe/frappe/config/setup.py +84,Log of error during requests.,Prijava pogreške prilikom zahtjeva.
DocType: DocShare,Everyone,Svako
DocType: Workflow State,backward,Natrag
-apps/frappe/frappe/core/doctype/doctype/doctype.py +475,"{0}: Only one rule allowed with the same Role, Level and {1}","{0}: Samo jedno pravilo dopušten uz istu ulogu, razine i {1}"
+apps/frappe/frappe/core/doctype/doctype/doctype.py +475,"{0}: Only one rule allowed with the same Role, Level and {1}","{0}: Samo je jedno pravilo dopušteno za istu ulogu, razinu i {1}"
DocType: Workflow State,share,udio
apps/frappe/frappe/config/setup.py +102,Set numbering series for transactions.,Postavi brojni slijed za transakcije.
apps/frappe/frappe/desk/like.py +38,You cannot like something that you created,Ne možete se sviđa nešto što ste stvorili
@@ -610,7 +610,7 @@ DocType: Custom Field,Field Type,Vrsta polja
apps/frappe/frappe/utils/data.py +429,only.,samo.
apps/frappe/frappe/public/js/frappe/views/reports/reportview.js +455,Descending,Silazni
apps/frappe/frappe/email/receive.py +57,Invalid Mail Server. Please rectify and try again.,Nevažeći mail server. Ispravi i pokušaj ponovno.
-DocType: Dropbox Backup,Dropbox Backup,Dropbox Backup
+DocType: Dropbox Backup,Dropbox Backup,Dropbox backup
DocType: DocField,"For Links, enter the DocType as range.
For Select, enter list of Options, each on a new line.","Za Linkovi unesite DOCTYPE kao raspona. Za Odaberi unesite popisu opcija, svaki na novoj liniji."
DocType: Workflow State,film,film
@@ -704,7 +704,7 @@ DocType: DocPerm,If user is the owner,Ako korisnik je vlasnik
,Activity,Aktivnost
DocType: Note,"Help: To link to another record in the system, use ""#Form/Note/[Note Name]"" as the Link URL. (don't use ""http://"")","Pomoć: Za povezivanje na drugi zapis u sustavu, koristite "# Forma / Napomena / [Napomena ime]" kao URL veze. (Ne koristite "http://")"
DocType: Communication,Delayed,Odgođeno
-apps/frappe/frappe/config/setup.py +116,List of backups available for download,Popis kopija dostupna za preuzimanje
+apps/frappe/frappe/config/setup.py +116,List of backups available for download,Popis kopija dostupnih za preuzimanje
apps/frappe/frappe/templates/pages/login.html +61,Sign up,Prijavite se
apps/frappe/frappe/config/setup.py +222,Add fields to forms.,Dodaj polja obrascima.
DocType: File,rgt,RGT
@@ -832,7 +832,7 @@ DocType: Dropbox Backup,Dropbox Access Secret,Dropbox tajni pristup
apps/frappe/frappe/core/doctype/doctype/doctype.py +351,Fold must come before a Section Break,Preklopite moraju doći pred Odjeljak Break
apps/frappe/frappe/core/doctype/user/user.py +430,Not allowed to reset the password of {0},Nije dopušteno za resetiranje lozinke od {0}
DocType: Workflow State,hand-down,rukom prema dolje
-apps/frappe/frappe/core/doctype/doctype/doctype.py +494,{0}: Cannot set Cancel without Submit,{0} : Ne mogu postaviti Odustani bez Podnijeti
+apps/frappe/frappe/core/doctype/doctype/doctype.py +494,{0}: Cannot set Cancel without Submit,{0} : Ne može se postaviti Odustani bez Potvrdi
DocType: Website Theme,Theme,Tema
apps/frappe/frappe/desk/page/setup_wizard/setup_wizard.js +146,There were errors.,Bilo je grešaka .
DocType: DocType,Is Submittable,Je Submittable
@@ -862,7 +862,7 @@ apps/frappe/frappe/desk/page/setup_wizard/setup_wizard.js +115,Sit tight while y
apps/frappe/frappe/core/page/permission_manager/permission_manager_help.html +7,Roles can be set for users from their User page.,Uloge se mogu postaviti za korisnike iz svoje korisničke stranice .
DocType: DocField,Mandatory,Obavezno
apps/frappe/frappe/core/doctype/doctype/doctype.py +458,{0}: No basic permissions set,{0}: Nisu postavljene osnovne ovlasti
-apps/frappe/frappe/utils/backups.py +158,Download link for your backup will be emailed on the following email address: {0},Preuzmite link za Vašu backup će biti poslana na e-mail adresu: {0}
+apps/frappe/frappe/utils/backups.py +158,Download link for your backup will be emailed on the following email address: {0},Poveznica za Vašu sigurnosnu kopiju će biti poslana na email adresu: {0}
apps/frappe/frappe/core/page/permission_manager/permission_manager_help.html +14,"Meaning of Submit, Cancel, Amend","Značenje od Podnijeti, Odustati, Izmijeniti"
apps/frappe/frappe/desk/doctype/todo/todo_list.js +7,To Do,Podsjetnik
apps/frappe/frappe/public/js/frappe/ui/editor.html +25,Paragraph,Paragraf
@@ -1069,7 +1069,7 @@ apps/frappe/frappe/public/js/frappe/ui/toolbar/offcanvas_left_sidebar.html +31,R
apps/frappe/frappe/email/doctype/email_account/email_account_list.js +14,Default Sending,Zadana Slanje
DocType: Workflow State,volume-off,volumen-off
apps/frappe/frappe/public/js/frappe/form/footer/timeline_item.html +107,Liked by {0},Svidjelo mi se {0}
-,Download Backups,Preuzmite Sigurnosne kopije
+,Download Backups,Preuzmi sigurnosne kopije
apps/frappe/frappe/core/doctype/file/test_file.py +43,Home/Test Folder 1,Početna / Ispitni mapa 1
apps/frappe/frappe/core/page/data_import_tool/data_import_main.html +47,"Do not update, but insert new records.","Nemoj ažurirati, ali ubacite nove rekorde."
apps/frappe/frappe/public/js/frappe/form/footer/assign_to.js +160,Assign to me,Dodijeli mi
@@ -1476,7 +1476,7 @@ DocType: Workflow Transition,Action,Akcija
apps/frappe/frappe/core/page/data_import_tool/exporter.py +231,Info:,Info:
DocType: Custom Field,Permission Level,Razina ovlasti
DocType: User,Send Notifications for Transactions I Follow,Pošalji obavijesti o transakcijama | Prati
-apps/frappe/frappe/core/doctype/doctype/doctype.py +497,"{0}: Cannot set Submit, Cancel, Amend without Write","{0} : Ne mogu postaviti Podnijeti , Odustani , Izmijeniti bez zapisivanja"
+apps/frappe/frappe/core/doctype/doctype/doctype.py +497,"{0}: Cannot set Submit, Cancel, Amend without Write","{0} : Ne može se postaviti Potvrdi, Odustani, Izmijeni bez zapisivanja"
apps/frappe/frappe/public/js/frappe/form/footer/attachments.js +83,Are you sure you want to delete the attachment?,Jeste li sigurni da želite izbrisati privitak?
apps/frappe/frappe/core/page/permission_manager/permission_manager_help.html +8,Setup > User,Postavke > Korisnik
apps/frappe/frappe/model/base_document.py +483,"{0}: '{1}' will get truncated, as max characters allowed is {2}","{0}: '{1}' bi bio skraćen, kao max likovi dopušteno je {2}"
@@ -1701,7 +1701,7 @@ apps/frappe/frappe/core/doctype/docshare/docshare.py +49,{0} shared this documen
apps/frappe/frappe/desk/page/activity/activity_row.html +20,Commented on {0}: {1},Komentirano {0}: {1}
apps/frappe/frappe/core/page/user_permissions/user_permissions.js +248,These restrictions will apply for Document Types where 'Apply User Permissions' is checked for the permission rule and a field with this value is present.,"Ova ograničenja primjenjivat će se za vrste dokumenata, gdje 'Primijeni korisnik dozvole' se provjerava za vladavinu dozvole i polje s ovim vrijednosti prisutan."
DocType: Email Alert,Send alert if this field's value changes,Pošalji upozorenje ako se vrijednost mijenja ovom području je
-apps/frappe/frappe/print/page/print_format_builder/print_format_builder.js +102,Select a DocType to make a new format,Odaberite vrstu dokumenta kako bi novi format
+apps/frappe/frappe/print/page/print_format_builder/print_format_builder.js +102,Select a DocType to make a new format,Odaberite Doctype za kreiranje novog formata
apps/frappe/frappe/public/js/frappe/misc/pretty_date.js +40,just now,upravo sad
DocType: Module Def,Module Def,Definicija modula
apps/frappe/frappe/public/js/frappe/form/grid_form.html +7,Done,Pospremljen
@@ -1749,7 +1749,7 @@ DocType: Communication,Info,Info
DocType: Communication,Email,E-mail
apps/frappe/frappe/templates/includes/contact.js +30,Thank you for your message,Hvala vam za vašu poruku
apps/frappe/frappe/templates/pages/login.py +54,Invalid Login Token,Pogrešna Prijava token
-apps/frappe/frappe/public/js/frappe/misc/pretty_date.js +43,1 hour ago,prije 1 sat
+apps/frappe/frappe/public/js/frappe/misc/pretty_date.js +43,1 hour ago,Prije 1 sat
DocType: Website Settings,Home Page,Početna stranica
DocType: Error Snapshot,Parent Error Snapshot,Roditelj Greška Snimak
DocType: Email Alert,Filters,Filteri
@@ -1821,7 +1821,7 @@ DocType: User,Enabled,Omogućeno
DocType: Blog Category,Category Name,Naziv kategorije
DocType: Print Settings,PDF Settings,PDF postavke
apps/frappe/frappe/core/page/data_import_tool/data_import_tool.py +16,Column Name,Naziv Stupac
-apps/frappe/frappe/print/doctype/print_format/print_format.js +18,Make Default,Make Default
+apps/frappe/frappe/print/doctype/print_format/print_format.js +18,Make Default,Napravi zadani
apps/frappe/frappe/core/doctype/doctype/doctype.py +339,Fieldtype {0} for {1} cannot be indexed,Fieldtype {0} od {1} ne može biti indeksirana
DocType: Communication,Email Account,E-mail računa
DocType: Workflow State,Download,Preuzimanje
diff --git a/frappe/translations/ko.csv b/frappe/translations/ko.csv
index c8b144f039..96a6caa40c 100644
--- a/frappe/translations/ko.csv
+++ b/frappe/translations/ko.csv
@@ -36,7 +36,7 @@ apps/frappe/frappe/model/base_document.py +478,"{0}, Row {1}",{0} 행 {1}
apps/frappe/frappe/model/document.py +730,Beginning with,로 시작
apps/frappe/frappe/core/page/data_import_tool/exporter.py +51,Data Import Template,데이터 가져 오기 템플릿
apps/frappe/frappe/public/js/frappe/model/model.js +31,Parent,부모의
-DocType: About Us Settings,"""Team Members"" or ""Management""","""팀 회원""또는 ""관리"""
+DocType: About Us Settings,"""Team Members"" or ""Management""","""Team Members""또는 ""Management"""
apps/frappe/frappe/core/doctype/doctype/doctype.py +302,Default for 'Check' type of field must be either '0' or '1',필드의 '확인'유형의 기본 중 하나를 '0'또는 '1'이어야합니다
apps/frappe/frappe/public/js/frappe/misc/pretty_date.js +45,Yesterday,Yester일
apps/frappe/frappe/public/js/frappe/views/test_runner.js +10,Test Runner,테스트 러너
@@ -1168,7 +1168,7 @@ DocType: Web Form,Success Message,성공 메시지
DocType: DocType,User Cannot Search,사용자는 검색 할 수 없습니다
DocType: DocPerm,Apply this rule if the User is the Owner,사용자가 소유자 인 경우이 규칙 적용
apps/frappe/frappe/desk/page/activity/activity.js +73,Build Report,보고서보기 빌드
-apps/frappe/frappe/model/rename_doc.py +91,"{0} {1} does not exist, select a new target to merge","{0} {1}이 (가) 없습니다, 병합하는 새로운 대상을 선택"
+apps/frappe/frappe/model/rename_doc.py +91,"{0} {1} does not exist, select a new target to merge","{0} {1}이 (가) 없습니다, 새로운 대상을 선택해서 병합하세요."
apps/frappe/frappe/core/page/user_permissions/user_permissions.py +66,Cannot set permission for DocType: {0} and Name: {1},문서 종류에 대한 사용 권한을 설정할 수 없습니다 : {0}과 이름 : {1}
apps/frappe/frappe/public/js/frappe/form/footer/assign_to.js +158,Add to To Do,할일 추가
apps/frappe/frappe/public/js/frappe/list/list_sidebar.html +10,Assigned To Me,나에게 할당
@@ -1185,7 +1185,7 @@ apps/frappe/frappe/email/doctype/email_unsubscribe/email_unsubscribe.py +21,{0}
apps/frappe/frappe/public/js/frappe/views/communication.js +69,Communication Medium,통신 매체
DocType: Website Settings,Banner HTML,배너 HTML
DocType: Error Snapshot,Pyver,Pyver
-apps/frappe/frappe/model/base_document.py +451,"{0} {1} cannot be ""{2}"". It should be one of ""{3}""","{0} {1}이 될 수 없습니다 ""{2}"".그것은 ""{3}""중 하나 여야합니다"
+apps/frappe/frappe/model/base_document.py +451,"{0} {1} cannot be ""{2}"". It should be one of ""{3}""","{0} {1} ""{2}""가 될 수 없습니다. ""{3}""중 하나입니다."
apps/frappe/frappe/utils/data.py +516,{0} or {1},{0} 또는 {1}
apps/frappe/frappe/core/doctype/user/user.py +160,Password Update,암호 업데이트
DocType: Workflow State,trash,쓰레기
@@ -1294,7 +1294,7 @@ DocType: Workflow State,ok-sign,확인 서명
apps/frappe/frappe/public/js/frappe/form/toolbar.js +126,Duplicate,복제
apps/frappe/frappe/public/js/frappe/views/reports/grid_report.js +305,From Date must be before To Date,날짜 누계 이전이어야합니다
apps/frappe/frappe/email/doctype/email_alert/email_alert.py +21,Please specify which value field must be checked,값 필드를 선택해야하는 이유를 적어주세요
-apps/frappe/frappe/core/page/data_import_tool/exporter.py +69,"""Parent"" signifies the parent table in which this row must be added","""부모는""이 행을 추가해야하는 부모 테이블을 의미"
+apps/frappe/frappe/core/page/data_import_tool/exporter.py +69,"""Parent"" signifies the parent table in which this row must be added","""상위항목"" 테이블에서 열이 추가되어야 합니다."
DocType: Website Theme,Apply Style,스타일 적용
apps/frappe/frappe/public/js/frappe/form/form_sidebar.html +39,Shared With,함께 공유
,Modules Setup,모듈 설치
@@ -1517,7 +1517,7 @@ apps/frappe/frappe/public/js/frappe/list/listview.js +342,2 days ago,1 일 전
apps/frappe/frappe/config/website.py +64,Categorize blog posts.,블로그 게시물을 분류합니다.
DocType: Workflow State,Time,시간
DocType: DocField,Attach,첨부
-apps/frappe/frappe/core/doctype/doctype/doctype.py +386,{{{0}}} is not a valid fieldname pattern. It should be {{field_name}}.,{{{0}}} 유효한 필드 이름 패턴이 아니다. 그것은해야한다 {{FIELD_NAME}}.
+apps/frappe/frappe/core/doctype/doctype/doctype.py +386,{{{0}}} is not a valid fieldname pattern. It should be {{field_name}}.,{{{0}}} 유효한 필드명 유형이 아닙니다. {{field_name}} 이어야 합니다.
DocType: DocType,Permission Rules,권한 규칙
apps/frappe/frappe/public/js/frappe/form/toolbar.js +119,Links,링크
apps/frappe/frappe/model/base_document.py +369,Value missing for,값을 누락
@@ -1724,7 +1724,7 @@ DocType: DocType,Naming,Naming
DocType: Event,Every Year,매년
apps/frappe/frappe/public/js/frappe/list/list_item_main_head.html +23,Select All,모두 선택
apps/frappe/frappe/public/js/frappe/form/linked_with.js +86,Not Linked to any record.,모든 레코드에 연결되어 있지.
-apps/frappe/frappe/public/js/frappe/form/workflow.js +32, by Role ,역할에 따라
+apps/frappe/frappe/public/js/frappe/form/workflow.js +32, by Role ,역할별
apps/frappe/frappe/core/doctype/user/user.py +406,Registered but disabled.,등록 만 사용할.
apps/frappe/frappe/public/js/frappe/list/doclistview.js +538,Delete permanently?,영구적으로 삭제 하시겠습니까?
apps/frappe/frappe/public/js/frappe/ui/toolbar/awesome_bar.js +95,Search in a document type,문서 유형의 검색
@@ -1745,7 +1745,7 @@ apps/frappe/frappe/public/js/frappe/views/pageview.js +110,Sorry! You are not pe
DocType: Workflow State,bell,벨
apps/frappe/frappe/public/js/frappe/form/set_sharing.html +39,Share this document with,이 문서를 공유하기
apps/frappe/frappe/desk/page/activity/activity.js +203,Jun,6월
-apps/frappe/frappe/utils/nestedset.py +235,{0} {1} cannot be a leaf node as it has children,이 아이를 가지고 {0} {1} 잎 노드가 될 수 없습니다
+apps/frappe/frappe/utils/nestedset.py +235,{0} {1} cannot be a leaf node as it has children,{0} {1} 은 가지 노드가 될 수 없습니다. 하위 항목을 가지고 있습니다.
DocType: Communication,Info,정보
DocType: Communication,Email,이메일
apps/frappe/frappe/templates/includes/contact.js +30,Thank you for your message,메시지를 수신했습니다
diff --git a/frappe/translations/nl.csv b/frappe/translations/nl.csv
index bafc498dcc..4eb2725750 100644
--- a/frappe/translations/nl.csv
+++ b/frappe/translations/nl.csv
@@ -44,7 +44,7 @@ DocType: Email Account,Enable Incoming,Inschakelen Binnenkomend
DocType: Workflow State,Danger,Gevaar
apps/frappe/frappe/templates/pages/login.html +35,Email Address,E-mailadres
DocType: Workflow State,th-large,th-large
-DocType: Communication,Unread Notification Sent,Ongelezen Notification Sent
+DocType: Communication,Unread Notification Sent,Melding 'Ongelezen' verstuurd
apps/frappe/frappe/public/js/frappe/misc/tools.js +8,Export not allowed. You need {0} role to export.,Exporteren niet toegestaan. Je hebt rol {0} nodig om te kunnen exporteren .
apps/frappe/frappe/public/js/frappe/ui/filters/edit_filter.html +11,Not Like,Niet zoals
apps/frappe/frappe/custom/doctype/customize_form/customize_form.js +154,Set the display label for the field,Stel het display label voor het veld
@@ -59,8 +59,8 @@ apps/frappe/frappe/public/js/frappe/form/link_selector.js +21,Select {0},Selecte
DocType: Print Settings,Classic,Klassiek
apps/frappe/frappe/public/js/frappe/views/reports/query_report.js +49,For ranges,Voor bereiken
DocType: Workflow State,indent-right,inspringing-rechts
-apps/frappe/frappe/public/js/frappe/ui/upload.html +12,Web Link,Web Link
-apps/frappe/frappe/public/js/frappe/misc/pretty_date.js +41,1 minute ago,1 uur geleden
+apps/frappe/frappe/public/js/frappe/ui/upload.html +12,Web Link,Link
+apps/frappe/frappe/public/js/frappe/misc/pretty_date.js +41,1 minute ago,1 minuut geleden
apps/frappe/frappe/core/page/data_import_tool/data_import_main.html +33,"Recommended bulk editing records via import, or understanding the import format.","Aanbevolen bulk bewerken verslagen via import, of het begrijpen van de import-formaat."
apps/frappe/frappe/core/page/permission_manager/permission_manager_help.html +36,"Apart from System Manager, roles with Set User Permissions right can set permissions for other users for that Document Type.","Afgezien van de System Manager, rollen met Set User Permissions recht kunt toestemmingen voor andere gebruikers voor dat type document."
DocType: Company History,Company History,Bedrijf Geschiedenis
@@ -144,7 +144,7 @@ DocType: Dropbox Backup,Dropbox Access Key,Dropbox Access Key
DocType: Workflow State,headphones,hoofdtelefoon
DocType: Bulk Email,Bulk Email records.,Bulk Email records.
DocType: Email Account,e.g. replies@yourcomany.com. All replies will come to this inbox.,bijv. antwoord@uwbedrijf.nl. Alle antwoorden zullen op deze inbox binnenkomen.
-apps/frappe/frappe/templates/includes/login/login.js +33,Valid email and name required,Geldige e-mail en naam vereist
+apps/frappe/frappe/templates/includes/login/login.js +33,Valid email and name required,Geldig e-mailadres en naam vereist
DocType: DocType,Hide Heading,Verberg rubriek
apps/frappe/frappe/config/core.py +17,Groups of DocTypes,Groepen DocTypes
DocType: Workflow State,remove-circle,remove-cirkel
@@ -158,7 +158,7 @@ DocType: DocType,Show this field as title,Toon dit gebied als titel
apps/frappe/frappe/model/db_schema.py +539,Fieldname {0} cannot have special characters like {1},"Veldnaam {0} kan geen speciale tekens, zoals hebben {1}"
apps/frappe/frappe/desk/page/setup_wizard/setup_wizard.js +245,Select Your Language,Selecteer uw taal
apps/frappe/frappe/model/document.py +434,Error: Document has been modified after you have opened it,Fout: Document is gewijzigd nadat u het hebt geopend
-apps/frappe/frappe/core/doctype/doctype/doctype.py +522,{0}: Cannot set Assign Submit if not Submittable,{0} : Kan geen toewijzen indienen indien niet Submittable
+apps/frappe/frappe/core/doctype/doctype/doctype.py +522,{0}: Cannot set Assign Submit if not Submittable,"{0} : Kan niet op ""In te dienen"" gezet worden indien niet indienbaar"
DocType: Social Login Keys,Facebook,Facebook
apps/frappe/frappe/templates/pages/list.py +46,"Filtered by ""{0}""",Gefilterd op "{0}"
DocType: DocType,Administrator,Beheerder
@@ -226,7 +226,7 @@ DocType: Blogger,Will be used in url (usually first name).,Wordt gebruikt in url
apps/frappe/frappe/client.py +63,Can not edit Read Only fields,Kan Alleen-lezen velden niet bewerken
apps/frappe/frappe/print/page/print_format_builder/print_format_builder.js +463,Edit Heading,Bewerken Koptekst
DocType: File,File URL,File-URL
-apps/frappe/frappe/desk/doctype/event/event.py +68,Upcoming Events for Today,Gebeurtenissen voor vandaag
+apps/frappe/frappe/desk/doctype/event/event.py +68,Upcoming Events for Today,Geplande evenementen voor vandaag
DocType: Email Alert Recipient,Email By Document Field,E-mail Door Document Field
apps/frappe/frappe/email/receive.py +61,Cannot connect: {0},Kan geen verbinding maken: {0}
apps/frappe/frappe/utils/nestedset.py +218,Merging is only possible between Group-to-Group or Leaf Node-to-Leaf Node,Samenvoegen is alleen mogelijk tussen de Groepen of tussen Blad Nodes.
@@ -268,7 +268,7 @@ DocType: DocField,Link,Link
apps/frappe/frappe/utils/file_manager.py +93,No file attached,Geen bestand bijgevoegd
DocType: Version,Version,Versie
DocType: User,Fill Screen,Scherm vullen
-apps/frappe/frappe/public/js/frappe/views/reports/query_report.js +462,"Unable to display this tree report, due to missing data. Most likely, it is being filtered out due to permissions.","Niet in staat om deze boom rapport weer te geven, als gevolg van ontbrekende gegevens. Waarschijnlijk wordt ze uitgefilterd vanwege permissies."
+apps/frappe/frappe/public/js/frappe/views/reports/query_report.js +462,"Unable to display this tree report, due to missing data. Most likely, it is being filtered out due to permissions.",Niet in staat om dit boomrapport weer te geven omdat er gegevens ontbreken. Waarschijnlijk wordt ze uitgefilterd vanwege permissies.
apps/frappe/frappe/core/doctype/role/role.js +9,Edit Permissions,Bewerken Machtigingen
apps/frappe/frappe/public/js/frappe/form/grid.js +271,Edit via Upload,Bewerken via uploaden
apps/frappe/frappe/public/js/frappe/ui/toolbar/awesome_bar.js +94,"document type..., e.g. customer","documenttype ..., bijvoorbeeld klant"
@@ -411,7 +411,7 @@ DocType: Workflow State,backward,achterwaarts
apps/frappe/frappe/core/doctype/doctype/doctype.py +475,"{0}: Only one rule allowed with the same Role, Level and {1}","{0}: Slechts één regel toegestaan met dezelfde rol, niveau en {1}"
DocType: Workflow State,share,aandeel
apps/frappe/frappe/config/setup.py +102,Set numbering series for transactions.,Instellen nummerreeksen voor transacties.
-apps/frappe/frappe/desk/like.py +38,You cannot like something that you created,Je kunt niet als iets dat je gemaakt
+apps/frappe/frappe/desk/like.py +38,You cannot like something that you created,U kan niets 'liken' dat u zelf gemaakt hebt.
DocType: User,Last IP,Laatste IP-
DocType: DocPerm,Filter records based on User Permissions defined for a user,Records filteren op basis van Gebruikersmachtigingen gedefinieerd voor een gebruiker
apps/frappe/frappe/public/js/frappe/ui/editor.html +46,Insert picture (or just drag & drop),Plaats foto (of sleep & gewoon drop)
@@ -426,7 +426,7 @@ apps/frappe/frappe/public/js/frappe/form/form_sidebar.html +24,Attachments,Toebe
apps/frappe/frappe/website/doctype/web_form/web_form.py +74,You don't have the permissions to access this document,U hebt niet de rechten om toegang te krijgen tot dit document
DocType: Email Alert,Value Changed,Waarde Veranderd
apps/frappe/frappe/model/base_document.py +287,Duplicate name {0} {1},Dubbele naam {0} {1}
-DocType: Web Form Field,Web Form Field,Web Form Field
+DocType: Web Form Field,Web Form Field,Webformulier invulveld
apps/frappe/frappe/custom/doctype/customize_form/customize_form.js +197,Hide field in Report Builder,Veld verbergen in Report Builder
apps/frappe/frappe/templates/generators/blog_post.html +25,This post is filed under {0},Dit bericht is gearchiveerd onder {0}
apps/frappe/frappe/print/page/print_format_builder/print_format_builder_field.html +14,Edit HTML,Bewerken HTML
@@ -466,7 +466,7 @@ apps/frappe/frappe/core/doctype/user/user.py +425,Registration Details Emailed.,
DocType: Workflow State,Stop,stoppen
DocType: Top Bar Item,Link to the page you want to open. Leave blank if you want to make it a group parent.,Link naar de pagina die u wilt openen. Laat leeg als u wilt dat een groep ouders te maken.
DocType: DocType,Is Single,Is Single
-apps/frappe/frappe/email/bulk.py +231,{0} has left the conversation in {1} {2},{0} is het gesprek linker {1} {2}
+apps/frappe/frappe/email/bulk.py +231,{0} has left the conversation in {1} {2},{0} heeft gesprek verlaten in {1} {2}
DocType: Blogger,User ID of a Blogger,Gebruikers-ID van een Blogger
apps/frappe/frappe/core/doctype/user/user.py +201,There should remain at least one System Manager,Er moet ten minste één System Manager blijven
DocType: Workflow State,circle-arrow-right,cirkel-pijl-rechts
@@ -587,12 +587,12 @@ apps/frappe/frappe/public/js/frappe/list/list_sidebar_stat.html +5,No records ta
DocType: User,Send Password Update Notification,Stuur wachtwoord-update
apps/frappe/frappe/public/js/legacy/form.js +62,"Allowing DocType, DocType. Be careful!","Het toestaan DocType , DocType . Wees voorzichtig !"
apps/frappe/frappe/config/core.py +32,"Customized Formats for Printing, Email","Aangepaste Formaten voor afdrukken, e-mail"
-apps/frappe/frappe/public/js/frappe/desk.js +308,Updated To New Version,Bijgewerkt Aan Nieuwe versie
+apps/frappe/frappe/public/js/frappe/desk.js +308,Updated To New Version,Geupdate naar nieuwe versie
DocType: DocField,Depends On,Hangt af van
DocType: DocPerm,Additional Permissions,Additionele Machtigingen
apps/frappe/frappe/core/page/data_import_tool/data_import_tool.py +13,Start entering data below this line,Beginnen met het invoeren onder deze lijn
DocType: Workflow State,retweet,retweet
-apps/frappe/frappe/core/page/data_import_tool/data_import_main.html +40,Update the template and save in CSV (Comma Separate Values) format before attaching.,Actualiseren van de template en opslaan in CSV (Comma Gescheiden Waarden) formaat voor het vastmaken.
+apps/frappe/frappe/core/page/data_import_tool/data_import_main.html +40,Update the template and save in CSV (Comma Separate Values) format before attaching.,Werk de template bij en sla op CSV (Comma Gescheiden Waarden) formaat om als bijlage bij te voegen.
apps/frappe/frappe/custom/doctype/customize_form/customize_form.js +163,Specify the value of the field,Geef de waarde van het veld
DocType: Report,Disabled,Uitgezet
apps/frappe/frappe/desk/page/activity/activity.js +203,May,Mei
@@ -694,7 +694,7 @@ DocType: Website Settings,Hide Footer Signup,Verberg Footer Inschrijven
apps/frappe/frappe/core/doctype/report/report.js +16,Write a Python file in the same folder where this is saved and return column and result.,Schrijf een Python bestand in dezelfde map waarin deze is opgeslagen en geef kolom en resultaat.
DocType: DocType,Sort Field,Sorteren Veld
apps/frappe/frappe/public/js/frappe/ui/filters/filters.js +355,Edit Filter,Filter bewerken
-apps/frappe/frappe/templates/pages/404.html +12,"We are very sorry for this, but the page you are looking for is missing (this could be because of a typo in the address) or moved.","We zijn erg jammer voor dit, maar de pagina die u zoekt ontbreekt (dit kan worden als gevolg van een typefout in het adres) of verplaatst."
+apps/frappe/frappe/templates/pages/404.html +12,"We are very sorry for this, but the page you are looking for is missing (this could be because of a typo in the address) or moved.","We zijn erg jammer voor dit, maar de pagina die u zoekt ontbreekt (misschien als gevolg van een typefout in het adres) of verplaatst."
apps/frappe/frappe/core/doctype/doctype/doctype.py +265,Field {0} of type {1} cannot be mandatory,Veld {0} van type {1} kan niet verplicht zijn
DocType: System Settings,"eg. If Apply User Permissions is checked for Report DocType but no User Permissions are defined for Report for a User, then all Reports are shown to that User","bijv. Als Breng Gebruikersmachtigingen wordt gecontroleerd rapport DocType maar geen gebruiker machtigingen worden gedefinieerd voor Rapport voor een gebruiker, dan worden alle rapporten worden aangetoond dat de Gebruiker"
DocType: System Settings,Session Expiry Mobile,Session Vervaldatum Mobile
@@ -753,13 +753,13 @@ DocType: Async Task,Async Task,Async Task
DocType: Workflow State,picture,afbeelding
apps/frappe/frappe/templates/pages/complete_signup.html +22,Complete,Compleet
DocType: Print Format,Custom HTML Help,Aangepaste HTML Help
-apps/frappe/frappe/core/page/user_permissions/user_permissions.js +306,Add A New Restriction,Voeg een nieuwe beperking
+apps/frappe/frappe/core/page/user_permissions/user_permissions.js +306,Add A New Restriction,Voeg een nieuwe beperking toe
DocType: Workflow Transition,Next State,Volgend Stadium
apps/frappe/frappe/public/js/frappe/ui/editor.html +56,Align Left (Ctrl/Cmd+L),Links uitlijnen (Ctrl / Cmd + L)
DocType: User,Block Modules,Block Modules
apps/frappe/frappe/model/db_schema.py +137,Reverting length to {0} for '{1}' in '{2}'; Setting the length as {3} will cause truncation of data.,Terugdraaien lengte {0} voor '{1}' in '{2}'; Het instellen van de lengte als {3} zal afkappen van gegevens veroorzaken.
DocType: Print Format,Custom CSS,Custom CSS
-apps/frappe/frappe/public/js/frappe/form/footer/timeline.html +4,Add a comment,Voeg een reactie
+apps/frappe/frappe/public/js/frappe/form/footer/timeline.html +4,Add a comment,Voeg een reactie toe
apps/frappe/frappe/model/rename_doc.py +350,Ignored: {0} to {1},Genegeerd: {0} tot {1}
apps/frappe/frappe/config/setup.py +79,Log of error on automated events (scheduler).,Log van fout op geautomatiseerde evenementen ( scheduler ) .
apps/frappe/frappe/utils/csvutils.py +74,Not a valid Comma Separated Value (CSV File),Geen geldige waarde ( CSV-file )
@@ -767,7 +767,7 @@ DocType: Email Account,Default Incoming,Standaard Inkomende
DocType: Workflow State,repeat,herhalen
DocType: Website Settings,Banner,Banner
apps/frappe/frappe/public/js/frappe/ui/toolbar/awesome_bar.js +88,Help on Search,Hulp bij zoeken
-DocType: User,Uncheck modules to hide from user's desktop,Haal het vinkje weg modules te verbergen van desktop gebruiker
+DocType: User,Uncheck modules to hide from user's desktop,Vink modules af om ze te verbergen van het bureaublad
DocType: DocType,Hide Copy,Verberg Copy
apps/frappe/frappe/core/doctype/user/user.js +162,Clear all roles,Wis alle rollen
apps/frappe/frappe/model/base_document.py +332,{0} must be unique,{0} moet uniek zijn
@@ -816,7 +816,7 @@ apps/frappe/frappe/core/doctype/doctype/doctype.py +261,Fieldname {0} appears mu
DocType: Bulk Email,Expired,Verlopen
DocType: DocType,System,Systeem
apps/frappe/frappe/templates/pages/login.html +63,Have an account? Login,Een account hebben? Aanmelden
-apps/frappe/frappe/public/js/legacy/print_format.js +144,Unknown Print Format: {0},Onbekend Print Format: {0}
+apps/frappe/frappe/public/js/legacy/print_format.js +144,Unknown Print Format: {0},Onbekend afdrukformaat: {0}
DocType: Workflow State,arrow-down,arrow-down
apps/frappe/frappe/public/js/frappe/ui/tree.js +122,Collapse,ineenstorting
apps/frappe/frappe/model/delete_doc.py +133,User not allowed to delete {0}: {1},Gebruiker niet toegestaan om {0} te verwijderen: {1}
@@ -995,7 +995,7 @@ DocType: Print Settings,With Letterhead,Met briefhoofd
apps/frappe/frappe/email/smtp.py +177,Invalid Outgoing Mail Server or Port,Ongeldige uitgaande Server of Poort
DocType: DocPerm,Write,Schrijven
apps/frappe/frappe/core/doctype/report/report.py +29,Only Administrator allowed to create Query / Script Reports,Alleen Beheerder toegestaan om Query / Script Rapporten maken
-apps/frappe/frappe/public/js/frappe/form/save.js +13,Updating,Updaten
+apps/frappe/frappe/public/js/frappe/form/save.js +13,Updating,Bijwerken
DocType: File,Preview,Voorbeeld
DocType: Customize Form,Use this fieldname to generate title,Gebruik deze veldnaam om de titel te genereren
apps/frappe/frappe/public/js/frappe/views/communication.js +80,Select Attachments,Selecteer Bijlagen
@@ -1023,13 +1023,13 @@ DocType: Workflow Document State,Update Field,Veld bijwerken
apps/frappe/frappe/desk/page/applications/applications.js +50,Regional Extensions,Regionale Extensions
apps/frappe/frappe/email/doctype/email_account/email_account.py +348,Leave this conversation,Laat dit gesprek
apps/frappe/frappe/model/base_document.py +406,Options not set for link field {0},Opties niet ingesteld voor link veld {0}
-apps/frappe/frappe/custom/doctype/customize_form/customize_form.py +151,You cannot unset 'Read Only' for field {0},Je kan niet uitgeschakeld 'Read Only' voor in het veld {0}
+apps/frappe/frappe/custom/doctype/customize_form/customize_form.py +151,You cannot unset 'Read Only' for field {0},Je kan 'Alleen lezen' niet uitschakelen voor het veld {0}
apps/frappe/frappe/desk/page/setup_wizard/setup_wizard_page.html +18,Complete Setup,Voltooien Setup
DocType: Workflow State,asterisk,sterretje
apps/frappe/frappe/core/page/data_import_tool/exporter.py +61,Please do not change the template headings.,Gelieve niet de sjabloon rubrieken veranderen.
DocType: Communication,Linked,Linked
apps/frappe/frappe/public/js/frappe/form/save.js +84,Enter the name of the new {0},Geef de naam van de nieuwe {0}
-apps/frappe/frappe/config/desk.py +39,Activity log of all users.,Activiteit logboek van alle gebruikers.
+apps/frappe/frappe/config/desk.py +39,Activity log of all users.,Activiteitenlogboek van alle gebruikers.
DocType: Workflow State,shopping-cart,shopping-cart
DocType: Social Login Keys,Google,Google
DocType: Workflow State,Inverse,Omgekeerde
@@ -1171,7 +1171,7 @@ apps/frappe/frappe/desk/page/activity/activity.js +73,Build Report,Maak Rapport
apps/frappe/frappe/model/rename_doc.py +91,"{0} {1} does not exist, select a new target to merge","{0} {1} bestaat niet, kies een nieuw doel om samen te voegen"
apps/frappe/frappe/core/page/user_permissions/user_permissions.py +66,Cannot set permission for DocType: {0} and Name: {1},Kan geen toestemming voor DocType : {0} en Naam : {1}
apps/frappe/frappe/public/js/frappe/form/footer/assign_to.js +158,Add to To Do,Toevoegen aan To Do
-apps/frappe/frappe/public/js/frappe/list/list_sidebar.html +10,Assigned To Me,Assigned To Me
+apps/frappe/frappe/public/js/frappe/list/list_sidebar.html +10,Assigned To Me,Aan mij toegewezen
apps/frappe/frappe/public/js/frappe/ui/messages.js +178,Verify Password,Bevestig wachtwoord
apps/frappe/frappe/core/page/modules_setup/modules_setup.js +55,There were errors,Er zijn fouten opgetreden.
apps/frappe/frappe/core/doctype/communication/communication.js +19,Close,Sluiten
@@ -1368,7 +1368,7 @@ DocType: Email Account,Signature,Handtekening
apps/frappe/frappe/public/js/frappe/form/share.js +112,Share With,Delen met
apps/frappe/frappe/core/doctype/user/user.js +130,Loading,Laden
apps/frappe/frappe/config/setup.py +199,"Enter keys to enable login via Facebook, Google, GitHub.","Voer sleutels in om toegang in te schakelen via Facebook, Google, GitHub."
-apps/frappe/frappe/public/js/frappe/ui/tags.js +21,Add a tag,Voeg een tag
+apps/frappe/frappe/public/js/frappe/ui/tags.js +21,Add a tag,Voeg een tag toe
apps/frappe/frappe/public/js/frappe/form/control.js +1000,Please attach a file first.,Eerst een bestand toevoegen.
apps/frappe/frappe/model/naming.py +156,"There were some errors setting the name, please contact the administrator","Er zijn fouten opgetreden bij het instellen van de naam, neemt u aub contact op met de beheerder"
DocType: Website Slideshow Item,Website Slideshow Item,Website Diashow Item
@@ -1421,7 +1421,7 @@ DocType: Workflow,"Different ""States"" this document can exist in. Like ""Open"
apps/frappe/frappe/utils/verified_command.py +40,This link is invalid or expired. Please make sure you have pasted correctly.,Deze koppeling is ongeldig of verlopen. Zorg ervoor dat u correct hebt geplakt.
DocType: Web Page,Slideshow,Diashow
DocType: Workflow State,Search,Zoek
-DocType: Web Form,Web Form Fields,Web Form Fields
+DocType: Web Form,Web Form Fields,Webformulier invulvelden
DocType: Website Theme,Top Bar Text Color,Top Bar Tekst Kleur
apps/frappe/frappe/core/doctype/file/file.py +327,File '{0}' not found,Bestand '{0}' niet gevonden
apps/frappe/frappe/print/page/print_format_builder/print_format_builder.js +370,Remove Section,Verwijder Sectie
@@ -1480,7 +1480,7 @@ DocType: User,Send Notifications for Transactions I Follow,Stuur Meldingen voor
apps/frappe/frappe/core/doctype/doctype/doctype.py +497,"{0}: Cannot set Submit, Cancel, Amend without Write","{0} : Kan niet Indienen, Annuleren, Wijzigen zonder te Schrijven"
apps/frappe/frappe/public/js/frappe/form/footer/attachments.js +83,Are you sure you want to delete the attachment?,Weet u zeker dat u de bijlage wilt verwijderen?
apps/frappe/frappe/core/page/permission_manager/permission_manager_help.html +8,Setup > User,Instellingen > Gebruiker
-apps/frappe/frappe/model/base_document.py +483,"{0}: '{1}' will get truncated, as max characters allowed is {2}","{0}: {1} 'zal afgekapt krijgen, als maximum toegestane tekens is {2}"
+apps/frappe/frappe/model/base_document.py +483,"{0}: '{1}' will get truncated, as max characters allowed is {2}","{0}: {1} 'zal afgekort worden, het maximum toegestaan aantal tekens is {2}"
apps/frappe/frappe/templates/emails/password_reset.html +6,Thank you,Dankjewel
apps/frappe/frappe/public/js/frappe/form/save.js +11,Saving,Opslaan
DocType: Print Settings,Print Style Preview,Print Stijl Voorbeeld
@@ -1540,7 +1540,7 @@ DocType: DocType,Child Tables are shown as a Grid in other DocTypes.,Onderliggen
DocType: Website Settings,"If checked, the Home page will be the default Item Group for the website.","Indien aangevinkt, zal de Home pagina zijn de standaard Item Groep voor de website."
DocType: Blog Post,"Description for listing page, in plain text, only a couple of lines. (max 140 characters)","Beschrijving van lijst pagina, in platte tekst, slechts een paar regels. (Max 140 tekens)"
apps/frappe/frappe/public/js/frappe/ui/toolbar/offcanvas_left_sidebar.html +29,Forums,Forums
-apps/frappe/frappe/core/page/user_permissions/user_permissions.js +302,Add A User Restriction,Een gebruiker toevoegen Restriction
+apps/frappe/frappe/core/page/user_permissions/user_permissions.js +302,Add A User Restriction,Een gebruikersrestrictie toevoegen
DocType: DocType,Name Case,Naam Case
apps/frappe/frappe/public/js/frappe/form/share.js +26,Shared with everyone,Gedeeld met iedereen
apps/frappe/frappe/model/base_document.py +365,Data missing in table,Data ontbreekt in tabel
@@ -1574,9 +1574,9 @@ DocType: DocField,Allow on Submit,Laat op Submit
apps/frappe/frappe/core/page/desktop/desktop.js +60,All Applications,Alle Toepassingen
DocType: Error Snapshot,Exception Type,Uitzondering Type
apps/frappe/frappe/public/js/frappe/views/reports/reportview.js +425,Pick Columns,Kies Kolommen
-DocType: Web Page,Add code as <script>,Voeg code toe als