diff --git a/frappe/app.py b/frappe/app.py index c356741423..8f836138c5 100644 --- a/frappe/app.py +++ b/frappe/app.py @@ -81,6 +81,12 @@ def application(request): frappe.db.commit() rollback = False + # update session + if getattr(frappe.local, "session_obj", None): + updated_in_db = frappe.local.session_obj.update() + if updated_in_db: + frappe.db.commit() + finally: if frappe.local.request.method in ("POST", "PUT") and frappe.db and rollback: frappe.db.rollback() diff --git a/frappe/config/setup.py b/frappe/config/setup.py index 318a0aa8d7..ce0d4e08ab 100644 --- a/frappe/config/setup.py +++ b/frappe/config/setup.py @@ -121,6 +121,11 @@ def get_data(): "name": "Outgoing Email Settings", "description": _("Set outgoing mail server.") }, + { + "type": "doctype", + "name": "Standard Reply", + "description": _("Standard replies to common queries.") + }, ] }, { diff --git a/frappe/core/doctype/custom_script/custom_script.json b/frappe/core/doctype/custom_script/custom_script.json index 95c302f1f3..8ad35d8c86 100644 --- a/frappe/core/doctype/custom_script/custom_script.json +++ b/frappe/core/doctype/custom_script/custom_script.json @@ -1,6 +1,6 @@ { "autoname": "CustomScript.####", - "creation": "2013-01-10 16:34:01.000000", + "creation": "2013-01-10 16:34:01", "description": "Adds a custom script (client or server) to a DocType", "docstatus": 0, "doctype": "DocType", @@ -8,6 +8,7 @@ { "fieldname": "dt", "fieldtype": "Link", + "in_list_view": 1, "label": "DocType", "oldfieldname": "dt", "oldfieldtype": "Link", @@ -19,6 +20,7 @@ "fieldname": "script_type", "fieldtype": "Select", "hidden": 1, + "in_list_view": 1, "label": "Script Type", "oldfieldname": "script_type", "oldfieldtype": "Select", @@ -29,16 +31,24 @@ { "fieldname": "script", "fieldtype": "Code", + "in_list_view": 1, "label": "Script", "oldfieldname": "script", "oldfieldtype": "Code", "options": "Script", "permlevel": 0 + }, + { + "fieldname": "sample", + "fieldtype": "HTML", + "label": "Sample", + "options": "
Custom Scripts are executed only on the client-side (i.e. in Forms). Here are some examples to get you started
\n\n// additional validation on dates\ncur_frm.cscript.custom_validate = function(doc) {\n if (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\ncur_frm.cscript.custom_refresh = function(doc) {\n // use the __islocal value of doc, to check if the doc is saved or not\n cur_frm.set_df_property(\"myfield\", \"read_only\", doc.__islocal ? 0 : 1);\n}\n\n// addtional permission checking\ncur_frm.cscript.custom_validate = function(doc) {\n if(user==\"user1@example.com\" && doc.purpose!=\"Material Receipt\") {\n msgprint(\"You are only allowed Material Receipt\");\n validated = false;\n }\n}\n\n// calculate sales incentive\ncur_frm.cscript.custom_validate = function(doc) {\n // calculate incentives for each person on the deal\n total_incentive = 0\n $.each(wn.model.get(\"Sales Team\", {parent:doc.name}), function(i, d) {\n\n // calculate incentive\n var incentive_percent = 2;\n if(doc.grand_total > 400) incentive_percent = 4;\n\n // actual incentive\n d.incentives = flt(doc.grand_total) * incentive_percent / 100;\n total_incentive += flt(d.incentives)\n });\n\n doc.total_incentive = total_incentive;\n}\n
\n
",
+ "permlevel": 0
}
],
"icon": "icon-glass",
"idx": 1,
- "modified": "2014-01-20 17:48:31.000000",
+ "modified": "2014-06-19 06:55:02.522204",
"modified_by": "Administrator",
"module": "Core",
"name": "Custom Script",
diff --git a/frappe/core/doctype/doctype/doctype.py b/frappe/core/doctype/doctype/doctype.py
index eace9366f3..963c7dbb93 100644
--- a/frappe/core/doctype/doctype/doctype.py
+++ b/frappe/core/doctype/doctype/doctype.py
@@ -41,7 +41,7 @@ class DocType(Document):
frappe.db.sql('UPDATE tabDocType SET modified=%s WHERE `name`=%s', (now(), p[0]))
def scrub_field_names(self):
- restricted = ('name','parent','idx','owner','creation','modified','modified_by',
+ restricted = ('name','parent','creation','modified','modified_by',
'parentfield','parenttype',"file_list")
for d in self.get("fields"):
if d.fieldtype:
diff --git a/frappe/core/doctype/standard_reply/__init__.py b/frappe/core/doctype/standard_reply/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/frappe/core/doctype/standard_reply/standard_reply.json b/frappe/core/doctype/standard_reply/standard_reply.json
new file mode 100644
index 0000000000..bbb7c45546
--- /dev/null
+++ b/frappe/core/doctype/standard_reply/standard_reply.json
@@ -0,0 +1,71 @@
+{
+ "allow_import": 1,
+ "autoname": "field:subject",
+ "creation": "2014-06-19 05:20:26.331041",
+ "docstatus": 0,
+ "doctype": "DocType",
+ "document_type": "Transaction",
+ "fields": [
+ {
+ "fieldname": "subject",
+ "fieldtype": "Data",
+ "in_list_view": 1,
+ "label": "Subject",
+ "permlevel": 0,
+ "reqd": 1
+ },
+ {
+ "fieldname": "response",
+ "fieldtype": "Text Editor",
+ "in_list_view": 1,
+ "label": "Response",
+ "permlevel": 0,
+ "reqd": 1
+ },
+ {
+ "default": "user",
+ "fieldname": "owner",
+ "fieldtype": "Link",
+ "hidden": 1,
+ "label": "Owner",
+ "options": "User",
+ "permlevel": 0
+ }
+ ],
+ "icon": "icon-comment",
+ "modified": "2014-06-19 05:45:09.855045",
+ "modified_by": "Administrator",
+ "module": "Core",
+ "name": "Standard Reply",
+ "name_case": "",
+ "owner": "Administrator",
+ "permissions": [
+ {
+ "permlevel": 0,
+ "read": 1,
+ "role": "All"
+ },
+ {
+ "apply_user_permissions": 1,
+ "create": 1,
+ "permlevel": 0,
+ "read": 1,
+ "role": "All",
+ "write": 1
+ },
+ {
+ "create": 1,
+ "delete": 1,
+ "email": 1,
+ "export": 1,
+ "import": 1,
+ "permlevel": 0,
+ "read": 1,
+ "report": 1,
+ "role": "System Manager",
+ "write": 1
+ }
+ ],
+ "sort_field": "modified",
+ "sort_order": "DESC"
+}
\ No newline at end of file
diff --git a/frappe/core/doctype/standard_reply/standard_reply.py b/frappe/core/doctype/standard_reply/standard_reply.py
new file mode 100644
index 0000000000..54937b3a58
--- /dev/null
+++ b/frappe/core/doctype/standard_reply/standard_reply.py
@@ -0,0 +1,9 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe.model.document import Document
+
+class StandardReply(Document):
+ pass
\ No newline at end of file
diff --git a/frappe/core/doctype/system_settings/system_settings.json b/frappe/core/doctype/system_settings/system_settings.json
index 50cffa5454..dbc9eaead8 100644
--- a/frappe/core/doctype/system_settings/system_settings.json
+++ b/frappe/core/doctype/system_settings/system_settings.json
@@ -1,100 +1,100 @@
{
- "creation": "2014-04-17 16:53:52.640856",
- "docstatus": 0,
- "doctype": "DocType",
- "document_type": "System",
+ "creation": "2014-04-17 16:53:52.640856",
+ "docstatus": 0,
+ "doctype": "DocType",
+ "document_type": "System",
"fields": [
{
- "fieldname": "localization",
- "fieldtype": "Section Break",
- "label": "Localization",
+ "fieldname": "localization",
+ "fieldtype": "Section Break",
+ "label": "Localization",
"permlevel": 0
- },
+ },
{
- "fieldname": "language",
- "fieldtype": "Select",
- "in_list_view": 1,
- "label": "Language",
- "options": "Loading...",
- "permlevel": 0,
- "reqd": 1,
+ "fieldname": "language",
+ "fieldtype": "Select",
+ "in_list_view": 1,
+ "label": "Language",
+ "options": "Loading...",
+ "permlevel": 0,
+ "reqd": 1,
"search_index": 0
- },
+ },
{
- "fieldname": "time_zone",
- "fieldtype": "Select",
- "label": "Time Zone",
- "permlevel": 0,
+ "fieldname": "time_zone",
+ "fieldtype": "Select",
+ "label": "Time Zone",
+ "permlevel": 0,
"reqd": 1
- },
+ },
{
- "fieldname": "date_and_number_format",
- "fieldtype": "Section Break",
- "label": "Date and Number Format",
+ "fieldname": "date_and_number_format",
+ "fieldtype": "Section Break",
+ "label": "Date and Number Format",
"permlevel": 0
- },
+ },
{
- "fieldname": "date_format",
- "fieldtype": "Select",
- "label": "Date Format",
- "options": "yyyy-mm-dd\ndd-mm-yyyy\ndd/mm/yyyy\ndd.mm.yyyy\nmm/dd/yyyy\nmm-dd-yyyy",
- "permlevel": 0,
+ "fieldname": "date_format",
+ "fieldtype": "Select",
+ "label": "Date Format",
+ "options": "yyyy-mm-dd\ndd-mm-yyyy\ndd/mm/yyyy\ndd.mm.yyyy\nmm/dd/yyyy\nmm-dd-yyyy",
+ "permlevel": 0,
"reqd": 1
- },
+ },
{
- "fieldname": "number_format",
- "fieldtype": "Select",
- "label": "Number Format",
- "options": "#,###.##\n#.###,##\n# ###.##\n# ###,##\n#,###.###\n#,##,###.##\n#.###\n#,###",
- "permlevel": 0,
+ "fieldname": "number_format",
+ "fieldtype": "Select",
+ "label": "Number Format",
+ "options": "#,###.##\n#.###,##\n# ###.##\n# ###,##\n#'###.##\n#, ###.##\n#,##,###.##\n#,###.###\n#.###\n#,###",
+ "permlevel": 0,
"reqd": 1
- },
+ },
{
- "fieldname": "float_precision",
- "fieldtype": "Select",
- "label": "Float Precision",
- "options": "\n2\n3\n4\n5\n6",
+ "fieldname": "float_precision",
+ "fieldtype": "Select",
+ "label": "Float Precision",
+ "options": "\n2\n3\n4\n5\n6",
"permlevel": 0
- },
+ },
{
- "fieldname": "security",
- "fieldtype": "Section Break",
- "label": "Security",
+ "fieldname": "security",
+ "fieldtype": "Section Break",
+ "label": "Security",
"permlevel": 0
- },
+ },
{
- "default": "06:00",
- "description": "Session Expiry in Hours e.g. 06:00",
- "fieldname": "session_expiry",
- "fieldtype": "Data",
- "label": "Session Expiry",
- "options": "",
+ "default": "06:00",
+ "description": "Session Expiry in Hours e.g. 06:00",
+ "fieldname": "session_expiry",
+ "fieldtype": "Data",
+ "label": "Session Expiry",
+ "options": "",
"permlevel": 0
- },
+ },
{
- "description": "Run scheduled jobs only if checked",
- "fieldname": "enable_scheduler",
- "fieldtype": "Check",
- "in_list_view": 0,
- "label": "Enable Scheduled Jobs",
+ "description": "Run scheduled jobs only if checked",
+ "fieldname": "enable_scheduler",
+ "fieldtype": "Check",
+ "in_list_view": 0,
+ "label": "Enable Scheduled Jobs",
"permlevel": 0
}
- ],
- "icon": "icon-cog",
- "issingle": 1,
- "modified": "2014-06-02 02:09:03.623094",
- "modified_by": "Administrator",
- "module": "Core",
- "name": "System Settings",
- "name_case": "",
- "owner": "Administrator",
+ ],
+ "icon": "icon-cog",
+ "issingle": 1,
+ "modified": "2014-06-18 02:09:03.623094",
+ "modified_by": "Administrator",
+ "module": "Core",
+ "name": "System Settings",
+ "name_case": "",
+ "owner": "Administrator",
"permissions": [
{
- "create": 1,
- "permlevel": 0,
- "read": 1,
- "role": "System Manager",
+ "create": 1,
+ "permlevel": 0,
+ "read": 1,
+ "role": "System Manager",
"write": 1
}
]
-}
\ No newline at end of file
+}
diff --git a/frappe/core/page/data_import_tool/data_import_tool.js b/frappe/core/page/data_import_tool/data_import_tool.js
index 6dd953ad17..64196121e7 100644
--- a/frappe/core/page/data_import_tool/data_import_tool.js
+++ b/frappe/core/page/data_import_tool/data_import_tool.js
@@ -161,7 +161,8 @@ frappe.pages['data-import-tool'].onload = function(wrapper) {
$("#dit-output").empty();
$.each(r.messages, function(i, v) {
- var $p = $('').html(v).appendTo('#dit-output'); + var $p = $('
').html(frappe.markdown(v)).appendTo('#dit-output'); + $("