diff --git a/frappe/core/doctype/todo/todo_list.html b/frappe/core/doctype/todo/todo_list.html
index 18b9dea848..20692806ee 100644
--- a/frappe/core/doctype/todo/todo_list.html
+++ b/frappe/core/doctype/todo/todo_list.html
@@ -23,7 +23,7 @@
- {%= frappe.avatar(doc.assigned_to) %}
+ {%= frappe.avatar(doc.owner) %}
diff --git a/frappe/model/create_new.py b/frappe/model/create_new.py
index aa4f4983ee..2b92a99b38 100644
--- a/frappe/model/create_new.py
+++ b/frappe/model/create_new.py
@@ -89,5 +89,5 @@ def get_default_value(df, defaults, user_permissions, parent_doc):
elif df.fieldtype == "Time":
return nowtime()
- elif (df.fieldtype == "Select" and df.options and df.options != "[Select]"):
+ elif (df.fieldtype == "Select" and df.options and df.options not in ("[Select]", "Loading...")):
return df.options.split("\n")[0]
diff --git a/frappe/model/document.py b/frappe/model/document.py
index 0993c19008..0097d392d6 100644
--- a/frappe/model/document.py
+++ b/frappe/model/document.py
@@ -80,7 +80,13 @@ class Document(BaseDocument):
def load_from_db(self):
if not getattr(self, "_metaclass", False) and self.meta.issingle:
- self.update(frappe.db.get_singles_dict(self.doctype))
+ single_doc = frappe.db.get_singles_dict(self.doctype)
+ if not single_doc:
+ single_doc = frappe.new_doc(self.doctype).as_dict()
+ single_doc["name"] = self.doctype
+ del single_doc["__islocal"]
+
+ self.update(single_doc)
self.init_valid_columns()
self._fix_numeric_types()
diff --git a/frappe/public/build.json b/frappe/public/build.json
index 6c4b1acf11..f79dd07d7b 100644
--- a/frappe/public/build.json
+++ b/frappe/public/build.json
@@ -107,6 +107,7 @@
"public/js/frappe/ui/tags.js",
"public/js/frappe/views/container.js",
+ "public/js/frappe/views/factory.js",
"public/js/frappe/views/pageview.js",
"public/js/frappe/views/doclistview.js",
"public/js/frappe/views/sidebar_stats.js",
diff --git a/frappe/public/js/frappe/form/footer.js b/frappe/public/js/frappe/form/footer.js
index 8948319d0a..817509a4f6 100644
--- a/frappe/public/js/frappe/form/footer.js
+++ b/frappe/public/js/frappe/form/footer.js
@@ -91,7 +91,7 @@ frappe.ui.form.Footer = Class.extend({
this.frm.attachments.refresh();
this.frm.comments.refresh();
this.frm.assign_to.refresh();
- this.frm.tags.refresh();
+ this.frm.tags && this.frm.tags.refresh();
}
},
});
diff --git a/frappe/public/js/frappe/model/create_new.js b/frappe/public/js/frappe/model/create_new.js
index 19fe0487de..5a63ca3dfa 100644
--- a/frappe/public/js/frappe/model/create_new.js
+++ b/frappe/public/js/frappe/model/create_new.js
@@ -66,7 +66,7 @@ $.extend(frappe.model, {
doc[f.fieldname] = v;
updated.push(f.fieldname);
} else if(f.fieldtype == "Select" && f.options
- && f.options!="[Select]") {
+ && !in_list(["[Select]", "Loading..."], f.options)) {
doc[f.fieldname] = f.options.split("\n")[0];
}
}
diff --git a/frappe/public/js/frappe/views/container.js b/frappe/public/js/frappe/views/container.js
index b391097e6a..363692a7e3 100644
--- a/frappe/public/js/frappe/views/container.js
+++ b/frappe/public/js/frappe/views/container.js
@@ -73,34 +73,3 @@ frappe.views.Container = Class.extend({
return this.page;
}
});
-
-frappe.views.Factory = Class.extend({
- init: function(opts) {
- $.extend(this, opts);
- },
- show: function() {
- var page_name = frappe.get_route_str(),
- me = this;
- if(frappe.pages[page_name]) {
- frappe.container.change_to(frappe.pages[page_name]);
- } else {
- var route = frappe.get_route();
- if(route[1]) {
- me.make(route);
- } else {
- frappe.show_not_found(route);
- }
- }
- },
- make_page: function(double_column) {
- var page_name = frappe.get_route_str(),
- page = frappe.container.add_page(page_name);
-
- frappe.ui.make_app_page({
- parent: page,
- single_column: !double_column
- });
- frappe.container.change_to(page_name);
- return page;
- }
-})
diff --git a/frappe/public/js/frappe/views/factory.js b/frappe/public/js/frappe/views/factory.js
new file mode 100644
index 0000000000..73fa87ba11
--- /dev/null
+++ b/frappe/public/js/frappe/views/factory.js
@@ -0,0 +1,36 @@
+// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
+// MIT License. See license.txt
+
+frappe.provide('frappe.pages');
+frappe.provide('frappe.views');
+
+frappe.views.Factory = Class.extend({
+ init: function(opts) {
+ $.extend(this, opts);
+ },
+ show: function() {
+ var page_name = frappe.get_route_str(),
+ me = this;
+ if(frappe.pages[page_name] && page_name.indexOf("Form/")===-1) {
+ frappe.container.change_to(frappe.pages[page_name]);
+ } else {
+ var route = frappe.get_route();
+ if(route[1]) {
+ me.make(route);
+ } else {
+ frappe.show_not_found(route);
+ }
+ }
+ },
+ make_page: function(double_column) {
+ var page_name = frappe.get_route_str(),
+ page = frappe.container.add_page(page_name);
+
+ frappe.ui.make_app_page({
+ parent: page,
+ single_column: !double_column
+ });
+ frappe.container.change_to(page_name);
+ return page;
+ }
+});