|
- # Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
- # MIT License. See license.txt
-
- from __future__ import unicode_literals
- """
- Create a new document with defaults set
- """
-
- import webnotes
- from webnotes.utils import nowdate, nowtime, cint, flt
- import webnotes.defaults
-
- def get_new_doc(doctype, parent_doc = None, parentfield = None):
- doc = webnotes.doc({
- "doctype": doctype,
- "__islocal": 1,
- "owner": webnotes.session.user,
- "docstatus": 0
- })
-
- meta = webnotes.get_doctype(doctype)
-
- restrictions = webnotes.defaults.get_restrictions()
-
- if parent_doc:
- doc.parent = parent_doc.name
- doc.parenttype = parent_doc.doctype
-
- if parentfield:
- doc.parentfield = parentfield
-
- for d in meta.get({"doctype":"DocField", "parent": doctype}):
- default = webnotes.defaults.get_user_default(d.fieldname)
-
- if (d.fieldtype=="Link") and d.ignore_restrictions != 1 and (d.options in restrictions)\
- and len(restrictions[d.options])==1:
- doc.fields[d.fieldname] = restrictions[d.options][0]
- elif default:
- doc.fields[d.fieldname] = default
- elif d.fields.get("default"):
- if d.default == "__user":
- doc.fields[d.fieldname] = webnotes.session.user
- elif d.default == "Today":
- doc.fields[d.fieldname] = nowdate()
-
- elif d.default.startswith(":"):
- ref_fieldname = d.default[1:].lower().replace(" ", "_")
- if parent_doc:
- ref_docname = parent_doc.fields[ref_fieldname]
- else:
- ref_docname = webnotes.conn.get_default(ref_fieldname)
- doc.fields[d.fieldname] = webnotes.conn.get_value(d.default[1:],
- ref_docname, d.fieldname)
-
- else:
- doc.fields[d.fieldname] = d.default
-
- # convert type of default
- if d.fieldtype in ("Int", "Check"):
- doc.fields[d.fieldname] = cint(doc.fields[d.fieldname])
- elif d.fieldtype in ("Float", "Currency"):
- doc.fields[d.fieldname] = flt(doc.fields[d.fieldname])
-
- elif d.fieldtype == "Time":
- doc.fields[d.fieldname] = nowtime()
-
- return doc
|