Save naming series in property setter before reloadversion-14
@@ -11,6 +11,7 @@ from frappe.utils import now, cint | |||||
from frappe.model import no_value_fields | from frappe.model import no_value_fields | ||||
from frappe.model.document import Document | from frappe.model.document import Document | ||||
from frappe.model.db_schema import type_map | from frappe.model.db_schema import type_map | ||||
from frappe.core.doctype.property_setter.property_setter import make_property_setter | |||||
class DocType(Document): | class DocType(Document): | ||||
def validate(self): | def validate(self): | ||||
@@ -106,6 +107,29 @@ class DocType(Document): | |||||
else: | else: | ||||
frappe.db.sql("rename table `tab%s` to `tab%s`" % (old, new)) | 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): | def export_doc(self): | ||||
from frappe.modules.export_file import export_to_files | from frappe.modules.export_file import export_to_files | ||||
export_to_files(record_list=[['DocType', self.name]]) | export_to_files(record_list=[['DocType', self.name]]) | ||||
@@ -485,6 +485,9 @@ class Database: | |||||
def table_exists(self, tablename): | def table_exists(self, tablename): | ||||
return tablename in [d[0] for d in self.sql("show tables")] | 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): | def exists(self, dt, dn=None): | ||||
if isinstance(dt, basestring): | if isinstance(dt, basestring): | ||||
if dt!="DocType" and dt==dn: | if dt!="DocType" and dt==dn: | ||||
@@ -31,7 +31,16 @@ def delete_doc(doctype=None, name=None, force=0, ignore_doctypes=None, for_reloa | |||||
remove_all(doctype, name) | remove_all(doctype, name) | ||||
if doctype=="DocType": | 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 Field` where dt = %s", name) | ||||
frappe.db.sql("delete from `tabCustom Script` 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) | frappe.db.sql("delete from `tabProperty Setter` where doc_type = %s", name) | ||||
@@ -41,3 +41,4 @@ frappe.patches.v4_0.fix_attach_field_file_url | |||||
execute:frappe.reset_perms("User") #2014-06-13 | execute:frappe.reset_perms("User") #2014-06-13 | ||||
execute:frappe.db.sql("""delete from `tabUserRole` where ifnull(parentfield, '')=''""") #2014-06-17 | execute:frappe.db.sql("""delete from `tabUserRole` where ifnull(parentfield, '')=''""") #2014-06-17 | ||||
frappe.patches.v4_0.remove_user_owner_custom_field | 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 |