diff --git a/frappe/core/doctype/custom_field/custom_field.py b/frappe/core/doctype/custom_field/custom_field.py index 9188e07b93..0180b996cf 100644 --- a/frappe/core/doctype/custom_field/custom_field.py +++ b/frappe/core/doctype/custom_field/custom_field.py @@ -78,7 +78,7 @@ class CustomField(Document): @frappe.whitelist() def get_fields_label(doctype=None): - return [{"value": df.fieldname, "label": _(df.label)} for df in frappe.get_meta(doctype).get("fields")] + return [{"value": df.fieldname or "", "label": _(df.label or "")} for df in frappe.get_meta(doctype).get("fields")] def create_custom_field_if_values_exist(doctype, df): df = frappe._dict(df) diff --git a/frappe/model/db_schema.py b/frappe/model/db_schema.py index b6078e5b1c..488f623cea 100644 --- a/frappe/model/db_schema.py +++ b/frappe/model/db_schema.py @@ -77,8 +77,8 @@ class DbTable: name varchar(255) not null primary key, creation datetime(6), modified datetime(6), - modified_by varchar(40), - owner varchar(60), + modified_by varchar(255), + owner varchar(255), docstatus int(1) default '0', parent varchar(255), parentfield varchar(255), diff --git a/frappe/model/document.py b/frappe/model/document.py index 66e1bd1bf0..c8db03992f 100644 --- a/frappe/model/document.py +++ b/frappe/model/document.py @@ -369,9 +369,10 @@ class Document(BaseDocument): def run_method(self, method, *args, **kwargs): """run standard triggers, plus those in frappe""" - if hasattr(self, method): + if hasattr(self, method) and hasattr(getattr(self, method), "__call__"): fn = lambda self, *args, **kwargs: getattr(self, method)(*args, **kwargs) else: + # hack! to run hooks even if method does not exist fn = lambda self, *args, **kwargs: None fn.__name__ = method.encode("utf-8") diff --git a/frappe/model/naming.py b/frappe/model/naming.py index 48b551f209..e9ea157bd0 100644 --- a/frappe/model/naming.py +++ b/frappe/model/naming.py @@ -13,13 +13,11 @@ def set_new_name(doc): # amendments if getattr(doc, "amended_from", None): return _get_amended_name(doc) - else: - tmp = getattr(doc, "autoname", None) - if tmp and not isinstance(tmp, basestring): - # autoname in a function, not a property - doc.autoname() - if doc.name: - return + + elif hasattr(doc, "run_method"): + doc.run_method("autoname") + if doc.name: + return autoname = frappe.get_meta(doc.doctype).autoname diff --git a/frappe/patches.txt b/frappe/patches.txt index 37baaaf15b..76e8367c8f 100644 --- a/frappe/patches.txt +++ b/frappe/patches.txt @@ -9,6 +9,7 @@ execute:frappe.reload_doc('core', 'doctype', 'report') #2014-06-03 execute:frappe.reload_doc('core', 'doctype', 'version') #2014-02-21 execute:frappe.db.sql("alter table `tabSessions` modify `user` varchar(255), engine=InnoDB") execute:frappe.db.sql("delete from `tabDocField` where parent='0'") +frappe.patches.v4_0.change_varchar_length frappe.patches.v4_0.webnotes_to_frappe execute:frappe.reset_perms("Module Def") diff --git a/frappe/patches/v4_0/change_varchar_length.py b/frappe/patches/v4_0/change_varchar_length.py new file mode 100644 index 0000000000..f822bced5a --- /dev/null +++ b/frappe/patches/v4_0/change_varchar_length.py @@ -0,0 +1,23 @@ +# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors +# MIT License. See license.txt + +from __future__ import unicode_literals +import frappe + +def execute(): + for dt in frappe.db.sql_list("""select name from `tabDocType` where ifnull(issingle, 0)=0"""): + desc = dict((d["Field"], d) for d in frappe.db.sql("desc `tab{}`".format(dt), as_dict=True)) + alter_table = [] + + if desc["name"]["Type"] != "varchar(255)": + alter_table.append("change `name` `name` varchar(255) not null primary key") + + for fieldname in ("modified_by", "owner", "parent", "parentfield", "parenttype"): + if desc[fieldname]["Type"] != "varchar(255)": + alter_table.append("change `{fieldname}` `{fieldname}` varchar(255)".format(fieldname=fieldname)) + + if alter_table: + alter_table_query = "alter table `tab{doctype}` {alter_table}".format(doctype=dt, alter_table=",\n".join(alter_table)) + # print alter_table_query + frappe.db.sql_ddl(alter_table_query) + diff --git a/frappe/public/js/frappe/dom.js b/frappe/public/js/frappe/dom.js index 1fec30516c..cac0bc1193 100644 --- a/frappe/public/js/frappe/dom.js +++ b/frappe/public/js/frappe/dom.js @@ -247,8 +247,16 @@ frappe.dom.set_box_shadow = function(ele, spread) { var value = null; var label = null; } else { - var value = is_null(v.value) ? v : v.value; - var label = is_null(v.label) ? __(v) : __(v.label); + var is_value_null = is_null(v.value); + var is_label_null = is_null(v.label); + + if (is_value_null && is_label_null) { + var value = v; + var label = __(v); + } else { + var value = is_value_null ? "" : v.value; + var label = is_label_null ? __(value) : __(v.label); + } } $('