Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 
 
 

259 linhas
6.5 KiB

  1. import frappe
  2. from frappe import _
  3. from frappe.utils import add_to_date, now
  4. @frappe.whitelist()
  5. def create_if_not_exists(doc):
  6. '''Create records if they dont exist.
  7. Will check for uniqueness by checking if a record exists with these field value pairs
  8. :param doc: dict of field value pairs. can be a list of dict for multiple records.
  9. '''
  10. if not frappe.local.dev_server:
  11. frappe.throw(_('This method can only be accessed in development'), frappe.PermissionError)
  12. doc = frappe.parse_json(doc)
  13. if not isinstance(doc, list):
  14. docs = [doc]
  15. else:
  16. docs = doc
  17. names = []
  18. for doc in docs:
  19. doc = frappe._dict(doc)
  20. filters = doc.copy()
  21. filters.pop('doctype')
  22. name = frappe.db.exists(doc.doctype, filters)
  23. if not name:
  24. d = frappe.get_doc(doc)
  25. d.insert(ignore_permissions=True)
  26. name = d.name
  27. names.append(name)
  28. return names
  29. @frappe.whitelist()
  30. def create_todo_records():
  31. if frappe.db.get_all('ToDo', {'description': 'this is first todo'}):
  32. return
  33. frappe.get_doc({
  34. "doctype": "ToDo",
  35. "date": add_to_date(now(), days=7),
  36. "description": "this is first todo"
  37. }).insert()
  38. frappe.get_doc({
  39. "doctype": "ToDo",
  40. "date": add_to_date(now(), days=-7),
  41. "description": "this is second todo"
  42. }).insert()
  43. frappe.get_doc({
  44. "doctype": "ToDo",
  45. "date": add_to_date(now(), months=2),
  46. "description": "this is third todo"
  47. }).insert()
  48. frappe.get_doc({
  49. "doctype": "ToDo",
  50. "date": add_to_date(now(), months=-2),
  51. "description": "this is fourth todo"
  52. }).insert()
  53. @frappe.whitelist()
  54. def create_communication_record():
  55. doc = frappe.get_doc({
  56. "doctype": "Communication",
  57. "recipients": "test@gmail.com",
  58. "subject": "Test Form Communication 1",
  59. "communication_date": frappe.utils.now_datetime(),
  60. })
  61. doc.insert()
  62. return doc
  63. @frappe.whitelist()
  64. def setup_workflow():
  65. from frappe.workflow.doctype.workflow.test_workflow import create_todo_workflow
  66. create_todo_workflow()
  67. create_todo_records()
  68. frappe.clear_cache()
  69. @frappe.whitelist()
  70. def create_contact_phone_nos_records():
  71. if frappe.db.get_all('Contact', {'first_name': 'Test Contact'}):
  72. return
  73. doc = frappe.new_doc('Contact')
  74. doc.first_name = 'Test Contact'
  75. for index in range(1000):
  76. doc.append('phone_nos', {'phone': '123456{}'.format(index)})
  77. doc.insert()
  78. @frappe.whitelist()
  79. def create_doctype(name, fields):
  80. fields = frappe.parse_json(fields)
  81. if frappe.db.exists('DocType', name):
  82. return
  83. frappe.get_doc({
  84. "doctype": "DocType",
  85. "module": "Core",
  86. "custom": 1,
  87. "fields": fields,
  88. "permissions": [{
  89. "role": "System Manager",
  90. "read": 1
  91. }],
  92. "name": name
  93. }).insert()
  94. @frappe.whitelist()
  95. def create_child_doctype(name, fields):
  96. fields = frappe.parse_json(fields)
  97. if frappe.db.exists('DocType', name):
  98. return
  99. frappe.get_doc({
  100. "doctype": "DocType",
  101. "module": "Core",
  102. "istable": 1,
  103. "custom": 1,
  104. "fields": fields,
  105. "permissions": [{
  106. "role": "System Manager",
  107. "read": 1
  108. }],
  109. "name": name
  110. }).insert()
  111. @frappe.whitelist()
  112. def create_contact_records():
  113. if frappe.db.get_all('Contact', {'first_name': 'Test Form Contact 1'}):
  114. return
  115. insert_contact('Test Form Contact 1', '12345')
  116. insert_contact('Test Form Contact 2', '54321')
  117. insert_contact('Test Form Contact 3', '12345')
  118. def insert_contact(first_name, phone_number):
  119. doc = frappe.get_doc({
  120. 'doctype': 'Contact',
  121. 'first_name': first_name
  122. })
  123. doc.append('phone_nos', {'phone': phone_number})
  124. doc.insert()
  125. @frappe.whitelist()
  126. def create_form_tour():
  127. if frappe.db.exists('Form Tour', {'name': 'Test Form Tour'}):
  128. return
  129. def get_docfield_name(filters):
  130. return frappe.db.get_value('DocField', filters, "name")
  131. tour = frappe.get_doc({
  132. 'doctype': 'Form Tour',
  133. 'title': 'Test Form Tour',
  134. 'reference_doctype': 'Contact',
  135. 'save_on_complete': 1,
  136. 'steps': [{
  137. "title": "Test Title 1",
  138. "description": "Test Description 1",
  139. "has_next_condition": 1,
  140. "next_step_condition": "eval: doc.first_name",
  141. "field": get_docfield_name({'parent': 'Contact', 'fieldname': 'first_name'}),
  142. "fieldname": "first_name",
  143. "fieldtype": "Data"
  144. },{
  145. "title": "Test Title 2",
  146. "description": "Test Description 2",
  147. "has_next_condition": 1,
  148. "next_step_condition": "eval: doc.last_name",
  149. "field": get_docfield_name({'parent': 'Contact', 'fieldname': 'last_name'}),
  150. "fieldname": "last_name",
  151. "fieldtype": "Data"
  152. },{
  153. "title": "Test Title 3",
  154. "description": "Test Description 3",
  155. "field": get_docfield_name({'parent': 'Contact', 'fieldname': 'phone_nos'}),
  156. "fieldname": "phone_nos",
  157. "fieldtype": "Table"
  158. },{
  159. "title": "Test Title 4",
  160. "description": "Test Description 4",
  161. "is_table_field": 1,
  162. "parent_field": get_docfield_name({'parent': 'Contact', 'fieldname': 'phone_nos'}),
  163. "field": get_docfield_name({'parent': 'Contact Phone', 'fieldname': 'phone'}),
  164. "next_step_condition": "eval: doc.phone",
  165. "has_next_condition": 1,
  166. "fieldname": "phone",
  167. "fieldtype": "Data"
  168. }]
  169. })
  170. tour.insert()
  171. @frappe.whitelist()
  172. def create_data_for_discussions():
  173. web_page = create_web_page("Test page for discussions", "test-page-discussions", False)
  174. create_topic_and_reply(web_page)
  175. create_web_page("Test single thread discussion", "test-single-thread", True)
  176. def create_web_page(title, route, single_thread):
  177. web_page = frappe.db.exists("Web Page", {"route": route})
  178. if not web_page:
  179. web_page = frappe.get_doc({
  180. "doctype": "Web Page",
  181. "title": title,
  182. "route": route,
  183. "published": True
  184. })
  185. web_page.save()
  186. web_page.append("page_blocks", {
  187. "web_template": "Discussions",
  188. "web_template_values": frappe.as_json({
  189. "title": "Discussions",
  190. "cta_title": "New Discussion",
  191. "docname": web_page.name,
  192. "single_thread": single_thread
  193. })
  194. })
  195. web_page.save()
  196. return web_page
  197. def create_topic_and_reply(web_page):
  198. topic = frappe.db.exists("Discussion Topic",{
  199. "reference_doctype": "Web Page",
  200. "reference_docname": web_page.name
  201. })
  202. if not topic:
  203. topic = frappe.get_doc({
  204. "doctype": "Discussion Topic",
  205. "reference_doctype": "Web Page",
  206. "reference_docname": web_page.name,
  207. "title": "Test Topic"
  208. })
  209. topic.save()
  210. reply = frappe.get_doc({
  211. "doctype": "Discussion Reply",
  212. "topic": topic.name,
  213. "reply": "This is a test reply"
  214. })
  215. reply.save()
  216. @frappe.whitelist()
  217. def update_webform_to_multistep():
  218. if not frappe.db.exists("Web Form", "update-profile-duplicate"):
  219. doc = frappe.get_doc("Web Form", "edit-profile")
  220. _doc = frappe.copy_doc(doc)
  221. _doc.is_multi_step_form = 1
  222. _doc.title = "update-profile-duplicate"
  223. _doc.route = "update-profile-duplicate"
  224. _doc.is_standard = False
  225. _doc.save()