您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 
 
 

133 行
4.1 KiB

  1. # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
  2. # MIT License. See license.txt
  3. from __future__ import unicode_literals
  4. import frappe
  5. import getpass
  6. def before_install():
  7. frappe.reload_doc("core", "doctype", "docfield")
  8. frappe.reload_doc("core", "doctype", "docperm")
  9. frappe.reload_doc("core", "doctype", "doctype")
  10. def after_install():
  11. # reset installed apps for re-install
  12. frappe.db.set_global("installed_apps", '["frappe"]')
  13. install_basic_docs()
  14. from frappe.core.doctype.file.file import make_home_folder
  15. make_home_folder()
  16. import_country_and_currency()
  17. # save default print setting
  18. print_settings = frappe.get_doc("Print Settings")
  19. print_settings.save()
  20. # all roles to admin
  21. frappe.get_doc("User", "Administrator").add_roles(*frappe.db.sql_list("""select name from tabRole"""))
  22. # update admin password
  23. from frappe.auth import _update_password
  24. _update_password("Administrator", get_admin_password())
  25. # setup wizard now in frappe
  26. frappe.db.set_default('desktop:home_page', 'setup-wizard');
  27. frappe.db.commit()
  28. def install_basic_docs():
  29. # core users / roles
  30. install_docs = [
  31. {'doctype':'User', 'name':'Administrator', 'first_name':'Administrator',
  32. 'email':'admin@example.com', 'enabled':1, "is_admin": 1,
  33. 'user_roles': [{'role': 'Administrator'}]
  34. },
  35. {'doctype':'User', 'name':'Guest', 'first_name':'Guest',
  36. 'email':'guest@example.com', 'enabled':1, "is_guest": 1,
  37. 'user_roles': [{'role': 'Guest'}]
  38. },
  39. {'doctype': "Role", "role_name": "Report Manager"},
  40. {'doctype': "Workflow State", "workflow_state_name": "Pending",
  41. "icon": "question-sign", "style": ""},
  42. {'doctype': "Workflow State", "workflow_state_name": "Approved",
  43. "icon": "ok-sign", "style": "Success"},
  44. {'doctype': "Workflow State", "workflow_state_name": "Rejected",
  45. "icon": "remove", "style": "Danger"},
  46. {'doctype': "Workflow Action", "workflow_action_name": "Approve"},
  47. {'doctype': "Workflow Action", "workflow_action_name": "Reject"},
  48. {'doctype': "Workflow Action", "workflow_action_name": "Review"},
  49. {'doctype': "Email Account", "email_id": "notifications@example.com", "default_outgoing": 1},
  50. {'doctype': "Email Account", "email_id": "replies@example.com", "default_incoming": 1}
  51. ]
  52. for d in install_docs:
  53. try:
  54. frappe.get_doc(d).insert()
  55. except frappe.NameError:
  56. pass
  57. def get_admin_password():
  58. def ask_admin_password():
  59. admin_password = getpass.getpass("Set Administrator password: ")
  60. admin_password2 = getpass.getpass("Re-enter Administrator password: ")
  61. if not admin_password == admin_password2:
  62. print "\nPasswords do not match"
  63. return ask_admin_password()
  64. return admin_password
  65. admin_password = frappe.conf.get("admin_password")
  66. if not admin_password:
  67. return ask_admin_password()
  68. return admin_password
  69. def before_tests():
  70. frappe.db.sql("delete from `tabCustom Field`")
  71. frappe.db.sql("delete from `tabEvent`")
  72. frappe.db.commit()
  73. frappe.clear_cache()
  74. def import_country_and_currency():
  75. from frappe.geo.country_info import get_all
  76. from frappe.utils import update_progress_bar
  77. data = get_all()
  78. for i, name in enumerate(data):
  79. update_progress_bar("Updating country info", i, len(data))
  80. country = frappe._dict(data[name])
  81. add_country_and_currency(name, country)
  82. print
  83. # enable frequently used currencies
  84. for currency in ("INR", "USD", "GBP", "EUR", "AED", "AUD", "JPY", "CNY", "CHF"):
  85. frappe.db.set_value("Currency", currency, "enabled", 1)
  86. def add_country_and_currency(name, country):
  87. if not frappe.db.exists("Country", name):
  88. frappe.get_doc({
  89. "doctype": "Country",
  90. "country_name": name,
  91. "code": country.code,
  92. "date_format": country.date_format or "dd-mm-yyyy",
  93. "time_zones": "\n".join(country.timezones or []),
  94. "docstatus": 0
  95. }).db_insert()
  96. if country.currency and not frappe.db.exists("Currency", country.currency):
  97. frappe.get_doc({
  98. "doctype": "Currency",
  99. "currency_name": country.currency,
  100. "fraction": country.currency_fraction,
  101. "symbol": country.currency_symbol,
  102. "fraction_units": country.currency_fraction_units,
  103. "smallest_currency_fraction_value": country.smallest_currency_fraction_value,
  104. "number_format": country.number_format,
  105. "docstatus": 0
  106. }).db_insert()