@@ -9,7 +9,7 @@ Welcome to the Frappe Framework issue tracker! Before creating an issue, please | |||
1. This tracker should only be used to report bugs and request features / enhancements to Frappe | |||
- For questions and general support, use https://stackoverflow.com/questions/tagged/frappe | |||
- For documentation issues, refer to https://frappe.io/docs/user/en or the developer cheetsheet https://github.com/frappe/frappe/wiki/Developer-Cheatsheet | |||
- For documentation issues, refer to https://frappeframework.com/docs/user/en or the developer cheetsheet https://github.com/frappe/frappe/wiki/Developer-Cheatsheet | |||
2. Use the search function before creating a new issue. Duplicates will be closed and directed to | |||
the original discussion. | |||
3. When making a bug report, make sure you provide all required information. The easier it is for | |||
@@ -9,7 +9,7 @@ Welcome to the Frappe Framework issue tracker! Before creating an issue, please | |||
1. This tracker should only be used to report bugs and request features / enhancements to Frappe | |||
- For questions and general support, refer to https://stackoverflow.com/questions/tagged/frappe | |||
- For documentation issues, use https://frappe.io/docs/user/en or the developer cheetsheet https://github.com/frappe/frappe/wiki/Developer-Cheatsheet | |||
- For documentation issues, use https://frappeframework.com/docs/user/en or the developer cheetsheet https://frappeframework.com/docs/user/en/bench/resources/bench-commands-cheatsheet | |||
2. Use the search function before creating a new issue. Duplicates will be closed and directed to | |||
the original discussion. | |||
3. When making a feature request, make sure to be as verbose as possible. The better you convey your message, the greater the drive to make it happen. | |||
@@ -12,7 +12,7 @@ for questions about using `ERPNext`: https://discuss.erpnext.com | |||
for questions about using `bench`, probably the best place to start is the [bench repo](https://github.com/frappe/bench) | |||
For documentation issues, use the [Frappe Framework Documentation](https://frappe.io/docs/user/en) or the [developer cheetsheet](https://github.com/frappe/frappe/wiki/Developer-Cheatsheet) | |||
For documentation issues, use the [Frappe Framework Documentation](https://frappeframework.com/docs) or the [developer cheetsheet](https://github.com/frappe/frappe/wiki/Developer-Cheatsheet) | |||
For a slightly outdated yet informative developer guide: https://www.youtube.com/playlist?list=PL3lFfCEoMxvzHtsZHFJ4T3n5yMM3nGJ1W | |||
@@ -22,7 +22,7 @@ for _file in files: | |||
print(f'A syntax error has been discovered at line number: {num}') | |||
print(f'Syntax error occurred with: {line}') | |||
if errors_encounter > 0: | |||
print('You can visit "https://frappe.io/docs/user/en/translations" to resolve this error.') | |||
print('You can visit "https://frappeframework.com/docs/user/en/translations" to resolve this error.') | |||
assert 1+1 == 3 | |||
else: | |||
print('Good To Go!') |
@@ -17,7 +17,7 @@ | |||
<a href="https://travis-ci.com/frappe/frappe"> | |||
<img src="https://travis-ci.com/frappe/frappe.svg?branch=develop"> | |||
</a> | |||
<a href='https://frappe.io/docs'> | |||
<a href='https://frappeframework.com/docs'> | |||
<img src='https://img.shields.io/badge/docs-📖-7575FF.svg?style=flat-square'/> | |||
</a> | |||
<a href='https://www.codetriage.com/frappe/frappe'> | |||
@@ -188,7 +188,7 @@ def contact_query(doctype, txt, searchfield, start, page_len, filters): | |||
from frappe.desk.reportview import get_match_cond | |||
if not frappe.get_meta("Contact").get_field(searchfield)\ | |||
or searchfield not in frappe.db.DEFAULT_COLUMNS: | |||
and searchfield not in frappe.db.DEFAULT_COLUMNS: | |||
return [] | |||
link_doctype = filters.pop('link_doctype') | |||
@@ -163,6 +163,7 @@ | |||
}, | |||
{ | |||
"default": "0", | |||
"depends_on": "eval:!in_list(['Table', 'Table MultiSelect'], doc.fieldtype);", | |||
"fieldname": "in_preview", | |||
"fieldtype": "Check", | |||
"label": "In Preview" | |||
@@ -475,9 +476,10 @@ | |||
} | |||
], | |||
"idx": 1, | |||
"index_web_pages_for_search": 1, | |||
"istable": 1, | |||
"links": [], | |||
"modified": "2020-02-06 09:06:25.224413", | |||
"modified": "2020-08-28 11:28:21.252853", | |||
"modified_by": "Administrator", | |||
"module": "Core", | |||
"name": "DocField", | |||
@@ -356,7 +356,7 @@ | |||
"depends_on": "enabled", | |||
"fieldname": "email_settings", | |||
"fieldtype": "Section Break", | |||
"label": "Email Settings" | |||
"label": "Email" | |||
}, | |||
{ | |||
"default": "1", | |||
@@ -382,12 +382,6 @@ | |||
"label": "Email Signature", | |||
"no_copy": 1 | |||
}, | |||
{ | |||
"collapsible": 1, | |||
"fieldname": "email_inbox", | |||
"fieldtype": "Section Break", | |||
"label": "Email Inbox" | |||
}, | |||
{ | |||
"fieldname": "user_emails", | |||
"fieldtype": "Table", | |||
@@ -651,7 +645,7 @@ | |||
} | |||
], | |||
"max_attachments": 5, | |||
"modified": "2020-08-06 19:48:49.677800", | |||
"modified": "2020-08-26 19:48:49.677800", | |||
"modified_by": "Administrator", | |||
"module": "Core", | |||
"name": "User", | |||
@@ -685,4 +679,4 @@ | |||
"sort_order": "DESC", | |||
"title_field": "full_name", | |||
"track_changes": 1 | |||
} | |||
} |
@@ -58,382 +58,384 @@ | |||
], | |||
"fields": [ | |||
{ | |||
"bold": 1, | |||
"fieldname": "dt", | |||
"fieldtype": "Link", | |||
"in_filter": 1, | |||
"in_list_view": 1, | |||
"label": "Document", | |||
"oldfieldname": "dt", | |||
"oldfieldtype": "Link", | |||
"options": "DocType", | |||
"reqd": 1, | |||
"search_index": 1 | |||
"bold": 1, | |||
"fieldname": "dt", | |||
"fieldtype": "Link", | |||
"in_filter": 1, | |||
"in_list_view": 1, | |||
"label": "Document", | |||
"oldfieldname": "dt", | |||
"oldfieldtype": "Link", | |||
"options": "DocType", | |||
"reqd": 1, | |||
"search_index": 1 | |||
}, | |||
{ | |||
"bold": 1, | |||
"fieldname": "label", | |||
"fieldtype": "Data", | |||
"in_filter": 1, | |||
"label": "Label", | |||
"no_copy": 1, | |||
"oldfieldname": "label", | |||
"oldfieldtype": "Data" | |||
"bold": 1, | |||
"fieldname": "label", | |||
"fieldtype": "Data", | |||
"in_filter": 1, | |||
"label": "Label", | |||
"no_copy": 1, | |||
"oldfieldname": "label", | |||
"oldfieldtype": "Data" | |||
}, | |||
{ | |||
"fieldname": "label_help", | |||
"fieldtype": "HTML", | |||
"label": "Label Help", | |||
"oldfieldtype": "HTML" | |||
"fieldname": "label_help", | |||
"fieldtype": "HTML", | |||
"label": "Label Help", | |||
"oldfieldtype": "HTML" | |||
}, | |||
{ | |||
"fieldname": "fieldname", | |||
"fieldtype": "Data", | |||
"in_list_view": 1, | |||
"label": "Fieldname", | |||
"no_copy": 1, | |||
"oldfieldname": "fieldname", | |||
"oldfieldtype": "Data", | |||
"read_only": 1 | |||
"fieldname": "fieldname", | |||
"fieldtype": "Data", | |||
"in_list_view": 1, | |||
"label": "Fieldname", | |||
"no_copy": 1, | |||
"oldfieldname": "fieldname", | |||
"oldfieldtype": "Data", | |||
"read_only": 1 | |||
}, | |||
{ | |||
"description": "Select the label after which you want to insert new field.", | |||
"fieldname": "insert_after", | |||
"fieldtype": "Select", | |||
"label": "Insert After", | |||
"no_copy": 1, | |||
"oldfieldname": "insert_after", | |||
"oldfieldtype": "Select" | |||
"description": "Select the label after which you want to insert new field.", | |||
"fieldname": "insert_after", | |||
"fieldtype": "Select", | |||
"label": "Insert After", | |||
"no_copy": 1, | |||
"oldfieldname": "insert_after", | |||
"oldfieldtype": "Select" | |||
}, | |||
{ | |||
"fieldname": "column_break_6", | |||
"fieldtype": "Column Break" | |||
"fieldname": "column_break_6", | |||
"fieldtype": "Column Break" | |||
}, | |||
{ | |||
"bold": 1, | |||
"default": "Data", | |||
"fieldname": "fieldtype", | |||
"fieldtype": "Select", | |||
"in_filter": 1, | |||
"in_list_view": 1, | |||
"label": "Field Type", | |||
"oldfieldname": "fieldtype", | |||
"oldfieldtype": "Select", | |||
"options": "Attach\nAttach Image\nBarcode\nButton\nCheck\nCode\nColor\nColumn Break\nCurrency\nData\nDate\nDatetime\nDuration\nDynamic Link\nFloat\nGeolocation\nHTML\nImage\nInt\nLink\nLong Text\nMarkdown Editor\nPassword\nPercent\nRating\nRead Only\nSection Break\nSelect\nSmall Text\nTable\nTable MultiSelect\nText\nText Editor\nTime\nSignature", | |||
"reqd": 1 | |||
"bold": 1, | |||
"default": "Data", | |||
"fieldname": "fieldtype", | |||
"fieldtype": "Select", | |||
"in_filter": 1, | |||
"in_list_view": 1, | |||
"label": "Field Type", | |||
"oldfieldname": "fieldtype", | |||
"oldfieldtype": "Select", | |||
"options": "Attach\nAttach Image\nBarcode\nButton\nCheck\nCode\nColor\nColumn Break\nCurrency\nData\nDate\nDatetime\nDuration\nDynamic Link\nFloat\nGeolocation\nHTML\nImage\nInt\nLink\nLong Text\nMarkdown Editor\nPassword\nPercent\nRating\nRead Only\nSection Break\nSelect\nSmall Text\nTable\nTable MultiSelect\nText\nText Editor\nTime\nSignature", | |||
"reqd": 1 | |||
}, | |||
{ | |||
"depends_on": "eval:in_list([\"Float\", \"Currency\", \"Percent\"], doc.fieldtype)", | |||
"description": "Set non-standard precision for a Float or Currency field", | |||
"fieldname": "precision", | |||
"fieldtype": "Select", | |||
"label": "Precision", | |||
"options": "\n0\n1\n2\n3\n4\n5\n6\n7\n8\n9" | |||
"depends_on": "eval:in_list([\"Float\", \"Currency\", \"Percent\"], doc.fieldtype)", | |||
"description": "Set non-standard precision for a Float or Currency field", | |||
"fieldname": "precision", | |||
"fieldtype": "Select", | |||
"label": "Precision", | |||
"options": "\n0\n1\n2\n3\n4\n5\n6\n7\n8\n9" | |||
}, | |||
{ | |||
"fieldname": "options", | |||
"fieldtype": "Small Text", | |||
"in_list_view": 1, | |||
"label": "Options", | |||
"oldfieldname": "options", | |||
"oldfieldtype": "Text" | |||
"fieldname": "options", | |||
"fieldtype": "Small Text", | |||
"in_list_view": 1, | |||
"label": "Options", | |||
"oldfieldname": "options", | |||
"oldfieldtype": "Text" | |||
}, | |||
{ | |||
"fieldname": "fetch_from", | |||
"fieldtype": "Small Text", | |||
"label": "Fetch From" | |||
"fieldname": "fetch_from", | |||
"fieldtype": "Small Text", | |||
"label": "Fetch From" | |||
}, | |||
{ | |||
"default": "0", | |||
"description": "If checked, this field will be not overwritten based on Fetch From if a value already exists.", | |||
"fieldname": "fetch_if_empty", | |||
"fieldtype": "Check", | |||
"label": "Fetch If Empty" | |||
"default": "0", | |||
"description": "If checked, this field will be not overwritten based on Fetch From if a value already exists.", | |||
"fieldname": "fetch_if_empty", | |||
"fieldtype": "Check", | |||
"label": "Fetch If Empty" | |||
}, | |||
{ | |||
"fieldname": "options_help", | |||
"fieldtype": "HTML", | |||
"label": "Options Help", | |||
"oldfieldtype": "HTML" | |||
"fieldname": "options_help", | |||
"fieldtype": "HTML", | |||
"label": "Options Help", | |||
"oldfieldtype": "HTML" | |||
}, | |||
{ | |||
"fieldname": "section_break_11", | |||
"fieldtype": "Section Break" | |||
"fieldname": "section_break_11", | |||
"fieldtype": "Section Break" | |||
}, | |||
{ | |||
"default": "0", | |||
"depends_on": "eval:doc.fieldtype==\"Section Break\"", | |||
"fieldname": "collapsible", | |||
"fieldtype": "Check", | |||
"label": "Collapsible" | |||
"default": "0", | |||
"depends_on": "eval:doc.fieldtype==\"Section Break\"", | |||
"fieldname": "collapsible", | |||
"fieldtype": "Check", | |||
"label": "Collapsible" | |||
}, | |||
{ | |||
"depends_on": "eval:doc.fieldtype==\"Section Break\"", | |||
"fieldname": "collapsible_depends_on", | |||
"fieldtype": "Code", | |||
"label": "Collapsible Depends On" | |||
"depends_on": "eval:doc.fieldtype==\"Section Break\"", | |||
"fieldname": "collapsible_depends_on", | |||
"fieldtype": "Code", | |||
"label": "Collapsible Depends On" | |||
}, | |||
{ | |||
"fieldname": "default", | |||
"fieldtype": "Text", | |||
"label": "Default Value", | |||
"oldfieldname": "default", | |||
"oldfieldtype": "Text" | |||
"fieldname": "default", | |||
"fieldtype": "Text", | |||
"label": "Default Value", | |||
"oldfieldname": "default", | |||
"oldfieldtype": "Text" | |||
}, | |||
{ | |||
"fieldname": "depends_on", | |||
"fieldtype": "Code", | |||
"label": "Depends On", | |||
"length": 255 | |||
"fieldname": "depends_on", | |||
"fieldtype": "Code", | |||
"label": "Depends On", | |||
"length": 255 | |||
}, | |||
{ | |||
"fieldname": "description", | |||
"fieldtype": "Text", | |||
"label": "Field Description", | |||
"oldfieldname": "description", | |||
"oldfieldtype": "Text", | |||
"print_width": "300px", | |||
"width": "300px" | |||
"fieldname": "description", | |||
"fieldtype": "Text", | |||
"label": "Field Description", | |||
"oldfieldname": "description", | |||
"oldfieldtype": "Text", | |||
"print_width": "300px", | |||
"width": "300px" | |||
}, | |||
{ | |||
"default": "0", | |||
"fieldname": "permlevel", | |||
"fieldtype": "Int", | |||
"label": "Permission Level", | |||
"oldfieldname": "permlevel", | |||
"oldfieldtype": "Int" | |||
"default": "0", | |||
"fieldname": "permlevel", | |||
"fieldtype": "Int", | |||
"label": "Permission Level", | |||
"oldfieldname": "permlevel", | |||
"oldfieldtype": "Int" | |||
}, | |||
{ | |||
"fieldname": "width", | |||
"fieldtype": "Data", | |||
"label": "Width", | |||
"oldfieldname": "width", | |||
"oldfieldtype": "Data" | |||
"fieldname": "width", | |||
"fieldtype": "Data", | |||
"label": "Width", | |||
"oldfieldname": "width", | |||
"oldfieldtype": "Data" | |||
}, | |||
{ | |||
"description": "Number of columns for a field in a List View or a Grid (Total Columns should be less than 11)", | |||
"fieldname": "columns", | |||
"fieldtype": "Int", | |||
"label": "Columns" | |||
"description": "Number of columns for a field in a List View or a Grid (Total Columns should be less than 11)", | |||
"fieldname": "columns", | |||
"fieldtype": "Int", | |||
"label": "Columns" | |||
}, | |||
{ | |||
"fieldname": "properties", | |||
"fieldtype": "Column Break", | |||
"oldfieldtype": "Column Break", | |||
"print_width": "50%", | |||
"width": "50%" | |||
"fieldname": "properties", | |||
"fieldtype": "Column Break", | |||
"oldfieldtype": "Column Break", | |||
"print_width": "50%", | |||
"width": "50%" | |||
}, | |||
{ | |||
"default": "0", | |||
"fieldname": "reqd", | |||
"fieldtype": "Check", | |||
"in_list_view": 1, | |||
"label": "Is Mandatory Field", | |||
"oldfieldname": "reqd", | |||
"oldfieldtype": "Check" | |||
"default": "0", | |||
"fieldname": "reqd", | |||
"fieldtype": "Check", | |||
"in_list_view": 1, | |||
"label": "Is Mandatory Field", | |||
"oldfieldname": "reqd", | |||
"oldfieldtype": "Check" | |||
}, | |||
{ | |||
"default": "0", | |||
"fieldname": "unique", | |||
"fieldtype": "Check", | |||
"label": "Unique" | |||
"default": "0", | |||
"fieldname": "unique", | |||
"fieldtype": "Check", | |||
"label": "Unique" | |||
}, | |||
{ | |||
"default": "0", | |||
"fieldname": "read_only", | |||
"fieldtype": "Check", | |||
"label": "Read Only" | |||
"default": "0", | |||
"fieldname": "read_only", | |||
"fieldtype": "Check", | |||
"label": "Read Only" | |||
}, | |||
{ | |||
"default": "0", | |||
"depends_on": "eval:doc.fieldtype===\"Link\"", | |||
"fieldname": "ignore_user_permissions", | |||
"fieldtype": "Check", | |||
"label": "Ignore User Permissions" | |||
"default": "0", | |||
"depends_on": "eval:doc.fieldtype===\"Link\"", | |||
"fieldname": "ignore_user_permissions", | |||
"fieldtype": "Check", | |||
"label": "Ignore User Permissions" | |||
}, | |||
{ | |||
"default": "0", | |||
"fieldname": "hidden", | |||
"fieldtype": "Check", | |||
"label": "Hidden" | |||
"default": "0", | |||
"fieldname": "hidden", | |||
"fieldtype": "Check", | |||
"label": "Hidden" | |||
}, | |||
{ | |||
"default": "0", | |||
"fieldname": "print_hide", | |||
"fieldtype": "Check", | |||
"label": "Print Hide", | |||
"oldfieldname": "print_hide", | |||
"oldfieldtype": "Check" | |||
"default": "0", | |||
"fieldname": "print_hide", | |||
"fieldtype": "Check", | |||
"label": "Print Hide", | |||
"oldfieldname": "print_hide", | |||
"oldfieldtype": "Check" | |||
}, | |||
{ | |||
"default": "0", | |||
"depends_on": "eval:[\"Int\", \"Float\", \"Currency\", \"Percent\"].indexOf(doc.fieldtype)!==-1", | |||
"fieldname": "print_hide_if_no_value", | |||
"fieldtype": "Check", | |||
"label": "Print Hide If No Value" | |||
"default": "0", | |||
"depends_on": "eval:[\"Int\", \"Float\", \"Currency\", \"Percent\"].indexOf(doc.fieldtype)!==-1", | |||
"fieldname": "print_hide_if_no_value", | |||
"fieldtype": "Check", | |||
"label": "Print Hide If No Value" | |||
}, | |||
{ | |||
"fieldname": "print_width", | |||
"fieldtype": "Data", | |||
"hidden": 1, | |||
"label": "Print Width", | |||
"no_copy": 1, | |||
"print_hide": 1 | |||
"fieldname": "print_width", | |||
"fieldtype": "Data", | |||
"hidden": 1, | |||
"label": "Print Width", | |||
"no_copy": 1, | |||
"print_hide": 1 | |||
}, | |||
{ | |||
"default": "0", | |||
"fieldname": "no_copy", | |||
"fieldtype": "Check", | |||
"label": "No Copy", | |||
"oldfieldname": "no_copy", | |||
"oldfieldtype": "Check" | |||
"default": "0", | |||
"fieldname": "no_copy", | |||
"fieldtype": "Check", | |||
"label": "No Copy", | |||
"oldfieldname": "no_copy", | |||
"oldfieldtype": "Check" | |||
}, | |||
{ | |||
"default": "0", | |||
"fieldname": "allow_on_submit", | |||
"fieldtype": "Check", | |||
"label": "Allow on Submit", | |||
"oldfieldname": "allow_on_submit", | |||
"oldfieldtype": "Check" | |||
"default": "0", | |||
"fieldname": "allow_on_submit", | |||
"fieldtype": "Check", | |||
"label": "Allow on Submit", | |||
"oldfieldname": "allow_on_submit", | |||
"oldfieldtype": "Check" | |||
}, | |||
{ | |||
"default": "0", | |||
"fieldname": "in_list_view", | |||
"fieldtype": "Check", | |||
"label": "In List View" | |||
"default": "0", | |||
"fieldname": "in_list_view", | |||
"fieldtype": "Check", | |||
"label": "In List View" | |||
}, | |||
{ | |||
"default": "0", | |||
"fieldname": "in_standard_filter", | |||
"fieldtype": "Check", | |||
"label": "In Standard Filter" | |||
"default": "0", | |||
"fieldname": "in_standard_filter", | |||
"fieldtype": "Check", | |||
"label": "In Standard Filter" | |||
}, | |||
{ | |||
"default": "0", | |||
"depends_on": "eval:([\"Data\", \"Select\", \"Table\", \"Text\", \"Text Editor\", \"Link\", \"Small Text\", \"Long Text\", \"Read Only\", \"Heading\", \"Dynamic Link\"].indexOf(doc.fieldtype) !== -1)", | |||
"fieldname": "in_global_search", | |||
"fieldtype": "Check", | |||
"label": "In Global Search" | |||
"default": "0", | |||
"depends_on": "eval:([\"Data\", \"Select\", \"Table\", \"Text\", \"Text Editor\", \"Link\", \"Small Text\", \"Long Text\", \"Read Only\", \"Heading\", \"Dynamic Link\"].indexOf(doc.fieldtype) !== -1)", | |||
"fieldname": "in_global_search", | |||
"fieldtype": "Check", | |||
"label": "In Global Search" | |||
}, | |||
{ | |||
"default": "0", | |||
"fieldname": "bold", | |||
"fieldtype": "Check", | |||
"label": "Bold" | |||
"default": "0", | |||
"fieldname": "bold", | |||
"fieldtype": "Check", | |||
"label": "Bold" | |||
}, | |||
{ | |||
"default": "0", | |||
"fieldname": "report_hide", | |||
"fieldtype": "Check", | |||
"label": "Report Hide", | |||
"oldfieldname": "report_hide", | |||
"oldfieldtype": "Check" | |||
"default": "0", | |||
"fieldname": "report_hide", | |||
"fieldtype": "Check", | |||
"label": "Report Hide", | |||
"oldfieldname": "report_hide", | |||
"oldfieldtype": "Check" | |||
}, | |||
{ | |||
"default": "0", | |||
"fieldname": "search_index", | |||
"fieldtype": "Check", | |||
"hidden": 1, | |||
"label": "Index", | |||
"no_copy": 1, | |||
"print_hide": 1 | |||
"default": "0", | |||
"fieldname": "search_index", | |||
"fieldtype": "Check", | |||
"hidden": 1, | |||
"label": "Index", | |||
"no_copy": 1, | |||
"print_hide": 1 | |||
}, | |||
{ | |||
"default": "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", | |||
"label": "Ignore XSS Filter" | |||
"default": "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", | |||
"label": "Ignore XSS Filter" | |||
}, | |||
{ | |||
"default": "1", | |||
"depends_on": "eval:['Data', 'Select', 'Text', 'Small Text', 'Text Editor'].includes(doc.fieldtype)", | |||
"fieldname": "translatable", | |||
"fieldtype": "Check", | |||
"label": "Translatable" | |||
"default": "1", | |||
"depends_on": "eval:['Data', 'Select', 'Text', 'Small Text', 'Text Editor'].includes(doc.fieldtype)", | |||
"fieldname": "translatable", | |||
"fieldtype": "Check", | |||
"label": "Translatable" | |||
}, | |||
{ | |||
"depends_on": "eval:in_list(['Data', 'Link', 'Dynamic Link', 'Password', 'Select', 'Read Only', 'Attach', 'Attach Image', 'Int'], doc.fieldtype)", | |||
"fieldname": "length", | |||
"fieldtype": "Int", | |||
"label": "Length" | |||
"depends_on": "eval:in_list(['Data', 'Link', 'Dynamic Link', 'Password', 'Select', 'Read Only', 'Attach', 'Attach Image', 'Int'], doc.fieldtype)", | |||
"fieldname": "length", | |||
"fieldtype": "Int", | |||
"label": "Length" | |||
}, | |||
{ | |||
"fieldname": "mandatory_depends_on", | |||
"fieldtype": "Code", | |||
"label": "Mandatory Depends On", | |||
"length": 255 | |||
"fieldname": "mandatory_depends_on", | |||
"fieldtype": "Code", | |||
"label": "Mandatory Depends On", | |||
"length": 255 | |||
}, | |||
{ | |||
"fieldname": "read_only_depends_on", | |||
"fieldtype": "Code", | |||
"label": "Read Only Depends On", | |||
"length": 255 | |||
"fieldname": "read_only_depends_on", | |||
"fieldtype": "Code", | |||
"label": "Read Only Depends On", | |||
"length": 255 | |||
}, | |||
{ | |||
"default": "0", | |||
"fieldname": "allow_in_quick_entry", | |||
"fieldtype": "Check", | |||
"label": "Allow in Quick Entry" | |||
"default": "0", | |||
"fieldname": "allow_in_quick_entry", | |||
"fieldtype": "Check", | |||
"label": "Allow in Quick Entry" | |||
}, | |||
{ | |||
"default": "0", | |||
"fieldname": "in_preview", | |||
"fieldtype": "Check", | |||
"label": "In Preview" | |||
"default": "0", | |||
"depends_on": "eval:!in_list(['Table', 'Table MultiSelect'], doc.fieldtype);", | |||
"fieldname": "in_preview", | |||
"fieldtype": "Check", | |||
"label": "In Preview" | |||
}, | |||
{ | |||
"default": "0", | |||
"depends_on": "eval:doc.fieldtype=='Duration'", | |||
"fieldname": "hide_seconds", | |||
"fieldtype": "Check", | |||
"label": "Hide Seconds" | |||
"default": "0", | |||
"depends_on": "eval:doc.fieldtype=='Duration'", | |||
"fieldname": "hide_seconds", | |||
"fieldtype": "Check", | |||
"label": "Hide Seconds" | |||
}, | |||
{ | |||
"default": "0", | |||
"depends_on": "eval:doc.fieldtype=='Duration'", | |||
"fieldname": "hide_days", | |||
"fieldtype": "Check", | |||
"label": "Hide Days" | |||
"default": "0", | |||
"depends_on": "eval:doc.fieldtype=='Duration'", | |||
"fieldname": "hide_days", | |||
"fieldtype": "Check", | |||
"label": "Hide Days" | |||
}, | |||
{ | |||
"default": "0", | |||
"depends_on": "eval:doc.fieldtype=='Section Break'", | |||
"fieldname": "hide_border", | |||
"fieldtype": "Check", | |||
"label": "Hide Border" | |||
"default": "0", | |||
"depends_on": "eval:doc.fieldtype=='Section Break'", | |||
"fieldname": "hide_border", | |||
"fieldtype": "Check", | |||
"label": "Hide Border" | |||
} | |||
], | |||
"icon": "fa fa-glass", | |||
"idx": 1, | |||
"index_web_pages_for_search": 1, | |||
"links": [], | |||
"modified": "2020-02-06 23:43:00.123575", | |||
"modified": "2020-08-28 11:28:44.377753", | |||
"modified_by": "Administrator", | |||
"module": "Custom", | |||
"name": "Custom Field", | |||
"owner": "Administrator", | |||
"permissions": [ | |||
{ | |||
"create": 1, | |||
"delete": 1, | |||
"email": 1, | |||
"print": 1, | |||
"read": 1, | |||
"report": 1, | |||
"role": "Administrator", | |||
"share": 1, | |||
"write": 1 | |||
}, | |||
{ | |||
"create": 1, | |||
"delete": 1, | |||
"email": 1, | |||
"print": 1, | |||
"read": 1, | |||
"report": 1, | |||
"role": "System Manager", | |||
"share": 1, | |||
"write": 1 | |||
"create": 1, | |||
"delete": 1, | |||
"email": 1, | |||
"print": 1, | |||
"read": 1, | |||
"report": 1, | |||
"role": "Administrator", | |||
"share": 1, | |||
"write": 1 | |||
}, | |||
{ | |||
"create": 1, | |||
"delete": 1, | |||
"email": 1, | |||
"print": 1, | |||
"read": 1, | |||
"report": 1, | |||
"role": "System Manager", | |||
"share": 1, | |||
"write": 1 | |||
} | |||
], | |||
"search_fields": "dt,label,fieldtype,options", | |||
@@ -1,187 +1,91 @@ | |||
{ | |||
"allow_copy": 0, | |||
"allow_events_in_timeline": 0, | |||
"allow_guest_to_view": 0, | |||
"allow_import": 1, | |||
"allow_rename": 0, | |||
"autoname": "", | |||
"beta": 0, | |||
"creation": "2013-01-10 16:34:01", | |||
"custom": 0, | |||
"description": "Adds a client custom script to a DocType", | |||
"docstatus": 0, | |||
"doctype": "DocType", | |||
"document_type": "Document", | |||
"editable_grid": 0, | |||
"engine": "InnoDB", | |||
"actions": [], | |||
"allow_import": 1, | |||
"creation": "2013-01-10 16:34:01", | |||
"description": "Adds a client custom script to a DocType", | |||
"doctype": "DocType", | |||
"document_type": "Document", | |||
"engine": "InnoDB", | |||
"field_order": [ | |||
"dt", | |||
"enabled", | |||
"script", | |||
"sample" | |||
], | |||
"fields": [ | |||
{ | |||
"allow_bulk_edit": 0, | |||
"allow_in_quick_entry": 0, | |||
"allow_on_submit": 0, | |||
"bold": 0, | |||
"collapsible": 0, | |||
"columns": 0, | |||
"fetch_if_empty": 0, | |||
"fieldname": "dt", | |||
"fieldtype": "Link", | |||
"hidden": 0, | |||
"ignore_user_permissions": 0, | |||
"ignore_xss_filter": 0, | |||
"in_filter": 0, | |||
"in_global_search": 0, | |||
"in_list_view": 1, | |||
"in_standard_filter": 1, | |||
"label": "DocType", | |||
"length": 0, | |||
"no_copy": 0, | |||
"oldfieldname": "dt", | |||
"oldfieldtype": "Link", | |||
"options": "DocType", | |||
"permlevel": 0, | |||
"print_hide": 0, | |||
"print_hide_if_no_value": 0, | |||
"read_only": 0, | |||
"remember_last_selected_value": 0, | |||
"report_hide": 0, | |||
"reqd": 1, | |||
"search_index": 0, | |||
"set_only_once": 0, | |||
"translatable": 0, | |||
"unique": 0 | |||
}, | |||
"fieldname": "dt", | |||
"fieldtype": "Link", | |||
"in_list_view": 1, | |||
"in_standard_filter": 1, | |||
"label": "DocType", | |||
"oldfieldname": "dt", | |||
"oldfieldtype": "Link", | |||
"options": "DocType", | |||
"reqd": 1, | |||
"show_days": 1, | |||
"show_seconds": 1 | |||
}, | |||
{ | |||
"allow_bulk_edit": 0, | |||
"allow_in_quick_entry": 0, | |||
"allow_on_submit": 0, | |||
"bold": 0, | |||
"collapsible": 0, | |||
"columns": 0, | |||
"fetch_if_empty": 0, | |||
"fieldname": "script", | |||
"fieldtype": "Code", | |||
"hidden": 0, | |||
"ignore_user_permissions": 0, | |||
"ignore_xss_filter": 0, | |||
"in_filter": 0, | |||
"in_global_search": 0, | |||
"in_list_view": 0, | |||
"in_standard_filter": 0, | |||
"label": "Script", | |||
"length": 0, | |||
"no_copy": 0, | |||
"oldfieldname": "script", | |||
"oldfieldtype": "Code", | |||
"options": "JS", | |||
"permlevel": 0, | |||
"print_hide": 0, | |||
"print_hide_if_no_value": 0, | |||
"read_only": 0, | |||
"remember_last_selected_value": 0, | |||
"report_hide": 0, | |||
"reqd": 0, | |||
"search_index": 0, | |||
"set_only_once": 0, | |||
"translatable": 0, | |||
"unique": 0 | |||
}, | |||
"fieldname": "script", | |||
"fieldtype": "Code", | |||
"label": "Script", | |||
"oldfieldname": "script", | |||
"oldfieldtype": "Code", | |||
"options": "JS", | |||
"show_days": 1, | |||
"show_seconds": 1 | |||
}, | |||
{ | |||
"allow_bulk_edit": 0, | |||
"allow_in_quick_entry": 0, | |||
"allow_on_submit": 0, | |||
"bold": 0, | |||
"collapsible": 0, | |||
"columns": 0, | |||
"fetch_if_empty": 0, | |||
"fieldname": "sample", | |||
"fieldtype": "HTML", | |||
"hidden": 0, | |||
"ignore_user_permissions": 0, | |||
"ignore_xss_filter": 0, | |||
"in_filter": 0, | |||
"in_global_search": 0, | |||
"in_list_view": 0, | |||
"in_standard_filter": 0, | |||
"label": "Sample", | |||
"length": 0, | |||
"no_copy": 0, | |||
"options": "<h3>Custom Script Help</h3>\n<p>Custom Scripts are executed only on the client-side (i.e. in Forms). Here are some examples to get you started</p>\n<pre><code>\n\n// fetch local_tax_no on selection of customer \n// cur_frm.add_fetch(link_field, source_fieldname, target_fieldname); \ncur_frm.add_fetch('customer', 'local_tax_no', 'local_tax_no');\n\n// additional validation on dates \nfrappe.ui.form.on('Task', 'validate', function(frm) {\n if (frm.doc.from_date < get_today()) {\n msgprint('You can not select past date in From Date');\n validated = false;\n } \n});\n\n// make a field read-only after saving \nfrappe.ui.form.on('Task', {\n refresh: function(frm) {\n // use the __islocal value of doc, to check if the doc is saved or not\n frm.set_df_property('myfield', 'read_only', frm.doc.__islocal ? 0 : 1);\n } \n});\n\n// additional permission check\nfrappe.ui.form.on('Task', {\n validate: function(frm) {\n if(user=='user1@example.com' && frm.doc.purpose!='Material Receipt') {\n msgprint('You are only allowed Material Receipt');\n validated = false;\n }\n } \n});\n\n// calculate sales incentive\nfrappe.ui.form.on('Sales Invoice', {\n validate: function(frm) {\n // calculate incentives for each person on the deal\n total_incentive = 0\n $.each(frm.doc.sales_team, function(i, d) {\n // calculate incentive\n var incentive_percent = 2;\n if(frm.doc.base_grand_total > 400) incentive_percent = 4;\n // actual incentive\n d.incentives = flt(frm.doc.base_grand_total) * incentive_percent / 100;\n total_incentive += flt(d.incentives)\n });\n frm.doc.total_incentive = total_incentive;\n } \n})\n\n</code></pre>", | |||
"permlevel": 0, | |||
"print_hide": 0, | |||
"print_hide_if_no_value": 0, | |||
"read_only": 0, | |||
"remember_last_selected_value": 0, | |||
"report_hide": 0, | |||
"reqd": 0, | |||
"search_index": 0, | |||
"set_only_once": 0, | |||
"translatable": 0, | |||
"unique": 0 | |||
"fieldname": "sample", | |||
"fieldtype": "HTML", | |||
"label": "Sample", | |||
"options": "<h3>Custom Script Help</h3>\n<p>Custom Scripts are executed only on the client-side (i.e. in Forms). Here are some examples to get you started</p>\n<pre><code>\n\n// fetch local_tax_no on selection of customer \n// cur_frm.add_fetch(link_field, source_fieldname, target_fieldname); \ncur_frm.add_fetch('customer', 'local_tax_no', 'local_tax_no');\n\n// additional validation on dates \nfrappe.ui.form.on('Task', 'validate', function(frm) {\n if (frm.doc.from_date < get_today()) {\n msgprint('You can not select past date in From Date');\n validated = false;\n } \n});\n\n// make a field read-only after saving \nfrappe.ui.form.on('Task', {\n refresh: function(frm) {\n // use the __islocal value of doc, to check if the doc is saved or not\n frm.set_df_property('myfield', 'read_only', frm.doc.__islocal ? 0 : 1);\n } \n});\n\n// additional permission check\nfrappe.ui.form.on('Task', {\n validate: function(frm) {\n if(user=='user1@example.com' && frm.doc.purpose!='Material Receipt') {\n msgprint('You are only allowed Material Receipt');\n validated = false;\n }\n } \n});\n\n// calculate sales incentive\nfrappe.ui.form.on('Sales Invoice', {\n validate: function(frm) {\n // calculate incentives for each person on the deal\n total_incentive = 0\n $.each(frm.doc.sales_team, function(i, d) {\n // calculate incentive\n var incentive_percent = 2;\n if(frm.doc.base_grand_total > 400) incentive_percent = 4;\n // actual incentive\n d.incentives = flt(frm.doc.base_grand_total) * incentive_percent / 100;\n total_incentive += flt(d.incentives)\n });\n frm.doc.total_incentive = total_incentive;\n } \n})\n\n</code></pre>", | |||
"show_days": 1, | |||
"show_seconds": 1 | |||
}, | |||
{ | |||
"default": "0", | |||
"fieldname": "enabled", | |||
"fieldtype": "Check", | |||
"label": "Enabled", | |||
"show_days": 1, | |||
"show_seconds": 1 | |||
} | |||
], | |||
"has_web_view": 0, | |||
"hide_heading": 0, | |||
"hide_toolbar": 0, | |||
"icon": "fa fa-glass", | |||
"idx": 1, | |||
"image_view": 0, | |||
"in_create": 0, | |||
"is_submittable": 0, | |||
"issingle": 0, | |||
"istable": 0, | |||
"max_attachments": 0, | |||
"menu_index": 0, | |||
"modified": "2019-03-21 14:26:57.402994", | |||
"modified_by": "Administrator", | |||
"module": "Custom", | |||
"name": "Custom Script", | |||
"owner": "Administrator", | |||
], | |||
"icon": "fa fa-glass", | |||
"idx": 1, | |||
"index_web_pages_for_search": 1, | |||
"links": [], | |||
"modified": "2020-08-24 21:56:07.719579", | |||
"modified_by": "Administrator", | |||
"module": "Custom", | |||
"name": "Custom Script", | |||
"owner": "Administrator", | |||
"permissions": [ | |||
{ | |||
"amend": 0, | |||
"cancel": 0, | |||
"create": 1, | |||
"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": 1, | |||
"submit": 0, | |||
"create": 1, | |||
"delete": 1, | |||
"email": 1, | |||
"print": 1, | |||
"read": 1, | |||
"report": 1, | |||
"role": "System Manager", | |||
"share": 1, | |||
"write": 1 | |||
}, | |||
}, | |||
{ | |||
"amend": 0, | |||
"cancel": 0, | |||
"create": 1, | |||
"delete": 1, | |||
"email": 1, | |||
"export": 0, | |||
"if_owner": 0, | |||
"import": 0, | |||
"permlevel": 0, | |||
"print": 1, | |||
"read": 1, | |||
"report": 1, | |||
"role": "Administrator", | |||
"set_user_permissions": 0, | |||
"share": 1, | |||
"submit": 0, | |||
"create": 1, | |||
"delete": 1, | |||
"email": 1, | |||
"print": 1, | |||
"read": 1, | |||
"report": 1, | |||
"role": "Administrator", | |||
"share": 1, | |||
"write": 1 | |||
} | |||
], | |||
"quick_entry": 0, | |||
"read_only": 0, | |||
"read_only_onload": 0, | |||
"show_name_in_global_search": 0, | |||
"sort_order": "ASC", | |||
"track_changes": 1, | |||
"track_seen": 0, | |||
"track_views": 0 | |||
], | |||
"sort_order": "ASC", | |||
"track_changes": 1 | |||
} |
@@ -60,364 +60,366 @@ | |||
], | |||
"fields": [ | |||
{ | |||
"fieldname": "label_and_type", | |||
"fieldtype": "Section Break", | |||
"label": "Label and Type" | |||
"fieldname": "label_and_type", | |||
"fieldtype": "Section Break", | |||
"label": "Label and Type" | |||
}, | |||
{ | |||
"fieldname": "label", | |||
"fieldtype": "Data", | |||
"in_list_view": 1, | |||
"label": "Label", | |||
"oldfieldname": "label", | |||
"oldfieldtype": "Data", | |||
"search_index": 1 | |||
"fieldname": "label", | |||
"fieldtype": "Data", | |||
"in_list_view": 1, | |||
"label": "Label", | |||
"oldfieldname": "label", | |||
"oldfieldtype": "Data", | |||
"search_index": 1 | |||
}, | |||
{ | |||
"default": "Data", | |||
"fieldname": "fieldtype", | |||
"fieldtype": "Select", | |||
"in_list_view": 1, | |||
"label": "Type", | |||
"oldfieldname": "fieldtype", | |||
"oldfieldtype": "Select", | |||
"options": "Attach\nAttach Image\nBarcode\nButton\nCheck\nCode\nColor\nColumn Break\nCurrency\nData\nDate\nDatetime\nDuration\nDynamic Link\nFloat\nFold\nGeolocation\nHeading\nHTML\nHTML Editor\nImage\nInt\nLink\nLong Text\nMarkdown Editor\nPassword\nPercent\nRating\nRead Only\nSection Break\nSelect\nSignature\nSmall Text\nTable\nTable MultiSelect\nText\nText Editor\nTime", | |||
"reqd": 1, | |||
"search_index": 1 | |||
"default": "Data", | |||
"fieldname": "fieldtype", | |||
"fieldtype": "Select", | |||
"in_list_view": 1, | |||
"label": "Type", | |||
"oldfieldname": "fieldtype", | |||
"oldfieldtype": "Select", | |||
"options": "Attach\nAttach Image\nBarcode\nButton\nCheck\nCode\nColor\nColumn Break\nCurrency\nData\nDate\nDatetime\nDuration\nDynamic Link\nFloat\nFold\nGeolocation\nHeading\nHTML\nHTML Editor\nImage\nInt\nLink\nLong Text\nMarkdown Editor\nPassword\nPercent\nRating\nRead Only\nSection Break\nSelect\nSignature\nSmall Text\nTable\nTable MultiSelect\nText\nText Editor\nTime", | |||
"reqd": 1, | |||
"search_index": 1 | |||
}, | |||
{ | |||
"fieldname": "fieldname", | |||
"fieldtype": "Data", | |||
"in_list_view": 1, | |||
"label": "Name", | |||
"oldfieldname": "fieldname", | |||
"oldfieldtype": "Data", | |||
"read_only": 1, | |||
"search_index": 1 | |||
"fieldname": "fieldname", | |||
"fieldtype": "Data", | |||
"in_list_view": 1, | |||
"label": "Name", | |||
"oldfieldname": "fieldname", | |||
"oldfieldtype": "Data", | |||
"read_only": 1, | |||
"search_index": 1 | |||
}, | |||
{ | |||
"default": "0", | |||
"depends_on": "eval:!in_list([\"Section Break\", \"Column Break\", \"Button\", \"HTML\"], doc.fieldtype)", | |||
"fieldname": "reqd", | |||
"fieldtype": "Check", | |||
"label": "Mandatory", | |||
"oldfieldname": "reqd", | |||
"oldfieldtype": "Check", | |||
"print_width": "50px", | |||
"width": "50px" | |||
"default": "0", | |||
"depends_on": "eval:!in_list([\"Section Break\", \"Column Break\", \"Button\", \"HTML\"], doc.fieldtype)", | |||
"fieldname": "reqd", | |||
"fieldtype": "Check", | |||
"label": "Mandatory", | |||
"oldfieldname": "reqd", | |||
"oldfieldtype": "Check", | |||
"print_width": "50px", | |||
"width": "50px" | |||
}, | |||
{ | |||
"default": "0", | |||
"fieldname": "unique", | |||
"fieldtype": "Check", | |||
"label": "Unique" | |||
"default": "0", | |||
"fieldname": "unique", | |||
"fieldtype": "Check", | |||
"label": "Unique" | |||
}, | |||
{ | |||
"default": "0", | |||
"fieldname": "in_list_view", | |||
"fieldtype": "Check", | |||
"label": "In List View" | |||
"default": "0", | |||
"fieldname": "in_list_view", | |||
"fieldtype": "Check", | |||
"label": "In List View" | |||
}, | |||
{ | |||
"default": "0", | |||
"fieldname": "in_standard_filter", | |||
"fieldtype": "Check", | |||
"label": "In Standard Filter" | |||
"default": "0", | |||
"fieldname": "in_standard_filter", | |||
"fieldtype": "Check", | |||
"label": "In Standard Filter" | |||
}, | |||
{ | |||
"default": "0", | |||
"depends_on": "eval:([\"Data\", \"Select\", \"Table\", \"Text\", \"Text Editor\", \"Link\", \"Small Text\", \"Long Text\", \"Read Only\", \"Heading\", \"Dynamic Link\"].indexOf(doc.fieldtype) !== -1)", | |||
"fieldname": "in_global_search", | |||
"fieldtype": "Check", | |||
"label": "In Global Search" | |||
"default": "0", | |||
"depends_on": "eval:([\"Data\", \"Select\", \"Table\", \"Text\", \"Text Editor\", \"Link\", \"Small Text\", \"Long Text\", \"Read Only\", \"Heading\", \"Dynamic Link\"].indexOf(doc.fieldtype) !== -1)", | |||
"fieldname": "in_global_search", | |||
"fieldtype": "Check", | |||
"label": "In Global Search" | |||
}, | |||
{ | |||
"default": "0", | |||
"fieldname": "bold", | |||
"fieldtype": "Check", | |||
"label": "Bold" | |||
"default": "0", | |||
"fieldname": "bold", | |||
"fieldtype": "Check", | |||
"label": "Bold" | |||
}, | |||
{ | |||
"default": "1", | |||
"depends_on": "eval:['Data', 'Select', 'Text', 'Small Text', 'Text Editor'].includes(doc.fieldtype)", | |||
"fieldname": "translatable", | |||
"fieldtype": "Check", | |||
"label": "Translatable" | |||
"default": "1", | |||
"depends_on": "eval:['Data', 'Select', 'Text', 'Small Text', 'Text Editor'].includes(doc.fieldtype)", | |||
"fieldname": "translatable", | |||
"fieldtype": "Check", | |||
"label": "Translatable" | |||
}, | |||
{ | |||
"fieldname": "column_break_7", | |||
"fieldtype": "Column Break" | |||
"fieldname": "column_break_7", | |||
"fieldtype": "Column Break" | |||
}, | |||
{ | |||
"depends_on": "eval:in_list([\"Float\", \"Currency\", \"Percent\"], doc.fieldtype)", | |||
"description": "Set non-standard precision for a Float or Currency field", | |||
"fieldname": "precision", | |||
"fieldtype": "Select", | |||
"label": "Precision", | |||
"options": "\n0\n1\n2\n3\n4\n5\n6\n7\n8\n9" | |||
"depends_on": "eval:in_list([\"Float\", \"Currency\", \"Percent\"], doc.fieldtype)", | |||
"description": "Set non-standard precision for a Float or Currency field", | |||
"fieldname": "precision", | |||
"fieldtype": "Select", | |||
"label": "Precision", | |||
"options": "\n0\n1\n2\n3\n4\n5\n6\n7\n8\n9" | |||
}, | |||
{ | |||
"depends_on": "eval:in_list(['Data', 'Link', 'Dynamic Link', 'Password', 'Select', 'Read Only', 'Attach', 'Attach Image'], doc.fieldtype)", | |||
"fieldname": "length", | |||
"fieldtype": "Int", | |||
"label": "Length" | |||
"depends_on": "eval:in_list(['Data', 'Link', 'Dynamic Link', 'Password', 'Select', 'Read Only', 'Attach', 'Attach Image'], doc.fieldtype)", | |||
"fieldname": "length", | |||
"fieldtype": "Int", | |||
"label": "Length" | |||
}, | |||
{ | |||
"description": "For Links, enter the DocType as range.\nFor Select, enter list of Options, each on a new line.", | |||
"fieldname": "options", | |||
"fieldtype": "Small Text", | |||
"in_list_view": 1, | |||
"label": "Options", | |||
"oldfieldname": "options", | |||
"oldfieldtype": "Text" | |||
"description": "For Links, enter the DocType as range.\nFor Select, enter list of Options, each on a new line.", | |||
"fieldname": "options", | |||
"fieldtype": "Small Text", | |||
"in_list_view": 1, | |||
"label": "Options", | |||
"oldfieldname": "options", | |||
"oldfieldtype": "Text" | |||
}, | |||
{ | |||
"fieldname": "fetch_from", | |||
"fieldtype": "Small Text", | |||
"label": "Fetch From" | |||
"fieldname": "fetch_from", | |||
"fieldtype": "Small Text", | |||
"label": "Fetch From" | |||
}, | |||
{ | |||
"default": "0", | |||
"description": "If checked, this field will be not overwritten based on Fetch From if a value already exists.", | |||
"fieldname": "fetch_if_empty", | |||
"fieldtype": "Check", | |||
"label": "Fetch If Empty" | |||
"default": "0", | |||
"description": "If checked, this field will be not overwritten based on Fetch From if a value already exists.", | |||
"fieldname": "fetch_if_empty", | |||
"fieldtype": "Check", | |||
"label": "Fetch If Empty" | |||
}, | |||
{ | |||
"fieldname": "permissions", | |||
"fieldtype": "Section Break", | |||
"label": "Permissions" | |||
"fieldname": "permissions", | |||
"fieldtype": "Section Break", | |||
"label": "Permissions" | |||
}, | |||
{ | |||
"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": "Code", | |||
"label": "Depends On", | |||
"oldfieldname": "depends_on", | |||
"oldfieldtype": "Data", | |||
"options": "JS" | |||
"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": "Code", | |||
"label": "Depends On", | |||
"oldfieldname": "depends_on", | |||
"oldfieldtype": "Data", | |||
"options": "JS" | |||
}, | |||
{ | |||
"default": "0", | |||
"fieldname": "permlevel", | |||
"fieldtype": "Int", | |||
"in_list_view": 1, | |||
"label": "Perm Level", | |||
"oldfieldname": "permlevel", | |||
"oldfieldtype": "Int" | |||
"default": "0", | |||
"fieldname": "permlevel", | |||
"fieldtype": "Int", | |||
"in_list_view": 1, | |||
"label": "Perm Level", | |||
"oldfieldname": "permlevel", | |||
"oldfieldtype": "Int" | |||
}, | |||
{ | |||
"default": "0", | |||
"fieldname": "hidden", | |||
"fieldtype": "Check", | |||
"label": "Hidden", | |||
"oldfieldname": "hidden", | |||
"oldfieldtype": "Check", | |||
"print_width": "50px", | |||
"width": "50px" | |||
"default": "0", | |||
"fieldname": "hidden", | |||
"fieldtype": "Check", | |||
"label": "Hidden", | |||
"oldfieldname": "hidden", | |||
"oldfieldtype": "Check", | |||
"print_width": "50px", | |||
"width": "50px" | |||
}, | |||
{ | |||
"default": "0", | |||
"fieldname": "read_only", | |||
"fieldtype": "Check", | |||
"label": "Read Only" | |||
"default": "0", | |||
"fieldname": "read_only", | |||
"fieldtype": "Check", | |||
"label": "Read Only" | |||
}, | |||
{ | |||
"default": "0", | |||
"depends_on": "eval:doc.fieldtype==\"Section Break\"", | |||
"fieldname": "collapsible", | |||
"fieldtype": "Check", | |||
"label": "Collapsible" | |||
"default": "0", | |||
"depends_on": "eval:doc.fieldtype==\"Section Break\"", | |||
"fieldname": "collapsible", | |||
"fieldtype": "Check", | |||
"label": "Collapsible" | |||
}, | |||
{ | |||
"default": "0", | |||
"depends_on": "eval: doc.fieldtype == \"Table\"", | |||
"fieldname": "allow_bulk_edit", | |||
"fieldtype": "Check", | |||
"label": "Allow Bulk Edit" | |||
"default": "0", | |||
"depends_on": "eval: doc.fieldtype == \"Table\"", | |||
"fieldname": "allow_bulk_edit", | |||
"fieldtype": "Check", | |||
"label": "Allow Bulk Edit" | |||
}, | |||
{ | |||
"depends_on": "eval:doc.fieldtype==\"Section Break\"", | |||
"fieldname": "collapsible_depends_on", | |||
"fieldtype": "Code", | |||
"label": "Collapsible Depends On", | |||
"options": "JS" | |||
"depends_on": "eval:doc.fieldtype==\"Section Break\"", | |||
"fieldname": "collapsible_depends_on", | |||
"fieldtype": "Code", | |||
"label": "Collapsible Depends On", | |||
"options": "JS" | |||
}, | |||
{ | |||
"fieldname": "column_break_14", | |||
"fieldtype": "Column Break" | |||
"fieldname": "column_break_14", | |||
"fieldtype": "Column Break" | |||
}, | |||
{ | |||
"default": "0", | |||
"fieldname": "ignore_user_permissions", | |||
"fieldtype": "Check", | |||
"label": "Ignore User Permissions" | |||
"default": "0", | |||
"fieldname": "ignore_user_permissions", | |||
"fieldtype": "Check", | |||
"label": "Ignore User Permissions" | |||
}, | |||
{ | |||
"default": "0", | |||
"fieldname": "allow_on_submit", | |||
"fieldtype": "Check", | |||
"label": "Allow on Submit", | |||
"oldfieldname": "allow_on_submit", | |||
"oldfieldtype": "Check" | |||
"default": "0", | |||
"fieldname": "allow_on_submit", | |||
"fieldtype": "Check", | |||
"label": "Allow on Submit", | |||
"oldfieldname": "allow_on_submit", | |||
"oldfieldtype": "Check" | |||
}, | |||
{ | |||
"default": "0", | |||
"fieldname": "report_hide", | |||
"fieldtype": "Check", | |||
"label": "Report Hide", | |||
"oldfieldname": "report_hide", | |||
"oldfieldtype": "Check" | |||
"default": "0", | |||
"fieldname": "report_hide", | |||
"fieldtype": "Check", | |||
"label": "Report Hide", | |||
"oldfieldname": "report_hide", | |||
"oldfieldtype": "Check" | |||
}, | |||
{ | |||
"default": "0", | |||
"depends_on": "eval:(doc.fieldtype == 'Link')", | |||
"fieldname": "remember_last_selected_value", | |||
"fieldtype": "Check", | |||
"label": "Remember Last Selected Value" | |||
"default": "0", | |||
"depends_on": "eval:(doc.fieldtype == 'Link')", | |||
"fieldname": "remember_last_selected_value", | |||
"fieldtype": "Check", | |||
"label": "Remember Last Selected Value" | |||
}, | |||
{ | |||
"fieldname": "display", | |||
"fieldtype": "Section Break", | |||
"label": "Display" | |||
"fieldname": "display", | |||
"fieldtype": "Section Break", | |||
"label": "Display" | |||
}, | |||
{ | |||
"fieldname": "default", | |||
"fieldtype": "Text", | |||
"label": "Default", | |||
"oldfieldname": "default", | |||
"oldfieldtype": "Text" | |||
"fieldname": "default", | |||
"fieldtype": "Text", | |||
"label": "Default", | |||
"oldfieldname": "default", | |||
"oldfieldtype": "Text" | |||
}, | |||
{ | |||
"default": "0", | |||
"fieldname": "in_filter", | |||
"fieldtype": "Check", | |||
"label": "In Filter", | |||
"oldfieldname": "in_filter", | |||
"oldfieldtype": "Check", | |||
"print_width": "50px", | |||
"width": "50px" | |||
"default": "0", | |||
"fieldname": "in_filter", | |||
"fieldtype": "Check", | |||
"label": "In Filter", | |||
"oldfieldname": "in_filter", | |||
"oldfieldtype": "Check", | |||
"print_width": "50px", | |||
"width": "50px" | |||
}, | |||
{ | |||
"fieldname": "column_break_21", | |||
"fieldtype": "Column Break" | |||
"fieldname": "column_break_21", | |||
"fieldtype": "Column Break" | |||
}, | |||
{ | |||
"fieldname": "description", | |||
"fieldtype": "Text", | |||
"label": "Description", | |||
"oldfieldname": "description", | |||
"oldfieldtype": "Text", | |||
"print_width": "300px", | |||
"width": "300px" | |||
"fieldname": "description", | |||
"fieldtype": "Text", | |||
"label": "Description", | |||
"oldfieldname": "description", | |||
"oldfieldtype": "Text", | |||
"print_width": "300px", | |||
"width": "300px" | |||
}, | |||
{ | |||
"default": "0", | |||
"fieldname": "print_hide", | |||
"fieldtype": "Check", | |||
"label": "Print Hide", | |||
"oldfieldname": "print_hide", | |||
"oldfieldtype": "Check" | |||
"default": "0", | |||
"fieldname": "print_hide", | |||
"fieldtype": "Check", | |||
"label": "Print Hide", | |||
"oldfieldname": "print_hide", | |||
"oldfieldtype": "Check" | |||
}, | |||
{ | |||
"default": "0", | |||
"depends_on": "eval:[\"Int\", \"Float\", \"Currency\", \"Percent\"].indexOf(doc.fieldtype)!==-1", | |||
"fieldname": "print_hide_if_no_value", | |||
"fieldtype": "Check", | |||
"label": "Print Hide If No Value" | |||
"default": "0", | |||
"depends_on": "eval:[\"Int\", \"Float\", \"Currency\", \"Percent\"].indexOf(doc.fieldtype)!==-1", | |||
"fieldname": "print_hide_if_no_value", | |||
"fieldtype": "Check", | |||
"label": "Print Hide If No Value" | |||
}, | |||
{ | |||
"description": "Print Width of the field, if the field is a column in a table", | |||
"fieldname": "print_width", | |||
"fieldtype": "Data", | |||
"label": "Print Width", | |||
"print_width": "50px", | |||
"width": "50px" | |||
"description": "Print Width of the field, if the field is a column in a table", | |||
"fieldname": "print_width", | |||
"fieldtype": "Data", | |||
"label": "Print Width", | |||
"print_width": "50px", | |||
"width": "50px" | |||
}, | |||
{ | |||
"depends_on": "eval:cur_frm.doc.istable", | |||
"description": "Number of columns for a field in a Grid (Total Columns in a grid should be less than 11)", | |||
"fieldname": "columns", | |||
"fieldtype": "Int", | |||
"label": "Columns" | |||
"depends_on": "eval:cur_frm.doc.istable", | |||
"description": "Number of columns for a field in a Grid (Total Columns in a grid should be less than 11)", | |||
"fieldname": "columns", | |||
"fieldtype": "Int", | |||
"label": "Columns" | |||
}, | |||
{ | |||
"fieldname": "width", | |||
"fieldtype": "Data", | |||
"in_list_view": 1, | |||
"label": "Width", | |||
"oldfieldname": "width", | |||
"oldfieldtype": "Data", | |||
"print_width": "50px", | |||
"width": "50px" | |||
"fieldname": "width", | |||
"fieldtype": "Data", | |||
"in_list_view": 1, | |||
"label": "Width", | |||
"oldfieldname": "width", | |||
"oldfieldtype": "Data", | |||
"print_width": "50px", | |||
"width": "50px" | |||
}, | |||
{ | |||
"default": "0", | |||
"fieldname": "is_custom_field", | |||
"fieldtype": "Check", | |||
"hidden": 1, | |||
"label": "Is Custom Field", | |||
"read_only": 1 | |||
"default": "0", | |||
"fieldname": "is_custom_field", | |||
"fieldtype": "Check", | |||
"hidden": 1, | |||
"label": "Is Custom Field", | |||
"read_only": 1 | |||
}, | |||
{ | |||
"default": "0", | |||
"fieldname": "allow_in_quick_entry", | |||
"fieldtype": "Check", | |||
"label": "Allow in Quick Entry" | |||
"default": "0", | |||
"fieldname": "allow_in_quick_entry", | |||
"fieldtype": "Check", | |||
"label": "Allow in Quick Entry" | |||
}, | |||
{ | |||
"fieldname": "property_depends_on_section", | |||
"fieldtype": "Section Break", | |||
"label": "Property Depends On" | |||
"fieldname": "property_depends_on_section", | |||
"fieldtype": "Section Break", | |||
"label": "Property Depends On" | |||
}, | |||
{ | |||
"fieldname": "mandatory_depends_on", | |||
"fieldtype": "Code", | |||
"label": "Mandatory Depends On", | |||
"options": "JS" | |||
"fieldname": "mandatory_depends_on", | |||
"fieldtype": "Code", | |||
"label": "Mandatory Depends On", | |||
"options": "JS" | |||
}, | |||
{ | |||
"fieldname": "column_break_33", | |||
"fieldtype": "Column Break" | |||
"fieldname": "column_break_33", | |||
"fieldtype": "Column Break" | |||
}, | |||
{ | |||
"fieldname": "read_only_depends_on", | |||
"fieldtype": "Code", | |||
"label": "Read Only Depends On", | |||
"options": "JS" | |||
"fieldname": "read_only_depends_on", | |||
"fieldtype": "Code", | |||
"label": "Read Only Depends On", | |||
"options": "JS" | |||
}, | |||
{ | |||
"default": "0", | |||
"fieldname": "in_preview", | |||
"fieldtype": "Check", | |||
"label": "In Preview" | |||
"default": "0", | |||
"depends_on": "eval:!in_list(['Table', 'Table MultiSelect'], doc.fieldtype);", | |||
"fieldname": "in_preview", | |||
"fieldtype": "Check", | |||
"label": "In Preview" | |||
}, | |||
{ | |||
"default": "0", | |||
"depends_on": "eval:doc.fieldtype=='Duration'", | |||
"fieldname": "hide_seconds", | |||
"fieldtype": "Check", | |||
"label": "Hide Seconds" | |||
"default": "0", | |||
"depends_on": "eval:doc.fieldtype=='Duration'", | |||
"fieldname": "hide_seconds", | |||
"fieldtype": "Check", | |||
"label": "Hide Seconds" | |||
}, | |||
{ | |||
"default": "0", | |||
"depends_on": "eval:doc.fieldtype=='Duration'", | |||
"fieldname": "hide_days", | |||
"fieldtype": "Check", | |||
"label": "Hide Days" | |||
"default": "0", | |||
"depends_on": "eval:doc.fieldtype=='Duration'", | |||
"fieldname": "hide_days", | |||
"fieldtype": "Check", | |||
"label": "Hide Days" | |||
}, | |||
{ | |||
"default": "0", | |||
"depends_on": "eval:doc.fieldtype=='Section Break'", | |||
"fieldname": "hide_border", | |||
"fieldtype": "Check", | |||
"label": "Hide Border" | |||
"default": "0", | |||
"depends_on": "eval:doc.fieldtype=='Section Break'", | |||
"fieldname": "hide_border", | |||
"fieldtype": "Check", | |||
"label": "Hide Border" | |||
} | |||
], | |||
"idx": 1, | |||
"index_web_pages_for_search": 1, | |||
"istable": 1, | |||
"links": [], | |||
"modified": "2020-06-02 23:45:46.810868", | |||
"modified": "2020-08-28 11:28:59.084060", | |||
"modified_by": "Administrator", | |||
"module": "Custom", | |||
"name": "Customize Form Field", | |||
@@ -92,6 +92,8 @@ def bootstrap_database(db_name, verbose, source_sql=None): | |||
sys.exit(1) | |||
import_db_from_sql(source_sql, verbose) | |||
frappe.connect(db_name=db_name) | |||
if not 'tabDefaultValue' in frappe.db.get_tables(): | |||
print('''Database not installed, this can due to lack of permission, or that the database name exists. | |||
Check your mysql root password, or use --force to reinstall''') | |||
@@ -130,7 +130,7 @@ class FormMeta(Meta): | |||
def add_custom_script(self): | |||
"""embed all require files""" | |||
# custom script | |||
custom = frappe.db.get_value("Custom Script", {"dt": self.name}, "script") or "" | |||
custom = frappe.db.get_value("Custom Script", {"dt": self.name, "enabled": 1}, "script") or "" | |||
self.set("__custom_js", custom) | |||
@@ -1,5 +1,5 @@ | |||
import frappe | |||
from frappe.model import no_value_fields | |||
from frappe.model import no_value_fields, table_fields | |||
import json | |||
@frappe.whitelist() | |||
@@ -9,11 +9,13 @@ def get_preview_data(doctype, docname): | |||
if not meta.show_preview_popup: return | |||
preview_fields = [field.fieldname for field in meta.fields \ | |||
if field.in_preview and field.fieldtype not in no_value_fields] | |||
if field.in_preview and field.fieldtype not in no_value_fields \ | |||
and field.fieldtype not in table_fields] | |||
# no preview fields defined, build list from mandatory fields | |||
if not preview_fields: | |||
preview_fields = [field.fieldname for field in meta.fields if field.reqd] | |||
preview_fields = [field.fieldname for field in meta.fields if field.reqd \ | |||
and field.fieldtype not in table_fields] | |||
title_field = meta.get_title_field() | |||
image_field = meta.image_field | |||
@@ -359,8 +359,11 @@ def is_downgrade(sql_file_path, verbose=False): | |||
if head in line: | |||
# 'line' (str) format: ('2056588823','2020-05-11 18:21:31.488367','2020-06-12 11:49:31.079506','Administrator','Administrator',0,'Installed Applications','installed_applications','Installed Applications',1,'frappe','v10.1.71-74 (3c50d5e) (v10.x.x)','v10.x.x'),('855c640b8e','2020-05-11 18:21:31.488367','2020-06-12 11:49:31.079506','Administrator','Administrator',0,'Installed Applications','installed_applications','Installed Applications',2,'your_custom_app','0.0.1','master') | |||
line = line.strip().lstrip(head).rstrip(";").strip() | |||
app_rows = frappe.safe_eval(line) | |||
# check if iterable consists of tuples before trying to transform | |||
apps_list = app_rows if all(isinstance(app_row, (tuple, list, set)) for app_row in app_rows) else (app_rows, ) | |||
# 'all_apps' (list) format: [('frappe', '12.x.x-develop ()', 'develop'), ('your_custom_app', '0.0.1', 'master')] | |||
all_apps = [ x[-3:] for x in frappe.safe_eval(line) ] | |||
all_apps = [ x[-3:] for x in apps_list ] | |||
for app in all_apps: | |||
app_name = app[0] | |||
@@ -15,7 +15,7 @@ execute:frappe.reload_doc('core', 'doctype', 'custom_docperm') | |||
execute:frappe.reload_doc('core', 'doctype', 'docperm') #2018-05-29 | |||
execute:frappe.reload_doc('core', 'doctype', 'comment') | |||
frappe.patches.v8_0.drop_is_custom_from_docperm | |||
execute:frappe.reload_doc('core', 'doctype', 'module_def') #2017-09-22 | |||
execute:frappe.reload_doc('core', 'doctype', 'module_def') #2020-08-28 | |||
execute:frappe.reload_doc('core', 'doctype', 'version') #2017-04-01 | |||
execute:frappe.reload_doc('email', 'doctype', 'document_follow') | |||
execute:frappe.reload_doc('core', 'doctype', 'communication_link') #2019-10-02 | |||
@@ -304,4 +304,5 @@ frappe.patches.v13_0.increase_password_length | |||
frappe.patches.v13_0.add_toggle_width_in_navbar_settings | |||
frappe.patches.v13_0.rename_notification_fields | |||
frappe.patches.v13_0.remove_duplicate_navbar_items | |||
frappe.patches.v13_0.enable_custom_script | |||
frappe.patches.v13_0.update_newsletter_content_type |
@@ -0,0 +1,13 @@ | |||
# Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and Contributors | |||
# MIT License. See license.txt | |||
from __future__ import unicode_literals | |||
import frappe | |||
def execute(): | |||
"""Enable all the existing custom script""" | |||
frappe.reload_doc("Custom", "doctype", "Custom Script") | |||
frappe.db.sql(""" | |||
UPDATE `tabCustom Script` SET enabled=1 | |||
""") |
@@ -1,4 +1,5 @@ | |||
{ | |||
"actions": [], | |||
"allow_rename": 1, | |||
"autoname": "Prompt", | |||
"creation": "2013-01-23 19:54:43", | |||
@@ -181,7 +182,7 @@ | |||
"fieldname": "print_format_help", | |||
"fieldtype": "HTML", | |||
"label": "Print Format Help", | |||
"options": "<h3>Print Format Help</h3>\n<hr>\n<h4>Introduction</h4>\n<p>Print itemsFormats are rendered on the server side using the Jinja Templating Language. All forms have access to the <code>doc</code> object which contains information about the document that is being formatted. You can also access common utilities via the <code>frappe</code> module.</p>\n<p>For styling, the Boostrap CSS framework is provided and you can enjoy the full range of classes.</p>\n<hr>\n<h4>References</h4>\n<ol>\n\t<li><a href=\"http://jinja.pocoo.org/docs/templates/\" target=\"_blank\">Jinja Tempalting Language: Reference</a></li>\n\t<li><a href=\"http://getbootstrap.com\" target=\"_blank\">Bootstrap CSS Framework</a></li>\n</ol>\n<hr>\n<h4>Example</h4>\n<pre><code><h3>{{ doc.select_print_heading or \"Invoice\" }}</h3>\n<div class=\"row\">\n\t<div class=\"col-md-3 text-right\">Customer Name</div>\n\t<div class=\"col-md-9\">{{ doc.customer_name }}</div>\n</div>\n<div class=\"row\">\n\t<div class=\"col-md-3 text-right\">Date</div>\n\t<div class=\"col-md-9\">{{ doc.get_formatted(\"invoice_date\") }}</div>\n</div>\n<table class=\"table table-bordered\">\n\t<tbody>\n\t\t<tr>\n\t\t\t<th>Sr</th>\n\t\t\t<th>Item Name</th>\n\t\t\t<th>Description</th>\n\t\t\t<th class=\"text-right\">Qty</th>\n\t\t\t<th class=\"text-right\">Rate</th>\n\t\t\t<th class=\"text-right\">Amount</th>\n\t\t</tr>\n\t\t{%- for row in doc.items -%}\n\t\t<tr>\n\t\t\t<td style=\"width: 3%;\">{{ row.idx }}</td>\n\t\t\t<td style=\"width: 20%;\">\n\t\t\t\t{{ row.item_name }}\n\t\t\t\t{% if row.item_code != row.item_name -%}\n\t\t\t\t<br>Item Code: {{ row.item_code}}\n\t\t\t\t{%- endif %}\n\t\t\t</td>\n\t\t\t<td style=\"width: 37%;\">\n\t\t\t\t<div style=\"border: 0px;\">{{ row.description }}</div></td>\n\t\t\t<td style=\"width: 10%; text-align: right;\">{{ row.qty }} {{ row.uom or row.stock_uom }}</td>\n\t\t\t<td style=\"width: 15%; text-align: right;\">{{\n\t\t\t\trow.get_formatted(\"rate\", doc) }}</td>\n\t\t\t<td style=\"width: 15%; text-align: right;\">{{\n\t\t\t\trow.get_formatted(\"amount\", doc) }}</td>\n\t\t</tr>\n\t\t{%- endfor -%}\n\t</tbody>\n</table></code></pre>\n<hr>\n<h4>Common Functions</h4>\n<table class=\"table table-bordered\">\n\t<tbody>\n\t\t<tr>\n\t\t\t<td style=\"width: 30%;\"><code>doc.get_formatted(\"[fieldname]\", [parent_doc])</code></td>\n\t\t\t<td>Get document value formatted as Date, Currency etc. Pass parent <code>doc</code> for curreny type fields.</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td style=\"width: 30%;\"><code>frappe.db.get_value(\"[doctype]\", \"[name]\", \"fieldname\")</code></td>\n\t\t\t<td>Get value from another document.</td>\n\t\t</tr>\n\t</tbody>\n</table>\n" | |||
"options": "<h3>Print Format Help</h3>\n<hr>\n<h4>Introduction</h4>\n<p>Print Formats are rendered on the server side using the Jinja Templating Language. All forms have access to the <code>doc</code> object which contains information about the document that is being formatted. You can also access common utilities via the <code>frappe</code> module.</p>\n<p>For styling, the Boostrap CSS framework is provided and you can enjoy the full range of classes.</p>\n<hr>\n<h4>References</h4>\n<ol>\n\t<li><a href=\"http://jinja.pocoo.org/docs/templates/\" target=\"_blank\">Jinja Templating Language</a></li>\n\t<li><a href=\"http://getbootstrap.com\" target=\"_blank\">Bootstrap CSS Framework</a></li>\n</ol>\n<hr>\n<h4>Example</h4>\n<pre><code><h3>{{ doc.select_print_heading or \"Invoice\" }}</h3>\n<div class=\"row\">\n\t<div class=\"col-md-3 text-right\">Customer Name</div>\n\t<div class=\"col-md-9\">{{ doc.customer_name }}</div>\n</div>\n<div class=\"row\">\n\t<div class=\"col-md-3 text-right\">Date</div>\n\t<div class=\"col-md-9\">{{ doc.get_formatted(\"invoice_date\") }}</div>\n</div>\n<table class=\"table table-bordered\">\n\t<tbody>\n\t\t<tr>\n\t\t\t<th>Sr</th>\n\t\t\t<th>Item Name</th>\n\t\t\t<th>Description</th>\n\t\t\t<th class=\"text-right\">Qty</th>\n\t\t\t<th class=\"text-right\">Rate</th>\n\t\t\t<th class=\"text-right\">Amount</th>\n\t\t</tr>\n\t\t{%- for row in doc.items -%}\n\t\t<tr>\n\t\t\t<td style=\"width: 3%;\">{{ row.idx }}</td>\n\t\t\t<td style=\"width: 20%;\">\n\t\t\t\t{{ row.item_name }}\n\t\t\t\t{% if row.item_code != row.item_name -%}\n\t\t\t\t<br>Item Code: {{ row.item_code}}\n\t\t\t\t{%- endif %}\n\t\t\t</td>\n\t\t\t<td style=\"width: 37%;\">\n\t\t\t\t<div style=\"border: 0px;\">{{ row.description }}</div></td>\n\t\t\t<td style=\"width: 10%; text-align: right;\">{{ row.qty }} {{ row.uom or row.stock_uom }}</td>\n\t\t\t<td style=\"width: 15%; text-align: right;\">{{\n\t\t\t\trow.get_formatted(\"rate\", doc) }}</td>\n\t\t\t<td style=\"width: 15%; text-align: right;\">{{\n\t\t\t\trow.get_formatted(\"amount\", doc) }}</td>\n\t\t</tr>\n\t\t{%- endfor -%}\n\t</tbody>\n</table></code></pre>\n<hr>\n<h4>Common Functions</h4>\n<table class=\"table table-bordered\">\n\t<tbody>\n\t\t<tr>\n\t\t\t<td style=\"width: 30%;\"><code>doc.get_formatted(\"[fieldname]\", [parent_doc])</code></td>\n\t\t\t<td>Get document value formatted as Date, Currency, etc. Pass parent <code>doc</code> for currency type fields.</td>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<td style=\"width: 30%;\"><code>frappe.db.get_value(\"[doctype]\", \"[name]\", \"fieldname\")</code></td>\n\t\t\t<td>Get value from another document.</td>\n\t\t</tr>\n\t</tbody>\n</table>\n" | |||
}, | |||
{ | |||
"fieldname": "format_data", | |||
@@ -199,8 +200,10 @@ | |||
], | |||
"icon": "fa fa-print", | |||
"idx": 1, | |||
"modified": "2019-11-28 12:40:40.364699", | |||
"modified_by": "faris@erpnext.com", | |||
"index_web_pages_for_search": 1, | |||
"links": [], | |||
"modified": "2020-08-29 11:44:59.082797", | |||
"modified_by": "Administrator", | |||
"module": "Printing", | |||
"name": "Print Format", | |||
"owner": "Administrator", | |||
@@ -276,32 +276,32 @@ export default class GridRow { | |||
make_column(df, colsize, txt, ci) { | |||
let me = this; | |||
var add_class = ((["Text", "Small Text"].indexOf(df.fieldtype)!==-1) ? | |||
var add_class = ((["Text", "Small Text"].indexOf(df.fieldtype) !== -1) ? | |||
" grid-overflow-no-ellipsis" : ""); | |||
add_class += (["Int", "Currency", "Float", "Percent"].indexOf(df.fieldtype)!==-1) ? | |||
" text-right": ""; | |||
add_class += (["Check"].indexOf(df.fieldtype)!==-1) ? | |||
" text-center": ""; | |||
add_class += (["Int", "Currency", "Float", "Percent"].indexOf(df.fieldtype) !== -1) ? | |||
" text-right" : ""; | |||
add_class += (["Check"].indexOf(df.fieldtype) !== -1) ? | |||
" text-center" : ""; | |||
var $col = $('<div class="col grid-static-col col-xs-'+colsize+' '+add_class+'"></div>') | |||
var $col = $('<div class="col grid-static-col col-xs-' + colsize + ' ' + add_class + '"></div>') | |||
.attr("data-fieldname", df.fieldname) | |||
.attr("data-fieldtype", df.fieldtype) | |||
.data("df", df) | |||
.appendTo(this.row) | |||
.on('click', function() { | |||
if(frappe.ui.form.editable_row===me) { | |||
.on('click', function () { | |||
if (frappe.ui.form.editable_row === me) { | |||
return; | |||
} | |||
var out = me.toggle_editable_row(); | |||
var col = this; | |||
setTimeout(function() { | |||
setTimeout(function () { | |||
$(col).find('input[type="Text"]:first').focus(); | |||
}, 500); | |||
return out; | |||
}); | |||
$col.field_area = $('<div class="field-area"></div>').appendTo($col).toggle(false); | |||
$col.static_area = $('<div class="static-area ellipsis"></div>').appendTo($col).html(txt); | |||
$col.static_area = $('<div class="static-area ellipsis"></div>').appendTo($col).html(frappe.utils.escape_html(txt)); | |||
$col.df = df; | |||
$col.column_index = ci; | |||
@@ -577,39 +577,39 @@ export default class GridRow { | |||
var df = this.grid.get_docfield(fieldname) || undefined; | |||
// format values if no frm | |||
if(!df) { | |||
if (!df) { | |||
df = this.grid.visible_columns.find((col) => { | |||
return col[0].fieldname === fieldname; | |||
}); | |||
if(df && this.doc) { | |||
if (df && this.doc) { | |||
var txt = frappe.format(this.doc[fieldname], df[0], | |||
null, this.doc); | |||
} | |||
} | |||
if(txt===undefined && this.frm) { | |||
if (txt === undefined && this.frm) { | |||
var txt = frappe.format(this.doc[fieldname], df, | |||
null, this.frm.doc); | |||
} | |||
// reset static value | |||
var column = this.columns[fieldname]; | |||
if(column) { | |||
column.static_area.html(txt || ""); | |||
if(df && df.reqd) { | |||
column.toggleClass('error', !!(txt===null || txt==='')); | |||
if (column) { | |||
column.static_area.html(frappe.utils.escape_html(txt) || ""); | |||
if (df && df.reqd) { | |||
column.toggleClass('error', !!(txt === null || txt === '')); | |||
} | |||
} | |||
// reset field value | |||
var field = this.on_grid_fields_dict[fieldname]; | |||
if(field) { | |||
if (field) { | |||
field.docname = this.doc.name; | |||
field.refresh(); | |||
} | |||
// in form | |||
if(this.grid_form) { | |||
if (this.grid_form) { | |||
this.grid_form.refresh_field(fieldname); | |||
} | |||
} | |||
@@ -6,7 +6,7 @@ frappe.ui.misc.about = function() { | |||
$(d.body).html(repl("<div>\ | |||
<p>"+__("Open Source Applications for the Web")+"</p> \ | |||
<p><i class='fa fa-globe fa-fw'></i>\ | |||
Website: <a href='https://frappe.io' target='_blank'>https://frappe.io</a></p>\ | |||
Website: <a href='https://frappeframework.com' target='_blank'>https://frappeframework.com</a></p>\ | |||
<p><i class='fa fa-github fa-fw'></i>\ | |||
Source: <a href='https://github.com/frappe' target='_blank'>https://github.com/frappe</a></p>\ | |||
<p><i class='fa fa-linkedin fa-fw'></i>\ | |||
@@ -592,6 +592,8 @@ frappe.views.QueryReport = class QueryReport extends frappe.views.BaseList { | |||
this.render_summary(data.report_summary); | |||
} | |||
if (data.message && !data.prepared_report) this.show_status(data.message); | |||
this.toggle_message(false); | |||
if (data.result && data.result.length) { | |||
this.prepare_report_data(data); | |||
@@ -1041,7 +1043,7 @@ frappe.views.QueryReport = class QueryReport extends frappe.views.BaseList { | |||
if (column.colIndex === index && !value) { | |||
value = "Total"; | |||
column.fieldtype = "Data"; // avoid type issues for value if Date column | |||
column = { fieldtype: "Data" }; // avoid type issues for value if Date column | |||
} else if (in_list(["Currency", "Float"], column.fieldtype)) { | |||
// proxy for currency and float | |||
data = this.data[0]; | |||
@@ -1,5 +1,5 @@ | |||
<!DOCTYPE html> | |||
<!-- Built on Frappe. https://frappe.io/ --> | |||
<!-- Built on Frappe. https://frappeframework.com/ --> | |||
<html lang="en"> | |||
<head> | |||
<meta charset="utf-8"> | |||
@@ -1 +1 @@ | |||
<a href="https://frappe.io?source=website_footer" target="_blank" class="text-muted">Built on Frappe</a> | |||
<a href="https://frappeframework.com?source=website_footer" target="_blank" class="text-muted">Built on Frappe</a> |
@@ -51,10 +51,23 @@ class BackupGenerator: | |||
site = frappe.local.site or frappe.generate_hash(length=8) | |||
self.site_slug = site.replace('.', '_') | |||
self.verbose = verbose | |||
self.setup_backup_directory() | |||
_verbose = verbose | |||
def setup_backup_directory(self): | |||
specified = self.backup_path_db or self.backup_path_files or self.backup_path_private_files | |||
if not specified: | |||
backups_folder = get_backup_path() | |||
if not os.path.exists(backups_folder): | |||
os.makedirs(backups_folder) | |||
else: | |||
for file_path in [self.backup_path_files, self.backup_path_db, self.backup_path_private_files]: | |||
dir = os.path.dirname(file_path) | |||
os.makedirs(dir, exist_ok=True) | |||
def get_backup(self, older_than=24, ignore_files=False, force=False): | |||
""" | |||
Takes a new dump if existing file is old | |||
@@ -406,6 +406,10 @@ def extract_images_from_html(doc, content): | |||
doctype = doc.parenttype if doc.parent else doc.doctype | |||
name = doc.parent or doc.name | |||
if doc.doctype == "Comment": | |||
doctype = doc.reference_doctype | |||
name = doc.reference_name | |||
# TODO fix this | |||
file_url = save_file(filename, content, doctype, name, decode=True).get("file_url") | |||
if not frappe.flags.has_dataurl: | |||
@@ -110,6 +110,7 @@ | |||
"depends_on": "eval:doc.content_type === 'Markdown'", | |||
"fieldname": "content_md", | |||
"fieldtype": "Markdown Editor", | |||
"ignore_xss_filter": 1, | |||
"label": "Content (Markdown)" | |||
}, | |||
{ | |||
@@ -193,7 +194,7 @@ | |||
"is_published_field": "published", | |||
"links": [], | |||
"max_attachments": 5, | |||
"modified": "2020-07-21 16:25:17.154911", | |||
"modified": "2020-08-31 16:55:03.687862", | |||
"modified_by": "Administrator", | |||
"module": "Website", | |||
"name": "Blog Post", | |||
@@ -209,7 +209,7 @@ | |||
"label": "Client Script" | |||
}, | |||
{ | |||
"description": "For help see <a href=\"https://frappe.io/docs/user/en/guides/portal-development/web-forms\" target=\"_blank\">Client Script API and Examples</a>", | |||
"description": "For help see <a href=\"https://frappeframework.com/docs/user/en/guides/portal-development/web-forms\" target=\"_blank\">Client Script API and Examples</a>", | |||
"fieldname": "client_script", | |||
"fieldtype": "Code", | |||
"label": "Client Script" | |||
@@ -126,6 +126,7 @@ | |||
"depends_on": "eval:doc.content_type==='Markdown'", | |||
"fieldname": "main_section_md", | |||
"fieldtype": "Markdown Editor", | |||
"ignore_xss_filter": 1, | |||
"label": "Main Section (Markdown)" | |||
}, | |||
{ | |||
@@ -294,7 +295,7 @@ | |||
"is_published_field": "published", | |||
"links": [], | |||
"max_attachments": 20, | |||
"modified": "2020-08-07 10:55:54.885448", | |||
"modified": "2020-08-31 16:55:52.015249", | |||
"modified_by": "Administrator", | |||
"module": "Website", | |||
"name": "Web Page", | |||
@@ -17,7 +17,7 @@ | |||
"bugs": { | |||
"url": "https://github.com/frappe/frappe/issues" | |||
}, | |||
"homepage": "https://frappe.io", | |||
"homepage": "https://frappeframework.com", | |||
"dependencies": { | |||
"ace-builds": "^1.4.8", | |||
"air-datepicker": "http://github.com/frappe/air-datepicker", | |||