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

64 行
1.6 KiB

  1. # Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
  2. # MIT License. See license.txt
  3. from __future__ import unicode_literals
  4. import frappe, json
  5. @frappe.whitelist()
  6. def savedocs():
  7. """save / submit / update doclist"""
  8. try:
  9. doc = frappe.get_doc(json.loads(frappe.form_dict.doc))
  10. set_local_name(doc)
  11. # action
  12. doc.docstatus = {"Save":0, "Submit": 1, "Update": 1, "Cancel": 2}[frappe.form_dict.action]
  13. try:
  14. doc.save()
  15. except frappe.NameError, e:
  16. doctype, name, original_exception = e if isinstance(e, tuple) else (doc.doctype or "", doc.name or "", None)
  17. frappe.msgprint(frappe._("{0} {1} already exists").format(doctype, name))
  18. raise
  19. # update recent documents
  20. frappe.user.update_recent(doc.doctype, doc.name)
  21. send_updated_docs(doc)
  22. except Exception:
  23. frappe.msgprint(frappe._('Did not save'))
  24. frappe.errprint(frappe.utils.get_traceback())
  25. raise
  26. @frappe.whitelist()
  27. def cancel(doctype=None, name=None):
  28. """cancel a doclist"""
  29. try:
  30. doc = frappe.get_doc(doctype, name)
  31. doc.cancel()
  32. send_updated_docs(doc)
  33. except Exception:
  34. frappe.errprint(frappe.utils.get_traceback())
  35. frappe.msgprint(frappe._("Did not cancel"))
  36. raise
  37. def send_updated_docs(doc):
  38. from load import get_docinfo
  39. get_docinfo(doc.doctype, doc.name)
  40. d = doc.as_dict()
  41. if hasattr(doc, 'localname'):
  42. d["localname"] = doc.localname
  43. frappe.response.docs.append(d)
  44. def set_local_name(doc):
  45. def _set_local_name(d):
  46. if doc.get('__islocal') or d.get('__islocal'):
  47. d.localname = d.name
  48. d.name = None
  49. _set_local_name(doc)
  50. for child in doc.get_all_children():
  51. _set_local_name(child)