瀏覽代碼

Save naming series in property setter before reload

version-14
Anand Doshi 11 年之前
父節點
當前提交
cb004a168b
共有 4 個文件被更改,包括 38 次插入1 次删除
  1. +24
    -0
      frappe/core/doctype/doctype/doctype.py
  2. +3
    -0
      frappe/database.py
  3. +10
    -1
      frappe/model/delete_doc.py
  4. +1
    -0
      frappe/patches.txt

+ 24
- 0
frappe/core/doctype/doctype/doctype.py 查看文件

@@ -11,6 +11,7 @@ from frappe.utils import now, cint
from frappe.model import no_value_fields
from frappe.model.document import Document
from frappe.model.db_schema import type_map
from frappe.core.doctype.property_setter.property_setter import make_property_setter

class DocType(Document):
def validate(self):
@@ -106,6 +107,29 @@ class DocType(Document):
else:
frappe.db.sql("rename table `tab%s` to `tab%s`" % (old, new))

def before_reload(self):
if not (self.issingle and self.istable):
self.preserve_naming_series_options_in_property_setter()

def preserve_naming_series_options_in_property_setter(self):
"""preserve naming_series as property setter if it does not exist"""
naming_series = self.get("fields", {"fieldname": "naming_series"})

if not naming_series:
return

# check if atleast 1 record exists
if not (frappe.db.table_exists("tab" + self.name) and frappe.db.sql("select name from `tab{}` limit 1".format(self.name))):
return

existing_property_setter = frappe.db.get_value("Property Setter", {"doc_type": self.name,
"property": "options", "field_name": "naming_series"})

if not existing_property_setter:
make_property_setter(self.name, "naming_series", "options", naming_series[0].options, "Text")
if naming_series[0].default:
make_property_setter(self.name, "naming_series", "default", naming_series[0].default, "Text")

def export_doc(self):
from frappe.modules.export_file import export_to_files
export_to_files(record_list=[['DocType', self.name]])


+ 3
- 0
frappe/database.py 查看文件

@@ -485,6 +485,9 @@ class Database:
def table_exists(self, tablename):
return tablename in [d[0] for d in self.sql("show tables")]

def a_row_exists(self, doctype):
return self.sql("select name from `tab{doctype}` limit 1".format(doctype=doctype))

def exists(self, dt, dn=None):
if isinstance(dt, basestring):
if dt!="DocType" and dt==dn:


+ 10
- 1
frappe/model/delete_doc.py 查看文件

@@ -31,7 +31,16 @@ def delete_doc(doctype=None, name=None, force=0, ignore_doctypes=None, for_reloa
remove_all(doctype, name)

if doctype=="DocType":
if not for_reload:
if for_reload:

try:
doc = frappe.get_doc(doctype, name)
except frappe.DoesNotExistError:
pass
else:
doc.run_method("before_reload")

else:
frappe.db.sql("delete from `tabCustom Field` where dt = %s", name)
frappe.db.sql("delete from `tabCustom Script` where dt = %s", name)
frappe.db.sql("delete from `tabProperty Setter` where doc_type = %s", name)


+ 1
- 0
frappe/patches.txt 查看文件

@@ -41,3 +41,4 @@ frappe.patches.v4_0.fix_attach_field_file_url
execute:frappe.reset_perms("User") #2014-06-13
execute:frappe.db.sql("""delete from `tabUserRole` where ifnull(parentfield, '')=''""") #2014-06-17
frappe.patches.v4_0.remove_user_owner_custom_field
execute:frappe.db.sql("""update `tabProperty Setter` set property_type='Text' where property in ('options', 'default')""") #2014-06-20

Loading…
取消
儲存