diff --git a/frappe/commands.py b/frappe/commands.py
index 6957e1aea4..e0e61cbe27 100644
--- a/frappe/commands.py
+++ b/frappe/commands.py
@@ -383,15 +383,28 @@ def reset_perms(context):
@click.command('execute')
@click.argument('method')
+@click.option('--args')
+@click.option('--kwargs')
@pass_context
-def execute(context, method):
+def execute(context, method, args=None, kwargs=None):
"execute a function"
for site in context.sites:
try:
frappe.init(site=site)
frappe.connect()
print frappe.local.site
- ret = frappe.get_attr(method)()
+
+ if args:
+ args = eval(args)
+ else:
+ args = ()
+
+ if kwargs:
+ kwargs = eval(args)
+ else:
+ kwargs = {}
+
+ ret = frappe.get_attr(method)(*args, **kwargs)
if frappe.db:
frappe.db.commit()
diff --git a/frappe/desk/doctype/todo/todo.js b/frappe/desk/doctype/todo/todo.js
index be16bdf0d8..3a204408f7 100644
--- a/frappe/desk/doctype/todo/todo.js
+++ b/frappe/desk/doctype/todo/todo.js
@@ -32,6 +32,9 @@ frappe.ui.form.on("ToDo", {
frm.save();
}, null, "btn-default");
}
+ frm.add_custom_button(__("New"), function() {
+ newdoc("ToDo")
+ }, null, "btn-default");
}
}
});
diff --git a/frappe/desk/form/assign_to.py b/frappe/desk/form/assign_to.py
index b8e08c858d..996fa6be28 100644
--- a/frappe/desk/form/assign_to.py
+++ b/frappe/desk/form/assign_to.py
@@ -103,8 +103,8 @@ def notify_assignment(assigned_by, owner, doc_type, doc_name, action='CLOSE',
user_info = get_fullnames()
# Search for email address in description -- i.e. assignee
- from frappe.utils import get_url_to_form
- assignment = get_url_to_form(doc_type, doc_name, label="%s: %s" % (doc_type, doc_name))
+ from frappe.utils import get_link_to_form
+ assignment = get_link_to_form(doc_type, doc_name, label="%s: %s" % (doc_type, doc_name))
owner_name = user_info.get(owner, {}).get('fullname')
user_name = user_info.get(frappe.session.get('user'), {}).get('fullname')
if action=='CLOSE':
diff --git a/frappe/public/js/frappe/views/ganttview.js b/frappe/public/js/frappe/views/ganttview.js
index 62f2b240fd..360806159f 100644
--- a/frappe/public/js/frappe/views/ganttview.js
+++ b/frappe/public/js/frappe/views/ganttview.js
@@ -82,7 +82,7 @@ frappe.views.Gantt = frappe.views.CalendarBase.extend({
gantt_area.gantt({
source: me.get_source(r),
navigate: "scroll",
- scale: "days",
+ scale: me.gantt_scale || "days",
minScale: "hours",
maxScale: "months",
itemsPerPage: 20,
diff --git a/frappe/utils/data.py b/frappe/utils/data.py
index 07a032908e..f69a9d222f 100644
--- a/frappe/utils/data.py
+++ b/frappe/utils/data.py
@@ -538,10 +538,16 @@ def get_url(uri=None, full_address=False):
def get_host_name():
return get_url().rsplit("//", 1)[-1]
-def get_url_to_form(doctype, name, label=None):
+def get_link_to_form(doctype, name, label=None):
if not label: label = name
- return """%(label)s""" % locals()
+ return """{1}""".format(get_url_to_form(doctype, name), label)
+
+def get_url_to_form(doctype, name):
+ return get_url(uri = "desk/#Form/{0}/{1}".format(doctype, name))
+
+def get_url_to_list(doctype):
+ return get_url(uri = "desk/#List/{0}".format(doctype))
operator_map = {
# startswith