浏览代码

[refactor] frappe.widgets > frappe.desk

version-14
Rushabh Mehta 11 年前
父节点
当前提交
5a0a9aac66
共有 100 个文件被更改,包括 400 次插入425 次删除
  1. +2
    -2
      frappe/__init__.py
  2. +2
    -2
      frappe/api.py
  3. +3
    -3
      frappe/boot.py
  4. +1
    -1
      frappe/config/setup.py
  5. +0
    -84
      frappe/core/doctype/letter_head/letter_head.json
  6. +0
    -183
      frappe/core/doctype/print_format/print_format.json
  7. +0
    -96
      frappe/core/doctype/print_settings/print_settings.json
  8. +1
    -1
      frappe/core/doctype/user/user.py
  9. +1
    -1
      frappe/core/notifications.py
  10. +1
    -1
      frappe/core/report/todo/todo.py
  11. +0
    -0
      frappe/desk/__init__.py
  12. +0
    -0
      frappe/desk/calendar.py
  13. +0
    -0
      frappe/desk/doctype/__init__.py
  14. +0
    -0
      frappe/desk/doctype/event/README.md
  15. +0
    -0
      frappe/desk/doctype/event/__init__.py
  16. +0
    -0
      frappe/desk/doctype/event/event.js
  17. +1
    -1
      frappe/desk/doctype/event/event.json
  18. +0
    -0
      frappe/desk/doctype/event/event.py
  19. +1
    -1
      frappe/desk/doctype/event/event_calendar.js
  20. +1
    -1
      frappe/desk/doctype/event/test_event.py
  21. +0
    -0
      frappe/desk/doctype/event/test_records.json
  22. +0
    -0
      frappe/desk/doctype/event_role/README.md
  23. +0
    -0
      frappe/desk/doctype/event_role/__init__.py
  24. +1
    -1
      frappe/desk/doctype/event_role/event_role.json
  25. +0
    -0
      frappe/desk/doctype/event_role/event_role.py
  26. +0
    -0
      frappe/desk/doctype/event_user/README.md
  27. +0
    -0
      frappe/desk/doctype/event_user/__init__.py
  28. +1
    -1
      frappe/desk/doctype/event_user/event_user.json
  29. +0
    -0
      frappe/desk/doctype/event_user/event_user.py
  30. +0
    -0
      frappe/desk/doctype/todo/README.md
  31. +0
    -0
      frappe/desk/doctype/todo/__init__.py
  32. +0
    -0
      frappe/desk/doctype/todo/todo.js
  33. +1
    -1
      frappe/desk/doctype/todo/todo.json
  34. +0
    -0
      frappe/desk/doctype/todo/todo.py
  35. +0
    -0
      frappe/desk/doctype/todo/todo_list.html
  36. +0
    -0
      frappe/desk/doctype/todo/todo_list.js
  37. +0
    -0
      frappe/desk/form/__init__.py
  38. +1
    -1
      frappe/desk/form/assign_to.py
  39. +3
    -3
      frappe/desk/form/load.py
  40. +0
    -0
      frappe/desk/form/meta.py
  41. +0
    -0
      frappe/desk/form/run_method.py
  42. +1
    -1
      frappe/desk/form/save.py
  43. +1
    -1
      frappe/desk/form/test_form.py
  44. +6
    -6
      frappe/desk/form/utils.py
  45. +1
    -1
      frappe/desk/moduleview.py
  46. +0
    -0
      frappe/desk/page.py
  47. +0
    -0
      frappe/desk/page/__init__.py
  48. +0
    -0
      frappe/desk/page/applications/__init__.py
  49. +0
    -0
      frappe/desk/page/applications/applications.js
  50. +1
    -1
      frappe/desk/page/applications/applications.json
  51. +0
    -0
      frappe/desk/page/applications/applications.py
  52. +0
    -0
      frappe/desk/page/messages/README.md
  53. +0
    -0
      frappe/desk/page/messages/__init__.py
  54. +0
    -0
      frappe/desk/page/messages/messages.html
  55. +0
    -0
      frappe/desk/page/messages/messages.js
  56. +0
    -0
      frappe/desk/page/messages/messages.json
  57. +0
    -0
      frappe/desk/page/messages/messages.py
  58. +0
    -0
      frappe/desk/page_body.py
  59. +1
    -1
      frappe/desk/query_builder.py
  60. +2
    -2
      frappe/desk/query_report.py
  61. +0
    -0
      frappe/desk/report_dump.py
  62. +0
    -0
      frappe/desk/reportview.py
  63. +2
    -2
      frappe/desk/search.py
  64. +0
    -0
      frappe/desk/tags.py
  65. +2
    -2
      frappe/handler.py
  66. +5
    -5
      frappe/hooks.py
  67. +2
    -1
      frappe/modules.txt
  68. +0
    -0
      frappe/print/__init__.py
  69. +0
    -0
      frappe/print/doctype/__init__.py
  70. +0
    -0
      frappe/print/doctype/letter_head/README.md
  71. +0
    -0
      frappe/print/doctype/letter_head/__init__.py
  72. +0
    -0
      frappe/print/doctype/letter_head/letter_head.js
  73. +84
    -0
      frappe/print/doctype/letter_head/letter_head.json
  74. +0
    -0
      frappe/print/doctype/letter_head/letter_head.py
  75. +0
    -0
      frappe/print/doctype/letter_head/test_letter_head.py
  76. +0
    -0
      frappe/print/doctype/letter_head/test_records.json
  77. +0
    -0
      frappe/print/doctype/print_format/README.md
  78. +0
    -0
      frappe/print/doctype/print_format/__init__.py
  79. +0
    -0
      frappe/print/doctype/print_format/print_format.js
  80. +157
    -0
      frappe/print/doctype/print_format/print_format.json
  81. +0
    -0
      frappe/print/doctype/print_format/print_format.py
  82. +0
    -0
      frappe/print/doctype/print_format/test_print_format.py
  83. +0
    -0
      frappe/print/doctype/print_format/test_records.json
  84. +0
    -0
      frappe/print/doctype/print_settings/__init__.py
  85. +0
    -0
      frappe/print/doctype/print_settings/print_settings.js
  86. +96
    -0
      frappe/print/doctype/print_settings/print_settings.json
  87. +0
    -0
      frappe/print/doctype/print_settings/print_settings.py
  88. +2
    -2
      frappe/public/js/frappe/form/assign_to.js
  89. +1
    -1
      frappe/public/js/frappe/form/attachments.js
  90. +1
    -1
      frappe/public/js/frappe/form/comments.js
  91. +1
    -1
      frappe/public/js/frappe/form/control.js
  92. +1
    -1
      frappe/public/js/frappe/form/infobar.js
  93. +1
    -1
      frappe/public/js/frappe/form/link_selector.js
  94. +1
    -1
      frappe/public/js/frappe/form/linked_with.js
  95. +2
    -2
      frappe/public/js/frappe/form/save.js
  96. +1
    -1
      frappe/public/js/frappe/form/script_manager.js
  97. +2
    -2
      frappe/public/js/frappe/model/model.js
  98. +1
    -1
      frappe/public/js/frappe/ui/listing.js
  99. +2
    -2
      frappe/public/js/frappe/ui/tags.js
  100. +2
    -2
      frappe/public/js/frappe/views/calendar.js

+ 2
- 2
frappe/__init__.py 查看文件

@@ -598,8 +598,8 @@ def respond_as_web_page(title, html, success=None, http_status_code=None):
local.response['http_status_code'] = http_status_code local.response['http_status_code'] = http_status_code


def build_match_conditions(doctype, as_condition=True): def build_match_conditions(doctype, as_condition=True):
import frappe.widgets.reportview
return frappe.widgets.reportview.build_match_conditions(doctype, as_condition)
import frappe.desk.reportview
return frappe.desk.reportview.build_match_conditions(doctype, as_condition)


def get_list(doctype, filters=None, fields=None, or_filters=None, docstatus=None, def get_list(doctype, filters=None, fields=None, or_filters=None, docstatus=None,
group_by=None, order_by=None, limit_start=0, limit_page_length=None, group_by=None, order_by=None, limit_start=0, limit_page_length=None,


+ 2
- 2
frappe/api.py 查看文件

@@ -5,7 +5,7 @@ import json
import frappe import frappe
import frappe.handler import frappe.handler
import frappe.client import frappe.client
import frappe.widgets.reportview
import frappe.desk.reportview
from frappe.utils.response import build_response from frappe.utils.response import build_response
from frappe import _ from frappe import _


@@ -90,7 +90,7 @@ def handle():
if frappe.local.form_dict.get('fields'): if frappe.local.form_dict.get('fields'):
frappe.local.form_dict['fields'] = json.loads(frappe.local.form_dict['fields']) frappe.local.form_dict['fields'] = json.loads(frappe.local.form_dict['fields'])
frappe.local.response.update({ frappe.local.response.update({
"data": frappe.call(frappe.widgets.reportview.execute,
"data": frappe.call(frappe.desk.reportview.execute,
doctype, **frappe.local.form_dict)}) doctype, **frappe.local.form_dict)})


if frappe.local.request.method=="POST": if frappe.local.request.method=="POST":


+ 3
- 3
frappe/boot.py 查看文件

@@ -8,7 +8,7 @@ bootstrap client session


import frappe import frappe
import frappe.defaults import frappe.defaults
import frappe.widgets.page
import frappe.desk.page
from frappe.utils import get_gravatar from frappe.utils import get_gravatar


def get_bootinfo(): def get_bootinfo():
@@ -132,10 +132,10 @@ def add_home_page(bootinfo, docs):
return return
home_page = frappe.db.get_default("desktop:home_page") home_page = frappe.db.get_default("desktop:home_page")
try: try:
page = frappe.widgets.page.get(home_page)
page = frappe.desk.page.get(home_page)
except (frappe.DoesNotExistError, frappe.PermissionError): except (frappe.DoesNotExistError, frappe.PermissionError):
frappe.message_log.pop() frappe.message_log.pop()
page = frappe.widgets.page.get('desktop')
page = frappe.desk.page.get('desktop')


bootinfo['home_page'] = page.name bootinfo['home_page'] = page.name
docs.append(page) docs.append(page)


+ 1
- 1
frappe/config/setup.py 查看文件

@@ -1,5 +1,5 @@
from frappe import _ from frappe import _
from frappe.widgets.moduleview import add_setup_section
from frappe.desk.moduleview import add_setup_section


def get_data(): def get_data():
data = [ data = [


+ 0
- 84
frappe/core/doctype/letter_head/letter_head.json 查看文件

@@ -1,84 +0,0 @@
{
"autoname": "field:letter_head_name",
"creation": "2012-11-22 17:45:46",
"docstatus": 0,
"doctype": "DocType",
"fields": [
{
"fieldname": "letter_head_name",
"fieldtype": "Data",
"in_filter": 0,
"in_list_view": 1,
"label": "Letter Head Name",
"oldfieldname": "letter_head_name",
"oldfieldtype": "Data",
"permlevel": 0,
"reqd": 1
},
{
"depends_on": "letter_head_name",
"fieldname": "disabled",
"fieldtype": "Check",
"in_list_view": 1,
"label": "Disabled",
"oldfieldname": "disabled",
"oldfieldtype": "Check",
"permlevel": 0
},
{
"depends_on": "letter_head_name",
"description": "Check this to make this the default letter head in all prints",
"fieldname": "is_default",
"fieldtype": "Check",
"in_list_view": 1,
"label": "Is Default",
"oldfieldname": "is_default",
"oldfieldtype": "Check",
"permlevel": 0,
"search_index": 1
},
{
"depends_on": "letter_head_name",
"description": "Letter Head in HTML",
"fieldname": "content",
"fieldtype": "Text Editor",
"in_list_view": 1,
"label": "Content",
"oldfieldname": "content",
"oldfieldtype": "Text Editor",
"permlevel": 0
}
],
"icon": "icon-font",
"idx": 1,
"max_attachments": 3,
"modified": "2014-07-21 05:57:56.052191",
"modified_by": "Administrator",
"module": "Core",
"name": "Letter Head",
"owner": "Administrator",
"permissions": [
{
"create": 1,
"delete": 1,
"email": 1,
"permlevel": 0,
"print": 1,
"read": 1,
"report": 1,
"role": "System Manager",
"submit": 0,
"write": 1
},
{
"apply_user_permissions": 1,
"delete": 0,
"email": 0,
"permlevel": 0,
"print": 0,
"read": 1,
"report": 0,
"role": "All"
}
]
}

+ 0
- 183
frappe/core/doctype/print_format/print_format.json 查看文件

@@ -1,183 +0,0 @@
{
"allow_copy": 0,
"allow_rename": 0,
"autoname": "Prompt",
"creation": "2013-01-23 19:54:43",
"docstatus": 0,
"doctype": "DocType",
"fields": [
{
"description": "Belongs to",
"fieldname": "doc_type",
"fieldtype": "Link",
"in_filter": 1,
"in_list_view": 1,
"label": "DocType",
"options": "DocType",
"permlevel": 0,
"reqd": 1,
"search_index": 0
},
{
"allow_on_submit": 0,
"fieldname": "module",
"fieldtype": "Link",
"hidden": 0,
"in_filter": 1,
"in_list_view": 1,
"label": "Module",
"no_copy": 0,
"oldfieldname": "module",
"oldfieldtype": "Select",
"options": "Module Def",
"permlevel": 0,
"print_hide": 0,
"report_hide": 0,
"reqd": 1,
"search_index": 1
},
{
"fieldname": "column_break_3",
"fieldtype": "Column Break",
"permlevel": 0
},
{
"allow_on_submit": 0,
"default": "No",
"fieldname": "standard",
"fieldtype": "Select",
"hidden": 0,
"in_filter": 1,
"in_list_view": 1,
"label": "Standard",
"no_copy": 1,
"oldfieldname": "standard",
"oldfieldtype": "Select",
"options": "No\nYes",
"permlevel": 1,
"print_hide": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 1,
"search_index": 1
},
{
"default": "Server",
"description": "Client-side formats are now deprecated",
"fieldname": "print_format_type",
"fieldtype": "Select",
"in_list_view": 1,
"label": "Print Format Type",
"options": "Server\nClient",
"permlevel": 0,
"read_only": 0
},
{
"fieldname": "disabled",
"fieldtype": "Check",
"label": "Disabled",
"permlevel": 0
},
{
"fieldname": "section_break_6",
"fieldtype": "Section Break",
"permlevel": 0
},
{
"allow_on_submit": 0,
"depends_on": "",
"fieldname": "html",
"fieldtype": "Code",
"hidden": 0,
"in_filter": 0,
"label": "HTML",
"no_copy": 0,
"oldfieldname": "html",
"oldfieldtype": "Text Editor",
"options": "HTML",
"permlevel": 0,
"print_hide": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0
},
{
"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 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 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>&lt;h3&gt;{{ doc.select_print_heading or \"Invoice\" }}&lt;/h3&gt;\n&lt;div class=\"row\"&gt;\n\t&lt;div class=\"col-md-3 text-right\"&gt;Customer Name&lt;/div&gt;\n\t&lt;div class=\"col-md-9\"&gt;{{ doc.customer_name }}&lt;/div&gt;\n&lt;/div&gt;\n&lt;div class=\"row\"&gt;\n\t&lt;div class=\"col-md-3 text-right\"&gt;Date&lt;/div&gt;\n\t&lt;div class=\"col-md-9\"&gt;{{ doc.get_formatted(\"invoice_date\") }}&lt;/div&gt;\n&lt;/div&gt;\n&lt;table class=\"table table-bordered\"&gt;\n\t&lt;tbody&gt;\n\t\t&lt;tr&gt;\n\t\t\t&lt;th&gt;Sr&lt;/th&gt;\n\t\t\t&lt;th&gt;Item Name&lt;/th&gt;\n\t\t\t&lt;th&gt;Description&lt;/th&gt;\n\t\t\t&lt;th class=\"text-right\"&gt;Qty&lt;/th&gt;\n\t\t\t&lt;th class=\"text-right\"&gt;Rate&lt;/th&gt;\n\t\t\t&lt;th class=\"text-right\"&gt;Amount&lt;/th&gt;\n\t\t&lt;/tr&gt;\n\t\t{%- for row in doc.entries -%}\n\t\t&lt;tr&gt;\n\t\t\t&lt;td style=\"width: 3%;\"&gt;{{ row.idx }}&lt;/td&gt;\n\t\t\t&lt;td style=\"width: 20%;\"&gt;\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&lt;br&gt;Item Code: {{ row.item_code}}\n\t\t\t\t{%- endif %}\n\t\t\t&lt;/td&gt;\n\t\t\t&lt;td style=\"width: 37%;\"&gt;\n\t\t\t\t&lt;div style=\"border: 0px;\"&gt;{{ row.description }}&lt;/div&gt;&lt;/td&gt;\n\t\t\t&lt;td style=\"width: 10%; text-align: right;\"&gt;{{ row.qty }} {{ row.uom or row.stock_uom }}&lt;/td&gt;\n\t\t\t&lt;td style=\"width: 15%; text-align: right;\"&gt;{{\n\t\t\t\trow.get_formatted(\"rate\", doc) }}&lt;/td&gt;\n\t\t\t&lt;td style=\"width: 15%; text-align: right;\"&gt;{{\n\t\t\t\trow.get_formatted(\"amount\", doc) }}&lt;/td&gt;\n\t\t&lt;/tr&gt;\n\t\t{%- endfor -%}\n\t&lt;/tbody&gt;\n&lt;/table&gt;</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",
"permlevel": 0
}
],
"hide_heading": 0,
"hide_toolbar": 0,
"icon": "icon-print",
"idx": 1,
"in_create": 0,
"in_dialog": 0,
"issingle": 0,
"istable": 0,
"max_attachments": 0,
"modified": "2014-07-31 03:39:35.898711",
"modified_by": "Administrator",
"module": "Core",
"name": "Print Format",
"owner": "Administrator",
"permissions": [
{
"amend": 0,
"cancel": 0,
"create": 1,
"delete": 1,
"email": 1,
"permlevel": 0,
"print": 1,
"read": 1,
"report": 1,
"role": "Administrator",
"submit": 0,
"write": 1
},
{
"amend": 0,
"cancel": 0,
"create": 1,
"delete": 1,
"email": 1,
"permlevel": 0,
"print": 1,
"read": 1,
"report": 1,
"role": "System Manager",
"submit": 0,
"write": 1
},
{
"amend": 0,
"cancel": 0,
"create": 0,
"delete": 0,
"permlevel": 1,
"read": 1,
"report": 1,
"role": "System Manager",
"submit": 0
},
{
"amend": 0,
"cancel": 0,
"create": 0,
"delete": 0,
"permlevel": 1,
"read": 1,
"report": 1,
"role": "Administrator",
"submit": 0,
"write": 1
}
],
"read_only": 0,
"read_only_onload": 0,
"sort_field": "modified",
"sort_order": "DESC"
}

+ 0
- 96
frappe/core/doctype/print_settings/print_settings.json 查看文件

@@ -1,96 +0,0 @@
{
"creation": "2014-07-17 06:54:20.782907",
"docstatus": 0,
"doctype": "DocType",
"document_type": "System",
"fields": [
{
"fieldname": "pdf_settings",
"fieldtype": "Section Break",
"label": "PDF Settings",
"permlevel": 0
},
{
"default": "1",
"description": "Send Email Print Attachments as PDF (Recommended)",
"fieldname": "send_print_as_pdf",
"fieldtype": "Check",
"label": "Send Print as PDF",
"permlevel": 0
},
{
"default": "A4",
"fieldname": "pdf_page_size",
"fieldtype": "Select",
"label": "PDF Page Size",
"options": "A4\nLetter",
"permlevel": 0
},
{
"fieldname": "print_style_section",
"fieldtype": "Section Break",
"label": "Print Style",
"permlevel": 0
},
{
"default": "",
"fieldname": "print_style",
"fieldtype": "Select",
"in_list_view": 1,
"label": "Print Style",
"options": "Modern\nClassic\nStandard\nMonochrome",
"permlevel": 0
},
{
"fieldname": "column_break_6",
"fieldtype": "Column Break",
"permlevel": 0
},
{
"description": "In points. Default is 9.",
"fieldname": "font_size",
"fieldtype": "Float",
"label": "Font Size",
"permlevel": 0
},
{
"default": "1",
"description": "Print with Letterhead, unless unchecked in a particular Document",
"fieldname": "with_letterhead",
"fieldtype": "Check",
"label": "With Letterhead",
"permlevel": 0,
"reqd": 0
},
{
"fieldname": "section_break_8",
"fieldtype": "Section Break",
"permlevel": 0
},
{
"fieldname": "print_style_preview",
"fieldtype": "HTML",
"label": "Print Style Preview",
"permlevel": 0
}
],
"icon": "icon-cog",
"issingle": 1,
"modified": "2014-08-05 09:03:02.337355",
"modified_by": "Administrator",
"module": "Core",
"name": "Print Settings",
"name_case": "",
"owner": "Administrator",
"permissions": [
{
"create": 1,
"permlevel": 0,
"read": 1,
"role": "System Manager",
"write": 1
}
],
"sort_field": "modified",
"sort_order": "DESC"
}

+ 1
- 1
frappe/core/doctype/user/user.py 查看文件

@@ -356,7 +356,7 @@ def reset_password(user):
return _("User {0} does not exist").format(user) return _("User {0} does not exist").format(user)


def user_query(doctype, txt, searchfield, start, page_len, filters): def user_query(doctype, txt, searchfield, start, page_len, filters):
from frappe.widgets.reportview import get_match_cond
from frappe.desk.reportview import get_match_cond
txt = "%{}%".format(txt) txt = "%{}%".format(txt)
return frappe.db.sql("""select name, concat_ws(' ', first_name, middle_name, last_name) return frappe.db.sql("""select name, concat_ws(' ', first_name, middle_name, last_name)
from `tabUser` from `tabUser`


+ 1
- 1
frappe/core/notifications.py 查看文件

@@ -29,7 +29,7 @@ def get_things_todo():


def get_todays_events(): def get_todays_events():
"""Returns a count of todays events in calendar""" """Returns a count of todays events in calendar"""
from frappe.desk_apps.doctype.event.event import get_events
from frappe.desk.doctype.event.event import get_events
from frappe.utils import nowdate from frappe.utils import nowdate
today = nowdate() today = nowdate()
return len(get_events(today, today)) return len(get_events(today, today))


+ 1
- 1
frappe/core/report/todo/todo.py 查看文件

@@ -4,7 +4,7 @@
from __future__ import unicode_literals from __future__ import unicode_literals
import frappe import frappe
from frappe import _ from frappe import _
from frappe.widgets.reportview import execute as runreport
from frappe.desk.reportview import execute as runreport
from frappe.utils import getdate from frappe.utils import getdate


def execute(filters=None): def execute(filters=None):


frappe/core/doctype/letter_head/__init__.py → frappe/desk/__init__.py 查看文件


frappe/widgets/calendar.py → frappe/desk/calendar.py 查看文件


frappe/core/doctype/print_settings/__init__.py → frappe/desk/doctype/__init__.py 查看文件


frappe/desk_apps/doctype/event/README.md → frappe/desk/doctype/event/README.md 查看文件


frappe/core/doctype/print_format/__init__.py → frappe/desk/doctype/event/__init__.py 查看文件


frappe/desk_apps/doctype/event/event.js → frappe/desk/doctype/event/event.js 查看文件


frappe/desk_apps/doctype/event/event.json → frappe/desk/doctype/event/event.json 查看文件

@@ -248,7 +248,7 @@
"in_create": 1, "in_create": 1,
"modified": "2014-06-20 06:40:05.415415", "modified": "2014-06-20 06:40:05.415415",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "Desk Apps",
"module": "Desk",
"name": "Event", "name": "Event",
"owner": "Administrator", "owner": "Administrator",
"permissions": [ "permissions": [

frappe/desk_apps/doctype/event/event.py → frappe/desk/doctype/event/event.py 查看文件


frappe/desk_apps/doctype/event/event_calendar.js → frappe/desk/doctype/event/event_calendar.js 查看文件

@@ -11,5 +11,5 @@ frappe.views.calendar["Event"] = {
"Public": "success", "Public": "success",
"Private": "info" "Private": "info"
}, },
get_events_method: "frappe.desk_apps.doctype.event.event.get_events"
get_events_method: "frappe.desk.doctype.event.event.get_events"
} }

frappe/desk_apps/doctype/event/test_event.py → frappe/desk/doctype/event/test_event.py 查看文件

@@ -55,7 +55,7 @@ class TestEvent(unittest.TestCase):
self.assertEquals(ev.name, name) self.assertEquals(ev.name, name)


def test_assign(self): def test_assign(self):
from frappe.widgets.form.assign_to import add
from frappe.desk.form.assign_to import add


ev = frappe.get_doc(test_records[0]).insert() ev = frappe.get_doc(test_records[0]).insert()



frappe/desk_apps/doctype/event/test_records.json → frappe/desk/doctype/event/test_records.json 查看文件


frappe/desk_apps/doctype/event_role/README.md → frappe/desk/doctype/event_role/README.md 查看文件


frappe/desk_apps/doctype/event/__init__.py → frappe/desk/doctype/event_role/__init__.py 查看文件


frappe/desk_apps/doctype/event_role/event_role.json → frappe/desk/doctype/event_role/event_role.json 查看文件

@@ -21,7 +21,7 @@
"istable": 1, "istable": 1,
"modified": "2013-12-20 19:23:12.000001", "modified": "2013-12-20 19:23:12.000001",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "Desk Apps",
"module": "Desk",
"name": "Event Role", "name": "Event Role",
"owner": "Administrator" "owner": "Administrator"
} }

frappe/desk_apps/doctype/event_role/event_role.py → frappe/desk/doctype/event_role/event_role.py 查看文件


frappe/desk_apps/doctype/event_user/README.md → frappe/desk/doctype/event_user/README.md 查看文件


frappe/desk_apps/doctype/event_role/__init__.py → frappe/desk/doctype/event_user/__init__.py 查看文件


frappe/desk_apps/doctype/event_user/event_user.json → frappe/desk/doctype/event_user/event_user.json 查看文件

@@ -22,7 +22,7 @@
"istable": 1, "istable": 1,
"modified": "2014-05-09 02:12:32.374018", "modified": "2014-05-09 02:12:32.374018",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "Desk Apps",
"module": "Desk",
"name": "Event User", "name": "Event User",
"owner": "Administrator", "owner": "Administrator",
"permissions": [], "permissions": [],

frappe/desk_apps/doctype/event_user/event_user.py → frappe/desk/doctype/event_user/event_user.py 查看文件


frappe/desk_apps/doctype/todo/README.md → frappe/desk/doctype/todo/README.md 查看文件


frappe/desk_apps/doctype/event_user/__init__.py → frappe/desk/doctype/todo/__init__.py 查看文件


frappe/desk_apps/doctype/todo/todo.js → frappe/desk/doctype/todo/todo.js 查看文件


frappe/desk_apps/doctype/todo/todo.json → frappe/desk/doctype/todo/todo.json 查看文件

@@ -172,7 +172,7 @@
"max_attachments": 0, "max_attachments": 0,
"modified": "2014-06-30 05:40:15.471435", "modified": "2014-06-30 05:40:15.471435",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "Desk Apps",
"module": "Desk",
"name": "ToDo", "name": "ToDo",
"owner": "Administrator", "owner": "Administrator",
"permissions": [ "permissions": [

frappe/desk_apps/doctype/todo/todo.py → frappe/desk/doctype/todo/todo.py 查看文件


frappe/desk_apps/doctype/todo/todo_list.html → frappe/desk/doctype/todo/todo_list.html 查看文件


frappe/desk_apps/doctype/todo/todo_list.js → frappe/desk/doctype/todo/todo_list.js 查看文件


frappe/desk_apps/doctype/todo/__init__.py → frappe/desk/form/__init__.py 查看文件


frappe/widgets/form/assign_to.py → frappe/desk/form/assign_to.py 查看文件

@@ -7,7 +7,7 @@ from __future__ import unicode_literals
import frappe import frappe
from frappe import _ from frappe import _
from frappe.utils import cint from frappe.utils import cint
from frappe.widgets.form.load import get_docinfo
from frappe.desk.form.load import get_docinfo


def get(args=None): def get(args=None):
"""get assigned to""" """get assigned to"""

frappe/widgets/form/load.py → frappe/desk/form/load.py 查看文件

@@ -5,7 +5,7 @@ from __future__ import unicode_literals
import frappe, json import frappe, json
import frappe.utils import frappe.utils
import frappe.defaults import frappe.defaults
import frappe.widgets.form.meta
import frappe.desk.form.meta
from frappe.permissions import get_doc_permissions from frappe.permissions import get_doc_permissions
from frappe import _ from frappe import _


@@ -69,10 +69,10 @@ def getdoctype(doctype, with_parent=False, cached_timestamp=None):
frappe.response.docs.extend(docs) frappe.response.docs.extend(docs)


def get_meta_bundle(doctype): def get_meta_bundle(doctype):
bundle = [frappe.widgets.form.meta.get_meta(doctype)]
bundle = [frappe.desk.form.meta.get_meta(doctype)]
for df in bundle[0].fields: for df in bundle[0].fields:
if df.fieldtype=="Table": if df.fieldtype=="Table":
bundle.append(frappe.widgets.form.meta.get_meta(df.options))
bundle.append(frappe.desk.form.meta.get_meta(df.options))
return bundle return bundle


def get_docinfo(doc): def get_docinfo(doc):

frappe/widgets/form/meta.py → frappe/desk/form/meta.py 查看文件


frappe/widgets/form/run_method.py → frappe/desk/form/run_method.py 查看文件


frappe/widgets/form/save.py → frappe/desk/form/save.py 查看文件

@@ -3,7 +3,7 @@


from __future__ import unicode_literals from __future__ import unicode_literals
import frappe, json import frappe, json
from frappe.widgets.form.load import run_onload
from frappe.desk.form.load import run_onload


@frappe.whitelist() @frappe.whitelist()
def savedocs(): def savedocs():

frappe/widgets/form/test_form.py → frappe/desk/form/test_form.py 查看文件

@@ -4,7 +4,7 @@
from __future__ import unicode_literals from __future__ import unicode_literals
import frappe, unittest import frappe, unittest


from frappe.widgets.form.utils import get_linked_docs
from frappe.desk.form.utils import get_linked_docs


class TestForm(unittest.TestCase): class TestForm(unittest.TestCase):
def test_linked_with(self): def test_linked_with(self):

frappe/widgets/form/utils.py → frappe/desk/form/utils.py 查看文件

@@ -3,8 +3,8 @@


from __future__ import unicode_literals from __future__ import unicode_literals
import frappe, json import frappe, json
import frappe.widgets.form.meta
import frappe.widgets.form.load
import frappe.desk.form.meta
import frappe.desk.form.load


from frappe import _ from frappe import _


@@ -67,7 +67,7 @@ def add_comment(doc):


@frappe.whitelist() @frappe.whitelist()
def get_next(doctype, value, prev, filters=None, order_by="modified desc"): def get_next(doctype, value, prev, filters=None, order_by="modified desc"):
import frappe.widgets.reportview
import frappe.desk.reportview


prev = not int(prev) prev = not int(prev)
sort_field, sort_order = order_by.split(" ") sort_field, sort_order = order_by.split(" ")
@@ -89,7 +89,7 @@ def get_next(doctype, value, prev, filters=None, order_by="modified desc"):
if not order_by[0] in [f[1] for f in filters]: if not order_by[0] in [f[1] for f in filters]:
filters.append([doctype, sort_field, condition, value]) filters.append([doctype, sort_field, condition, value])


res = frappe.widgets.reportview.execute(doctype,
res = frappe.desk.reportview.execute(doctype,
fields = ["name"], fields = ["name"],
filters = filters, filters = filters,
order_by = sort_field + " " + sort_order, order_by = sort_field + " " + sort_order,
@@ -104,12 +104,12 @@ def get_next(doctype, value, prev, filters=None, order_by="modified desc"):
@frappe.whitelist() @frappe.whitelist()
def get_linked_docs(doctype, name, metadata_loaded=None, no_metadata=False): def get_linked_docs(doctype, name, metadata_loaded=None, no_metadata=False):
if not metadata_loaded: metadata_loaded = [] if not metadata_loaded: metadata_loaded = []
meta = frappe.widgets.form.meta.get_meta(doctype)
meta = frappe.desk.form.meta.get_meta(doctype)
linkinfo = meta.get("__linked_with") linkinfo = meta.get("__linked_with")
results = {} results = {}
for dt, link in linkinfo.items(): for dt, link in linkinfo.items():
link["doctype"] = dt link["doctype"] = dt
link_meta_bundle = frappe.widgets.form.load.get_meta_bundle(dt)
link_meta_bundle = frappe.desk.form.load.get_meta_bundle(dt)
linkmeta = link_meta_bundle[0] linkmeta = link_meta_bundle[0]
if not linkmeta.get("issingle"): if not linkmeta.get("issingle"):
fields = [d.fieldname for d in linkmeta.get("fields", {"in_list_view":1, fields = [d.fieldname for d in linkmeta.get("fields", {"in_list_view":1,

frappe/widgets/moduleview.py → frappe/desk/moduleview.py 查看文件

@@ -3,7 +3,7 @@


from __future__ import unicode_literals from __future__ import unicode_literals
import frappe import frappe
from frappe.widgets import reportview
from frappe.desk import reportview
from frappe.utils import cint from frappe.utils import cint
from frappe import _ from frappe import _



frappe/widgets/page.py → frappe/desk/page.py 查看文件


frappe/desk_apps/__init__.py → frappe/desk/page/__init__.py 查看文件


frappe/desk_apps/doctype/__init__.py → frappe/desk/page/applications/__init__.py 查看文件


frappe/desk_apps/page/applications/applications.js → frappe/desk/page/applications/applications.js 查看文件


frappe/desk_apps/page/applications/applications.json → frappe/desk/page/applications/applications.json 查看文件

@@ -6,7 +6,7 @@
"idx": 1, "idx": 1,
"modified": "2013-12-23 11:01:52.000001", "modified": "2013-12-23 11:01:52.000001",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "Desk Apps",
"module": "Desk",
"name": "applications", "name": "applications",
"owner": "Administrator", "owner": "Administrator",
"page_name": "applications", "page_name": "applications",

frappe/desk_apps/page/applications/applications.py → frappe/desk/page/applications/applications.py 查看文件


frappe/desk_apps/page/messages/README.md → frappe/desk/page/messages/README.md 查看文件


frappe/desk_apps/page/messages/__init__.py → frappe/desk/page/messages/__init__.py 查看文件


frappe/desk_apps/page/messages/messages.html → frappe/desk/page/messages/messages.html 查看文件


frappe/desk_apps/page/messages/messages.js → frappe/desk/page/messages/messages.js 查看文件


frappe/desk_apps/page/messages/messages.json → frappe/desk/page/messages/messages.json 查看文件


frappe/desk_apps/page/messages/messages.py → frappe/desk/page/messages/messages.py 查看文件


frappe/widgets/page_body.py → frappe/desk/page_body.py 查看文件


frappe/widgets/query_builder.py → frappe/desk/query_builder.py 查看文件

@@ -56,7 +56,7 @@ def get_sql_meta(tl):
return meta return meta


def add_match_conditions(q, tl): def add_match_conditions(q, tl):
from frappe.widgets.reportview import build_match_conditions
from frappe.desk.reportview import build_match_conditions
sl = [] sl = []
for dt in tl: for dt in tl:
s = build_match_conditions(dt) s = build_match_conditions(dt)

frappe/widgets/query_report.py → frappe/desk/query_report.py 查看文件

@@ -10,7 +10,7 @@ from frappe import _
from frappe.modules import scrub, get_module_path from frappe.modules import scrub, get_module_path
from frappe.utils import flt, cint, get_html_format from frappe.utils import flt, cint, get_html_format
from frappe.translate import send_translations from frappe.translate import send_translations
import frappe.widgets.reportview
import frappe.desk.reportview


def get_report_doc(report_name): def get_report_doc(report_name):
doc = frappe.get_doc("Report", report_name) doc = frappe.get_doc("Report", report_name)
@@ -208,7 +208,7 @@ def get_user_match_filters(doctypes, ref_doctype):
match_filters = {} match_filters = {}


for dt in doctypes: for dt in doctypes:
filter_list = frappe.widgets.reportview.build_match_conditions(dt, False)
filter_list = frappe.desk.reportview.build_match_conditions(dt, False)
if filter_list: if filter_list:
match_filters[dt] = filter_list match_filters[dt] = filter_list



frappe/widgets/report_dump.py → frappe/desk/report_dump.py 查看文件


frappe/widgets/reportview.py → frappe/desk/reportview.py 查看文件


frappe/widgets/search.py → frappe/desk/search.py 查看文件

@@ -4,7 +4,7 @@
# Search # Search
from __future__ import unicode_literals from __future__ import unicode_literals
import frappe import frappe
import frappe.widgets.reportview
import frappe.desk.reportview
from frappe.utils import cstr, unique from frappe.utils import cstr, unique


# this is called by the Link Field # this is called by the Link Field
@@ -77,7 +77,7 @@ def search_widget(doctype, txt, query=None, searchfield=None, start=0,
fields.append("""locate("{_txt}", `tab{doctype}`.`name`) as `_relevance`""".format( fields.append("""locate("{_txt}", `tab{doctype}`.`name`) as `_relevance`""".format(
_txt=frappe.db.escape((txt or "").replace("%", "")), doctype=doctype)) _txt=frappe.db.escape((txt or "").replace("%", "")), doctype=doctype))


values = frappe.widgets.reportview.execute(doctype,
values = frappe.desk.reportview.execute(doctype,
filters=filters, fields=fields, filters=filters, fields=fields,
or_filters = or_filters, limit_start = start, or_filters = or_filters, limit_start = start,
limit_page_length=page_len, limit_page_length=page_len,

frappe/widgets/tags.py → frappe/desk/tags.py 查看文件


+ 2
- 2
frappe/handler.py 查看文件

@@ -7,7 +7,7 @@ from frappe import _
import frappe.utils import frappe.utils
import frappe.sessions import frappe.sessions
import frappe.utils.file_manager import frappe.utils.file_manager
import frappe.widgets.form.run_method
import frappe.desk.form.run_method
from frappe.utils.response import build_response from frappe.utils.response import build_response


@frappe.whitelist(allow_guest=True) @frappe.whitelist(allow_guest=True)
@@ -16,7 +16,7 @@ def startup():


@frappe.whitelist() @frappe.whitelist()
def runserverobj(method, docs=None, dt=None, dn=None, arg=None, args=None): def runserverobj(method, docs=None, dt=None, dn=None, arg=None, args=None):
frappe.widgets.form.run_method.runserverobj(method, docs=docs, dt=dt, dn=dn, arg=arg, args=args)
frappe.desk.form.run_method.runserverobj(method, docs=docs, dt=dt, dn=dn, arg=arg, args=args)


@frappe.whitelist(allow_guest=True) @frappe.whitelist(allow_guest=True)
def logout(): def logout():


+ 5
- 5
frappe/hooks.py 查看文件

@@ -38,14 +38,14 @@ website_generators = ["Web Page", "Blog Post", "Website Group", "Blog Category",
# permissions # permissions


permission_query_conditions = { permission_query_conditions = {
"Event": "frappe.desk_apps.doctype.event.event.get_permission_query_conditions",
"ToDo": "frappe.desk_apps.doctype.todo.todo.get_permission_query_conditions",
"Event": "frappe.desk.doctype.event.event.get_permission_query_conditions",
"ToDo": "frappe.desk.doctype.todo.todo.get_permission_query_conditions",
"User": "frappe.core.doctype.user.user.get_permission_query_conditions" "User": "frappe.core.doctype.user.user.get_permission_query_conditions"
} }


has_permission = { has_permission = {
"Event": "frappe.desk_apps.doctype.event.event.has_permission",
"ToDo": "frappe.desk_apps.doctype.todo.todo.has_permission",
"Event": "frappe.desk.doctype.event.event.has_permission",
"ToDo": "frappe.desk.doctype.todo.todo.has_permission",
"User": "frappe.core.doctype.user.user.has_permission" "User": "frappe.core.doctype.user.user.has_permission"
} }


@@ -75,7 +75,7 @@ scheduler_events = {
"daily": [ "daily": [
"frappe.email.bulk.clear_outbox", "frappe.email.bulk.clear_outbox",
"frappe.core.doctype.notification_count.notification_count.clear_notifications", "frappe.core.doctype.notification_count.notification_count.clear_notifications",
"frappe.desk_apps.doctype.event.event.send_event_digest",
"frappe.desk.doctype.event.event.send_event_digest",
"frappe.sessions.clear_expired_sessions", "frappe.sessions.clear_expired_sessions",
"frappe.email.doctype.email_alert.email_alert.trigger_daily_alerts", "frappe.email.doctype.email_alert.email_alert.trigger_daily_alerts",
], ],


+ 2
- 1
frappe/modules.txt 查看文件

@@ -4,4 +4,5 @@ Workflow
Email Email
Custom Custom
Geo Geo
Desk Apps
Desk Apps
Print

frappe/desk_apps/page/__init__.py → frappe/print/__init__.py 查看文件


frappe/desk_apps/page/applications/__init__.py → frappe/print/doctype/__init__.py 查看文件


frappe/core/doctype/letter_head/README.md → frappe/print/doctype/letter_head/README.md 查看文件


frappe/widgets/__init__.py → frappe/print/doctype/letter_head/__init__.py 查看文件


frappe/core/doctype/letter_head/letter_head.js → frappe/print/doctype/letter_head/letter_head.js 查看文件


+ 84
- 0
frappe/print/doctype/letter_head/letter_head.json 查看文件

@@ -0,0 +1,84 @@
{
"autoname": "field:letter_head_name",
"creation": "2012-11-22 17:45:46",
"docstatus": 0,
"doctype": "DocType",
"fields": [
{
"fieldname": "letter_head_name",
"fieldtype": "Data",
"in_filter": 0,
"in_list_view": 1,
"label": "Letter Head Name",
"oldfieldname": "letter_head_name",
"oldfieldtype": "Data",
"permlevel": 0,
"reqd": 1
},
{
"depends_on": "letter_head_name",
"fieldname": "disabled",
"fieldtype": "Check",
"in_list_view": 1,
"label": "Disabled",
"oldfieldname": "disabled",
"oldfieldtype": "Check",
"permlevel": 0
},
{
"depends_on": "letter_head_name",
"description": "Check this to make this the default letter head in all prints",
"fieldname": "is_default",
"fieldtype": "Check",
"in_list_view": 1,
"label": "Is Default",
"oldfieldname": "is_default",
"oldfieldtype": "Check",
"permlevel": 0,
"search_index": 1
},
{
"depends_on": "letter_head_name",
"description": "Letter Head in HTML",
"fieldname": "content",
"fieldtype": "Text Editor",
"in_list_view": 1,
"label": "Content",
"oldfieldname": "content",
"oldfieldtype": "Text Editor",
"permlevel": 0
}
],
"icon": "icon-font",
"idx": 1,
"max_attachments": 3,
"modified": "2014-07-21 05:57:56.052192",
"modified_by": "Administrator",
"module": "Print",
"name": "Letter Head",
"owner": "Administrator",
"permissions": [
{
"create": 1,
"delete": 1,
"email": 1,
"permlevel": 0,
"print": 1,
"read": 1,
"report": 1,
"role": "System Manager",
"submit": 0,
"write": 1
},
{
"apply_user_permissions": 1,
"delete": 0,
"email": 0,
"permlevel": 0,
"print": 0,
"read": 1,
"report": 0,
"role": "All"
}
]
}

frappe/core/doctype/letter_head/letter_head.py → frappe/print/doctype/letter_head/letter_head.py 查看文件


frappe/core/doctype/letter_head/test_letter_head.py → frappe/print/doctype/letter_head/test_letter_head.py 查看文件


frappe/core/doctype/letter_head/test_records.json → frappe/print/doctype/letter_head/test_records.json 查看文件


frappe/core/doctype/print_format/README.md → frappe/print/doctype/print_format/README.md 查看文件


frappe/widgets/form/__init__.py → frappe/print/doctype/print_format/__init__.py 查看文件


frappe/core/doctype/print_format/print_format.js → frappe/print/doctype/print_format/print_format.js 查看文件


+ 157
- 0
frappe/print/doctype/print_format/print_format.json 查看文件

@@ -0,0 +1,157 @@
{
"allow_copy": 0,
"allow_rename": 0,
"autoname": "Prompt",
"creation": "2013-01-23 19:54:43",
"docstatus": 0,
"doctype": "DocType",
"fields": [
{
"description": "Belongs to",
"fieldname": "doc_type",
"fieldtype": "Link",
"in_filter": 1,
"in_list_view": 1,
"label": "DocType",
"options": "DocType",
"permlevel": 0,
"reqd": 1,
"search_index": 0
},
{
"allow_on_submit": 0,
"fieldname": "module",
"fieldtype": "Link",
"hidden": 0,
"in_filter": 1,
"in_list_view": 1,
"label": "Module",
"no_copy": 0,
"oldfieldname": "module",
"oldfieldtype": "Select",
"options": "Module Def",
"permlevel": 0,
"print_hide": 0,
"report_hide": 0,
"reqd": 1,
"search_index": 1
},
{
"fieldname": "column_break_3",
"fieldtype": "Column Break",
"permlevel": 0
},
{
"allow_on_submit": 0,
"default": "No",
"fieldname": "standard",
"fieldtype": "Select",
"hidden": 0,
"in_filter": 1,
"in_list_view": 1,
"label": "Standard",
"no_copy": 1,
"oldfieldname": "standard",
"oldfieldtype": "Select",
"options": "No\nYes",
"permlevel": 1,
"print_hide": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 1,
"search_index": 1
},
{
"default": "Server",
"description": "Client-side formats are now deprecated",
"fieldname": "print_format_type",
"fieldtype": "Select",
"in_list_view": 1,
"label": "Print Format Type",
"options": "Server\nClient",
"permlevel": 0,
"read_only": 0
},
{
"fieldname": "disabled",
"fieldtype": "Check",
"label": "Disabled",
"permlevel": 0
},
{
"fieldname": "section_break_6",
"fieldtype": "Section Break",
"permlevel": 0
},
{
"allow_on_submit": 0,
"depends_on": "",
"fieldname": "html",
"fieldtype": "Code",
"hidden": 0,
"in_filter": 0,
"label": "HTML",
"no_copy": 0,
"oldfieldname": "html",
"oldfieldtype": "Text Editor",
"options": "HTML",
"permlevel": 0,
"print_hide": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0
},
{
"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 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 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>&lt;h3&gt;{{ doc.select_print_heading or \"Invoice\" }}&lt;/h3&gt;\n&lt;div class=\"row\"&gt;\n\t&lt;div class=\"col-md-3 text-right\"&gt;Customer Name&lt;/div&gt;\n\t&lt;div class=\"col-md-9\"&gt;{{ doc.customer_name }}&lt;/div&gt;\n&lt;/div&gt;\n&lt;div class=\"row\"&gt;\n\t&lt;div class=\"col-md-3 text-right\"&gt;Date&lt;/div&gt;\n\t&lt;div class=\"col-md-9\"&gt;{{ doc.get_formatted(\"invoice_date\") }}&lt;/div&gt;\n&lt;/div&gt;\n&lt;table class=\"table table-bordered\"&gt;\n\t&lt;tbody&gt;\n\t\t&lt;tr&gt;\n\t\t\t&lt;th&gt;Sr&lt;/th&gt;\n\t\t\t&lt;th&gt;Item Name&lt;/th&gt;\n\t\t\t&lt;th&gt;Description&lt;/th&gt;\n\t\t\t&lt;th class=\"text-right\"&gt;Qty&lt;/th&gt;\n\t\t\t&lt;th class=\"text-right\"&gt;Rate&lt;/th&gt;\n\t\t\t&lt;th class=\"text-right\"&gt;Amount&lt;/th&gt;\n\t\t&lt;/tr&gt;\n\t\t{%- for row in doc.entries -%}\n\t\t&lt;tr&gt;\n\t\t\t&lt;td style=\"width: 3%;\"&gt;{{ row.idx }}&lt;/td&gt;\n\t\t\t&lt;td style=\"width: 20%;\"&gt;\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&lt;br&gt;Item Code: {{ row.item_code}}\n\t\t\t\t{%- endif %}\n\t\t\t&lt;/td&gt;\n\t\t\t&lt;td style=\"width: 37%;\"&gt;\n\t\t\t\t&lt;div style=\"border: 0px;\"&gt;{{ row.description }}&lt;/div&gt;&lt;/td&gt;\n\t\t\t&lt;td style=\"width: 10%; text-align: right;\"&gt;{{ row.qty }} {{ row.uom or row.stock_uom }}&lt;/td&gt;\n\t\t\t&lt;td style=\"width: 15%; text-align: right;\"&gt;{{\n\t\t\t\trow.get_formatted(\"rate\", doc) }}&lt;/td&gt;\n\t\t\t&lt;td style=\"width: 15%; text-align: right;\"&gt;{{\n\t\t\t\trow.get_formatted(\"amount\", doc) }}&lt;/td&gt;\n\t\t&lt;/tr&gt;\n\t\t{%- endfor -%}\n\t&lt;/tbody&gt;\n&lt;/table&gt;</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",
"permlevel": 0
}
],
"hide_heading": 0,
"hide_toolbar": 0,
"icon": "icon-print",
"idx": 1,
"in_create": 0,
"in_dialog": 0,
"issingle": 0,
"istable": 0,
"max_attachments": 0,
"modified": "2014-07-31 03:39:35.898712",
"modified_by": "Administrator",
"module": "Print",
"name": "Print Format",
"owner": "Administrator",
"permissions": [
{
"amend": 0,
"cancel": 0,
"create": 1,
"delete": 1,
"email": 1,
"permlevel": 0,
"print": 1,
"read": 1,
"report": 1,
"role": "System Manager",
"submit": 0,
"write": 1
},
{
"amend": 0,
"cancel": 0,
"create": 0,
"delete": 0,
"permlevel": 1,
"read": 1,
"report": 1,
"role": "System Manager",
"submit": 0
},
],
"read_only": 0,
"read_only_onload": 0,
"sort_field": "modified",
"sort_order": "DESC"
}

frappe/core/doctype/print_format/print_format.py → frappe/print/doctype/print_format/print_format.py 查看文件


frappe/core/doctype/print_format/test_print_format.py → frappe/print/doctype/print_format/test_print_format.py 查看文件


frappe/core/doctype/print_format/test_records.json → frappe/print/doctype/print_format/test_records.json 查看文件


+ 0
- 0
frappe/print/doctype/print_settings/__init__.py 查看文件


frappe/core/doctype/print_settings/print_settings.js → frappe/print/doctype/print_settings/print_settings.js 查看文件


+ 96
- 0
frappe/print/doctype/print_settings/print_settings.json 查看文件

@@ -0,0 +1,96 @@
{
"creation": "2014-07-17 06:54:20.782907",
"docstatus": 0,
"doctype": "DocType",
"document_type": "System",
"fields": [
{
"fieldname": "pdf_settings",
"fieldtype": "Section Break",
"label": "PDF Settings",
"permlevel": 0
},
{
"default": "1",
"description": "Send Email Print Attachments as PDF (Recommended)",
"fieldname": "send_print_as_pdf",
"fieldtype": "Check",
"label": "Send Print as PDF",
"permlevel": 0
},
{
"default": "A4",
"fieldname": "pdf_page_size",
"fieldtype": "Select",
"label": "PDF Page Size",
"options": "A4\nLetter",
"permlevel": 0
},
{
"fieldname": "print_style_section",
"fieldtype": "Section Break",
"label": "Print Style",
"permlevel": 0
},
{
"default": "",
"fieldname": "print_style",
"fieldtype": "Select",
"in_list_view": 1,
"label": "Print Style",
"options": "Modern\nClassic\nStandard\nMonochrome",
"permlevel": 0
},
{
"fieldname": "column_break_6",
"fieldtype": "Column Break",
"permlevel": 0
},
{
"description": "In points. Default is 9.",
"fieldname": "font_size",
"fieldtype": "Float",
"label": "Font Size",
"permlevel": 0
},
{
"default": "1",
"description": "Print with Letterhead, unless unchecked in a particular Document",
"fieldname": "with_letterhead",
"fieldtype": "Check",
"label": "With Letterhead",
"permlevel": 0,
"reqd": 0
},
{
"fieldname": "section_break_8",
"fieldtype": "Section Break",
"permlevel": 0
},
{
"fieldname": "print_style_preview",
"fieldtype": "HTML",
"label": "Print Style Preview",
"permlevel": 0
}
],
"icon": "icon-cog",
"issingle": 1,
"modified": "2014-08-05 09:03:02.337356",
"modified_by": "Administrator",
"module": "Print",
"name": "Print Settings",
"name_case": "",
"owner": "Administrator",
"permissions": [
{
"create": 1,
"permlevel": 0,
"read": 1,
"role": "System Manager",
"write": 1
}
],
"sort_field": "modified",
"sort_order": "DESC"
}

frappe/core/doctype/print_settings/print_settings.py → frappe/print/doctype/print_settings/print_settings.py 查看文件


+ 2
- 2
frappe/public/js/frappe/form/assign_to.js 查看文件

@@ -105,7 +105,7 @@ frappe.ui.form.AssignTo = Class.extend({
var args = me.dialog.get_values(); var args = me.dialog.get_values();
if(args && assign_to) { if(args && assign_to) {
return frappe.call({ return frappe.call({
method:'frappe.widgets.form.assign_to.add',
method:'frappe.desk.form.assign_to.add',
args: $.extend(args, { args: $.extend(args, {
doctype: me.frm.doctype, doctype: me.frm.doctype,
name: me.frm.docname, name: me.frm.docname,
@@ -135,7 +135,7 @@ frappe.ui.form.AssignTo = Class.extend({
remove: function(owner) { remove: function(owner) {
var me = this; var me = this;
frappe.call({ frappe.call({
method:'frappe.widgets.form.assign_to.remove',
method:'frappe.desk.form.assign_to.remove',
args: { args: {
doctype: me.frm.doctype, doctype: me.frm.doctype,
name: me.frm.docname, name: me.frm.docname,


+ 1
- 1
frappe/public/js/frappe/form/attachments.js 查看文件

@@ -132,7 +132,7 @@ frappe.ui.form.Attachments = Class.extend({


var me = this; var me = this;
return frappe.call({ return frappe.call({
method: 'frappe.widgets.form.utils.remove_attach',
method: 'frappe.desk.form.utils.remove_attach',
args: { args: {
fid: fileid, fid: fileid,
dt: me.frm.doctype, dt: me.frm.doctype,


+ 1
- 1
frappe/public/js/frappe/form/comments.js 查看文件

@@ -144,7 +144,7 @@ frappe.ui.form.Comments = Class.extend({
insert_comment: function(comment_type, comment, btn) { insert_comment: function(comment_type, comment, btn) {
var me = this; var me = this;
return frappe.call({ return frappe.call({
method: "frappe.widgets.form.utils.add_comment",
method: "frappe.desk.form.utils.add_comment",
args: { args: {
doc:{ doc:{
doctype: "Comment", doctype: "Comment",


+ 1
- 1
frappe/public/js/frappe/form/control.js 查看文件

@@ -894,7 +894,7 @@ frappe.ui.form.ControlLink = frappe.ui.form.ControlData.extend({


return frappe.call({ return frappe.call({
type: "GET", type: "GET",
method:'frappe.widgets.search.search_link',
method:'frappe.desk.search.search_link',
no_spinner: true, no_spinner: true,
args: args, args: args,
callback: function(r) { callback: function(r) {


+ 1
- 1
frappe/public/js/frappe/form/infobar.js 查看文件

@@ -130,7 +130,7 @@ frappe.ui.form.InfoBar = Class.extend({
} }


return frappe.call({ return frappe.call({
method: "frappe.widgets.form.utils.get_next",
method: "frappe.desk.form.utils.get_next",
args: { args: {
doctype: me.frm.doctype, doctype: me.frm.doctype,
value: me.frm.doc[order_by.split(" ")[0]], value: me.frm.doc[order_by.split(" ")[0]],


+ 1
- 1
frappe/public/js/frappe/form/link_selector.js 查看文件

@@ -65,7 +65,7 @@ frappe.ui.form.LinkSelector = Class.extend({
} }


return frappe.call({ return frappe.call({
method: "frappe.widgets.search.search_widget",
method: "frappe.desk.search.search_widget",
type: "GET", type: "GET",
args: args, args: args,
callback: function(r) { callback: function(r) {


+ 1
- 1
frappe/public/js/frappe/form/linked_with.js 查看文件

@@ -50,7 +50,7 @@ frappe.ui.form.LinkedWith = Class.extend({
</div></div>'); </div></div>');
frappe.call({ frappe.call({
method:"frappe.widgets.form.utils.get_linked_docs",
method:"frappe.desk.form.utils.get_linked_docs",
args: { args: {
doctype: me.frm.doctype, doctype: me.frm.doctype,
name: me.frm.docname, name: me.frm.docname,


+ 2
- 2
frappe/public/js/frappe/form/save.js 查看文件

@@ -10,7 +10,7 @@ frappe.ui.form.save = function(frm, action, callback, btn) {
check_name(); check_name();
if(check_mandatory()) { if(check_mandatory()) {
_call({ _call({
method: "frappe.widgets.form.save.savedocs",
method: "frappe.desk.form.save.savedocs",
args: { doc: frm.doc, action:action}, args: { doc: frm.doc, action:action},
callback: function(r) { callback: function(r) {
$(document).trigger("save", [frm.doc]); $(document).trigger("save", [frm.doc]);
@@ -25,7 +25,7 @@ frappe.ui.form.save = function(frm, action, callback, btn) {


var cancel = function() { var cancel = function() {
_call({ _call({
method: "frappe.widgets.form.save.cancel",
method: "frappe.desk.form.save.cancel",
args: { doctype: frm.doc.doctype, name: frm.doc.name }, args: { doctype: frm.doc.doctype, name: frm.doc.name },
callback: function(r) { callback: function(r) {
$(document).trigger("save", [frm.doc]); $(document).trigger("save", [frm.doc]);


+ 1
- 1
frappe/public/js/frappe/form/script_manager.js 查看文件

@@ -94,7 +94,7 @@ frappe.ui.form.ScriptManager = Class.extend({
fetch = this.frm.fetch_dict[df.fieldname].columns.join(', '); fetch = this.frm.fetch_dict[df.fieldname].columns.join(', ');


return frappe.call({ return frappe.call({
method:'frappe.widgets.form.utils.validate_link',
method:'frappe.desk.form.utils.validate_link',
type: "GET", type: "GET",
args: { args: {
'value': value, 'value': value,


+ 2
- 2
frappe/public/js/frappe/model/model.js 查看文件

@@ -54,7 +54,7 @@ $.extend(frappe.model, {
cached_timestamp = cached_doc.modified; cached_timestamp = cached_doc.modified;
} }
return frappe.call({ return frappe.call({
method:'frappe.widgets.form.load.getdoctype',
method:'frappe.desk.form.load.getdoctype',
type: "GET", type: "GET",
args: { args: {
doctype: doctype, doctype: doctype,
@@ -99,7 +99,7 @@ $.extend(frappe.model, {
callback(name); callback(name);
} else { } else {
return frappe.call({ return frappe.call({
method: 'frappe.widgets.form.load.getdoc',
method: 'frappe.desk.form.load.getdoc',
type: "GET", type: "GET",
args: { args: {
doctype: doctype, doctype: doctype,


+ 1
- 1
frappe/public/js/frappe/ui/listing.js 查看文件

@@ -232,7 +232,7 @@ frappe.ui.Listing = Class.extend({
me.set_working(true); me.set_working(true);


return frappe.call({ return frappe.call({
method: this.opts.method || 'frappe.widgets.query_builder.runquery',
method: this.opts.method || 'frappe.desk.query_builder.runquery',
type: "GET", type: "GET",
args: this.get_call_args(), args: this.get_call_args(),
callback: function(r) { callback: function(r) {


+ 2
- 2
frappe/public/js/frappe/ui/tags.js 查看文件

@@ -22,7 +22,7 @@ frappe.ui.TagEditor = Class.extend({
if(me.initialized && !me.refreshing) { if(me.initialized && !me.refreshing) {
var tag = tag.find('.tagit-label').text(); var tag = tag.find('.tagit-label').text();
return frappe.call({ return frappe.call({
method: 'frappe.widgets.tags.add_tag',
method: 'frappe.desk.tags.add_tag',
args: me.get_args(tag), args: me.get_args(tag),
callback: function(r) { callback: function(r) {
var user_tags = me.user_tags.split(","); var user_tags = me.user_tags.split(",");
@@ -37,7 +37,7 @@ frappe.ui.TagEditor = Class.extend({
if(!me.refreshing) { if(!me.refreshing) {
var tag = tag.find('.tagit-label').text(); var tag = tag.find('.tagit-label').text();
return frappe.call({ return frappe.call({
method: 'frappe.widgets.tags.remove_tag',
method: 'frappe.desk.tags.remove_tag',
args: me.get_args(tag), args: me.get_args(tag),
callback: function(r) { callback: function(r) {
var user_tags = me.user_tags.split(","); var user_tags = me.user_tags.split(",");


+ 2
- 2
frappe/public/js/frappe/views/calendar.js 查看文件

@@ -97,7 +97,7 @@ frappe.views.Calendar = Class.extend({
selectHelper: true, selectHelper: true,
events: function(start, end, callback) { events: function(start, end, callback) {
return frappe.call({ return frappe.call({
method: me.get_events_method || "frappe.widgets.calendar.get_events",
method: me.get_events_method || "frappe.desk.calendar.get_events",
type: "GET", type: "GET",
args: me.get_args(start, end), args: me.get_args(start, end),
callback: function(r) { callback: function(r) {
@@ -185,7 +185,7 @@ frappe.views.Calendar = Class.extend({
var me = this; var me = this;
frappe.model.remove_from_locals(me.doctype, event.name); frappe.model.remove_from_locals(me.doctype, event.name);
return frappe.call({ return frappe.call({
method: me.update_event_method || "frappe.widgets.calendar.update_event",
method: me.update_event_method || "frappe.desk.calendar.update_event",
args: me.get_update_args(event), args: me.get_update_args(event),
callback: function(r) { callback: function(r) {
if(r.exc) { if(r.exc) {


部分文件因为文件数量过多而无法显示

正在加载...
取消
保存