From 305d3d7c68527095877a93654dc8939b7dd704e6 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Fri, 14 Mar 2014 11:20:34 +0530 Subject: [PATCH] Fixes in doc --- frappe/model/doc.py | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/frappe/model/doc.py b/frappe/model/doc.py index 91eeed172b..5e14fa376f 100755 --- a/frappe/model/doc.py +++ b/frappe/model/doc.py @@ -217,8 +217,6 @@ class Document: def save(self, new=0, check_links=1, ignore_fields=0, make_autoname=1, keep_timestamps=False): - self.get_meta() - if new: self.fields["__islocal"] = 1 @@ -230,7 +228,7 @@ class Document: self.set_idx() # if required, make new - if not self._meta[0].issingle: + if not self.meta.issingle: if self.is_new(): r = self._insert(make_autoname=make_autoname, keep_timestamps = keep_timestamps) if r: @@ -242,7 +240,7 @@ class Document: # save the values - self._update_values(self._meta[0].issingle, + self._update_values(self.meta.issingle, check_links and self.make_link_list() or {}, ignore_fields=ignore_fields, keep_timestamps=keep_timestamps) self._clear_temp_fields() @@ -264,8 +262,7 @@ class Document: self._new_name_set = True - self.get_meta() - autoname = self._meta[0].autoname + autoname = self.meta.autoname self.localname = self.name @@ -306,7 +303,7 @@ class Document: self.name = self.fields['__newname'] # default name for table - elif self._meta[0].istable: + elif self.meta.istable: self.name = make_autoname('#########', self.doctype) # unable to determine a name, use global series @@ -343,7 +340,7 @@ class Document: self.set_new_name() # validate name - self.name = validate_name(self.doctype, self.name, self._meta[0].name_case) + self.name = validate_name(self.doctype, self.name, self.meta.name_case) # insert! if not keep_timestamps: @@ -460,12 +457,10 @@ class Document: if getattr(frappe.local, "valid_fields_map", None) is None: frappe.local.valid_fields_map = {} - self.get_meta() - valid_fields_map = frappe.local.valid_fields_map if not valid_fields_map.get(self.doctype): - if cint( self._meta[0].issingle): + if cint(self.meta.issingle): doctypelist = frappe.model.doctype.get(self.doctype) valid_fields_map[self.doctype] = doctypelist.get_fieldnames({ "fieldtype": ["not in", frappe.model.no_value_fields]}) @@ -476,21 +471,26 @@ class Document: return valid_fields_map.get(self.doctype) def validate_constants(self): - self.get_meta() - constants = [d.fieldname for d in self._meta.get({"set_only_once": 1})] + if frappe.flags.in_import: + return + + meta = frappe.get_doctype(self.doctype) + constants = [d.fieldname for d in meta.get({"set_only_once": 1})] if constants: values = frappe.db.get_value(self.doctype, self.name, constants, as_dict=True) for fieldname in constants: if self.fields.get(fieldname) != values.get(fieldname): frappe.throw("{0}: {1}".format(_("Value cannot be changed for"), - _(self._meta.get_field(fieldname).label)), frappe.CannotChangeConstantError) - - def get_meta(self): + _(meta.get_field(fieldname).label)), frappe.CannotChangeConstantError) + + @property + def meta(self): if not self._meta: - self._meta = frappe.get_doctype(self.doctype) + self._meta = frappe.db.get_value("DocType", self.doctype, "*", as_dict=True) \ + or frappe._dict() + return self._meta - def update_parentinfo(self): """update parent type and parent field, if not explicitly specified"""