fix(default): cast as string as required
This commit is contained in:
parent
b5cb39bdb1
commit
8a198f363b
4 changed files with 8 additions and 7 deletions
|
|
@ -752,8 +752,8 @@ def validate_fields(meta):
|
|||
def check_illegal_default(d):
|
||||
if d.fieldtype == "Check" and not d.default:
|
||||
d.default = '0'
|
||||
if d.fieldtype == "Check" and d.default not in ('0', '1'):
|
||||
frappe.throw(_("Default for 'Check' type of field must be either '0' or '1'"))
|
||||
if d.fieldtype == "Check" and cint(d.default) not in (0, 1):
|
||||
frappe.throw(_("Default for 'Check' type of field {0} must be either '0' or '1'".format(frappe.bold(d.fieldname))))
|
||||
if d.fieldtype == "Select" and d.default:
|
||||
if not d.options:
|
||||
frappe.throw(_("Options for {0} must be set before setting the default value.").format(frappe.bold(d.fieldname)))
|
||||
|
|
|
|||
|
|
@ -186,7 +186,7 @@ class DbColumn:
|
|||
column_def += ' not null default {0}'.format(default_value)
|
||||
|
||||
elif self.default and (self.default not in frappe.db.DEFAULT_SHORTCUTS) \
|
||||
and not self.default.startswith(":") and column_def not in ('text', 'longtext'):
|
||||
and not cstr(self.default).startswith(":") and column_def not in ('text', 'longtext'):
|
||||
column_def += " default {}".format(frappe.db.escape(self.default))
|
||||
|
||||
if self.unique and (column_def not in ('text', 'longtext')):
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import copy
|
|||
import frappe
|
||||
import frappe.defaults
|
||||
from frappe.model import data_fieldtypes
|
||||
from frappe.utils import nowdate, nowtime, now_datetime
|
||||
from frappe.utils import nowdate, nowtime, now_datetime, cstr
|
||||
from frappe.core.doctype.user_permission.user_permission import get_user_permissions
|
||||
from frappe.permissions import filter_allowed_docs_for_doctype
|
||||
|
||||
|
|
@ -99,7 +99,7 @@ def get_static_default_value(df, doctype_user_permissions, allowed_records):
|
|||
elif df.default == "Today":
|
||||
return nowdate()
|
||||
|
||||
elif not df.default.startswith(":"):
|
||||
elif not cstr(df.default).startswith(":"):
|
||||
# a simple default value
|
||||
is_allowed_default_value = (not user_permissions_exist(df, doctype_user_permissions)
|
||||
or (df.default in allowed_records))
|
||||
|
|
@ -116,7 +116,7 @@ def set_dynamic_default_values(doc, parent_doc, parentfield):
|
|||
|
||||
for df in frappe.get_meta(doc["doctype"]).get("fields"):
|
||||
if df.get("default"):
|
||||
if df.default.startswith(":"):
|
||||
if cstr(df.default).startswith(":"):
|
||||
default_value = get_default_based_on_another_field(df, user_permissions, parent_doc)
|
||||
if default_value is not None and not doc.get(df.fieldname):
|
||||
doc[df.fieldname] = default_value
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
import unittest
|
||||
import frappe
|
||||
|
||||
from frappe.utils import cstr
|
||||
from frappe.core.utils import find
|
||||
from frappe.custom.doctype.property_setter.property_setter import make_property_setter
|
||||
|
||||
|
|
@ -31,7 +32,7 @@ class TestDBUpdate(unittest.TestCase):
|
|||
default = field_def.default if field_def.default is not None else fallback_default
|
||||
|
||||
self.assertEqual(fieldtype, table_column.type)
|
||||
self.assertIn(table_column.default or 'NULL', [default, "'{}'".format(default)])
|
||||
self.assertIn(cstr(table_column.default) or 'NULL', [cstr(default), "'{}'".format(default)])
|
||||
|
||||
def get_fieldtype_from_def(field_def):
|
||||
fieldtuple = frappe.db.type_map.get(field_def.fieldtype, ('', 0))
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue