Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
 
 
 
 
 
 

202 řádky
7.0 KiB

  1. from __future__ import unicode_literals
  2. from . import __version__ as app_version
  3. app_name = "frappe"
  4. app_title = "Frappe Framework"
  5. app_publisher = "Frappe Technologies"
  6. app_description = "Full stack web framework with Python, Javascript, MariaDB, Redis, Node"
  7. app_icon = "octicon octicon-circuit-board"
  8. app_color = "orange"
  9. source_link = "https://github.com/frappe/frappe"
  10. app_license = "MIT"
  11. develop_version = '9.x.x-develop'
  12. app_email = "info@frappe.io"
  13. before_install = "frappe.utils.install.before_install"
  14. after_install = "frappe.utils.install.after_install"
  15. page_js = {
  16. "setup-wizard": "public/js/frappe/setup_wizard.js"
  17. }
  18. # website
  19. app_include_js = [
  20. "assets/js/libs.min.js",
  21. "assets/js/desk.min.js",
  22. "assets/js/list.min.js",
  23. "assets/js/form.min.js",
  24. "assets/js/control.min.js",
  25. "assets/js/report.min.js",
  26. "assets/frappe/js/frappe/toolbar.js"
  27. ]
  28. app_include_css = [
  29. "assets/css/desk.min.css",
  30. "assets/css/list.min.css",
  31. "assets/css/form.min.css",
  32. "assets/css/report.min.css",
  33. "assets/css/module.min.css"
  34. ]
  35. web_include_js = [
  36. "website_script.js"
  37. ]
  38. bootstrap = "assets/frappe/css/bootstrap.css"
  39. web_include_css = [
  40. "assets/css/frappe-web.css"
  41. ]
  42. website_route_rules = [
  43. {"from_route": "/blog/<category>", "to_route": "Blog Post"},
  44. {"from_route": "/kb/<category>", "to_route": "Help Article"},
  45. {"from_route": "/newsletters", "to_route": "Newsletter"}
  46. ]
  47. write_file_keys = ["file_url", "file_name"]
  48. notification_config = "frappe.core.notifications.get_notification_config"
  49. before_tests = "frappe.utils.install.before_tests"
  50. email_append_to = ["Event", "ToDo", "Communication"]
  51. calendars = ["Event"]
  52. # login
  53. on_session_creation = [
  54. "frappe.core.doctype.activity_log.feed.login_feed",
  55. "frappe.core.doctype.user.user.notify_admin_access_to_system_manager",
  56. "frappe.limits.check_if_expired",
  57. "frappe.utils.scheduler.reset_enabled_scheduler_events",
  58. ]
  59. # permissions
  60. permission_query_conditions = {
  61. "Event": "frappe.desk.doctype.event.event.get_permission_query_conditions",
  62. "ToDo": "frappe.desk.doctype.todo.todo.get_permission_query_conditions",
  63. "User": "frappe.core.doctype.user.user.get_permission_query_conditions",
  64. "Note": "frappe.desk.doctype.note.note.get_permission_query_conditions",
  65. "Kanban Board": "frappe.desk.doctype.kanban_board.kanban_board.get_permission_query_conditions",
  66. "Contact": "frappe.contacts.address_and_contact.get_permission_query_conditions_for_contact",
  67. "Address": "frappe.contacts.address_and_contact.get_permission_query_conditions_for_address",
  68. "Communication": "frappe.core.doctype.communication.communication.get_permission_query_conditions_for_communication"
  69. }
  70. has_permission = {
  71. "Event": "frappe.desk.doctype.event.event.has_permission",
  72. "ToDo": "frappe.desk.doctype.todo.todo.has_permission",
  73. "User": "frappe.core.doctype.user.user.has_permission",
  74. "Note": "frappe.desk.doctype.note.note.has_permission",
  75. "Kanban Board": "frappe.desk.doctype.kanban_board.kanban_board.has_permission",
  76. "Contact": "frappe.contacts.address_and_contact.has_permission",
  77. "Address": "frappe.contacts.address_and_contact.has_permission",
  78. "Communication": "frappe.core.doctype.communication.communication.has_permission",
  79. }
  80. has_website_permission = {
  81. "Address": "frappe.contacts.doctype.address.address.has_website_permission"
  82. }
  83. standard_queries = {
  84. "User": "frappe.core.doctype.user.user.user_query"
  85. }
  86. doc_events = {
  87. "*": {
  88. "on_update": [
  89. "frappe.desk.notifications.clear_doctype_notifications",
  90. "frappe.core.doctype.activity_log.feed.update_feed"
  91. ],
  92. "after_rename": "frappe.desk.notifications.clear_doctype_notifications",
  93. "on_cancel": [
  94. "frappe.desk.notifications.clear_doctype_notifications",
  95. ],
  96. "on_trash": "frappe.desk.notifications.clear_doctype_notifications",
  97. "on_change": "frappe.core.doctype.feedback_trigger.feedback_trigger.trigger_feedback_request"
  98. },
  99. "Email Group Member": {
  100. "validate": "frappe.email.doctype.email_group.email_group.restrict_email_group"
  101. },
  102. }
  103. scheduler_events = {
  104. "all": [
  105. "frappe.email.queue.flush",
  106. "frappe.email.doctype.email_account.email_account.pull",
  107. "frappe.email.doctype.email_account.email_account.notify_unreplied",
  108. "frappe.oauth.delete_oauth2_data",
  109. "frappe.integrations.doctype.razorpay_settings.razorpay_settings.capture_payment",
  110. "frappe.twofactor.delete_all_barcodes_for_users"
  111. ],
  112. "hourly": [
  113. "frappe.model.utils.link_count.update_link_count",
  114. 'frappe.model.utils.user_settings.sync_user_settings',
  115. "frappe.utils.error.collect_error_snapshots",
  116. "frappe.desk.page.backups.backups.delete_downloadable_backups",
  117. "frappe.limits.update_space_usage"
  118. ],
  119. "daily": [
  120. "frappe.email.queue.clear_outbox",
  121. "frappe.desk.notifications.clear_notifications",
  122. "frappe.core.doctype.error_log.error_log.set_old_logs_as_seen",
  123. "frappe.desk.doctype.event.event.send_event_digest",
  124. "frappe.sessions.clear_expired_sessions",
  125. "frappe.email.doctype.email_alert.email_alert.trigger_daily_alerts",
  126. "frappe.async.remove_old_task_logs",
  127. "frappe.utils.scheduler.disable_scheduler_on_expiry",
  128. "frappe.utils.scheduler.restrict_scheduler_events_if_dormant",
  129. "frappe.email.doctype.auto_email_report.auto_email_report.send_daily",
  130. "frappe.core.doctype.feedback_request.feedback_request.delete_feedback_request",
  131. "frappe.core.doctype.activity_log.activity_log.clear_authentication_logs"
  132. ],
  133. "daily_long": [
  134. "frappe.integrations.doctype.dropbox_settings.dropbox_settings.take_backups_daily",
  135. "frappe.integrations.doctype.s3_backup_settings.s3_backup_settings.take_backups_daily"
  136. ],
  137. "weekly_long": [
  138. "frappe.integrations.doctype.dropbox_settings.dropbox_settings.take_backups_weekly",
  139. "frappe.integrations.doctype.s3_backup_settings.s3_backup_settings.take_backups_weekly"
  140. ],
  141. "monthly": [
  142. "frappe.email.doctype.auto_email_report.auto_email_report.send_monthly"
  143. ],
  144. "monthly_long": [
  145. "frappe.integrations.doctype.s3_backup_settings.s3_backup_settings.take_backups_monthly"
  146. ]
  147. }
  148. get_translated_dict = {
  149. ("doctype", "System Settings"): "frappe.geo.country_info.get_translated_dict",
  150. ("page", "setup-wizard"): "frappe.geo.country_info.get_translated_dict"
  151. }
  152. sounds = [
  153. {"name": "email", "src": "/assets/frappe/sounds/email.mp3", "volume": 0.1},
  154. {"name": "submit", "src": "/assets/frappe/sounds/submit.mp3", "volume": 0.1},
  155. {"name": "cancel", "src": "/assets/frappe/sounds/cancel.mp3", "volume": 0.1},
  156. {"name": "delete", "src": "/assets/frappe/sounds/delete.mp3", "volume": 0.05},
  157. {"name": "click", "src": "/assets/frappe/sounds/click.mp3", "volume": 0.05},
  158. {"name": "error", "src": "/assets/frappe/sounds/error.mp3", "volume": 0.1},
  159. # {"name": "alert", "src": "/assets/frappe/sounds/alert.mp3"},
  160. # {"name": "chime", "src": "/assets/frappe/sounds/chime.mp3"},
  161. ]
  162. bot_parsers = [
  163. 'frappe.utils.bot.ShowNotificationBot',
  164. 'frappe.utils.bot.GetOpenListBot',
  165. 'frappe.utils.bot.ListBot',
  166. 'frappe.utils.bot.FindBot',
  167. 'frappe.utils.bot.CountBot'
  168. ]
  169. setup_wizard_exception = "frappe.desk.page.setup_wizard.setup_wizard.email_setup_wizard_exception"
  170. before_write_file = "frappe.limits.validate_space_limit"
  171. otp_methods = ['OTP App','Email','SMS']