[fixes] rewrite multiple assign function
This commit is contained in:
parent
56360711c2
commit
a7cd0f8c8d
3 changed files with 28 additions and 41 deletions
|
|
@ -41,34 +41,29 @@ def add(args=None):
|
|||
|
||||
else:
|
||||
from frappe.utils import nowdate
|
||||
|
||||
todo_doc = []
|
||||
|
||||
for docname in get_docname_list(args):
|
||||
if args.get("re_assign"):
|
||||
remove_from_todo_if_already_assign(args['doctype'], docname)
|
||||
|
||||
d = frappe.get_doc({
|
||||
"doctype":"ToDo",
|
||||
"owner": args['assign_to'],
|
||||
"reference_type": args['doctype'],
|
||||
"reference_name": docname,
|
||||
"description": args.get('description'),
|
||||
"priority": args.get("priority", "Medium"),
|
||||
"status": "Open",
|
||||
"date": args.get('date', nowdate()),
|
||||
"assigned_by": args.get('assigned_by', frappe.session.user),
|
||||
}).insert(ignore_permissions=True)
|
||||
if args.get("re_assign"):
|
||||
remove_from_todo_if_already_assigned(args['doctype'], args['name'])
|
||||
|
||||
todo_doc.append(d)
|
||||
# set assigned_to if field exists
|
||||
if frappe.get_meta(args['doctype']).get_field("assigned_to"):
|
||||
frappe.db.set_value(args['doctype'], docname, "assigned_to", args['assign_to'])
|
||||
d = frappe.get_doc({
|
||||
"doctype":"ToDo",
|
||||
"owner": args['assign_to'],
|
||||
"reference_type": args['doctype'],
|
||||
"reference_name": args['name'],
|
||||
"description": args.get('description'),
|
||||
"priority": args.get("priority", "Medium"),
|
||||
"status": "Open",
|
||||
"date": args.get('date', nowdate()),
|
||||
"assigned_by": args.get('assigned_by', frappe.session.user),
|
||||
}).insert(ignore_permissions=True)
|
||||
|
||||
# set assigned_to if field exists
|
||||
if frappe.get_meta(args['doctype']).get_field("assigned_to"):
|
||||
frappe.db.set_value(args['doctype'], args['name'], "assigned_to", args['assign_to'])
|
||||
|
||||
# notify
|
||||
if not args.get("no_notification"):
|
||||
for d in todo_doc:
|
||||
notify_assignment(d.assigned_by, d.owner, d.reference_type, d.reference_name, action='ASSIGN',\
|
||||
notify_assignment(d.assigned_by, d.owner, d.reference_type, d.reference_name, action='ASSIGN',\
|
||||
description=args.get("description"), notify=args.get('notify'))
|
||||
|
||||
if not args.get("bulk_assign"):
|
||||
|
|
@ -76,25 +71,15 @@ def add(args=None):
|
|||
else:
|
||||
return {}
|
||||
|
||||
def get_docname_list(args=None):
|
||||
def add_multiple(args=None):
|
||||
import json
|
||||
docname_list = []
|
||||
docname_list = son.loads(args['name'])
|
||||
|
||||
if not args:
|
||||
args = frappe.local.form_dict
|
||||
|
||||
if isinstance(args['name'], basestring):
|
||||
try:
|
||||
docname_list = json.loads(args['name'])
|
||||
except:
|
||||
docname_list = [args['name']]
|
||||
|
||||
elif isinstance(args['name'], list):
|
||||
docname_list = args['name']
|
||||
|
||||
return docname_list
|
||||
|
||||
def remove_from_todo_if_already_assign(doctype, docname):
|
||||
for docname in docname_list:
|
||||
args.update("name": docname)
|
||||
add(args)
|
||||
|
||||
def remove_from_todo_if_already_assigned(doctype, docname):
|
||||
owner = frappe.db.get_value("ToDo", {"reference_type": doctype, "reference_name": docname, "status":"Open"}, "owner")
|
||||
if owner:
|
||||
remove(doctype, docname, owner)
|
||||
|
|
|
|||
|
|
@ -91,6 +91,7 @@ frappe.ui.form.AssignTo = Class.extend({
|
|||
if(!me.dialog) {
|
||||
me.dialog = frappe.ui.to_do_dialog({
|
||||
obj: me,
|
||||
method: 'frappe.desk.form.assign_to.add'
|
||||
doctype: me.frm.doctype,
|
||||
docname: me.frm.docname,
|
||||
callback: function(r) {
|
||||
|
|
@ -170,7 +171,7 @@ frappe.ui.add_assignment = function(opts, dialog) {
|
|||
var args = opts.obj.dialog.get_values();
|
||||
if(args && assign_to) {
|
||||
return frappe.call({
|
||||
method:'frappe.desk.form.assign_to.add',
|
||||
method: opts.method,
|
||||
args: $.extend(args, {
|
||||
doctype: opts.doctype,
|
||||
name: opts.docname,
|
||||
|
|
|
|||
|
|
@ -434,6 +434,7 @@ frappe.views.DocListView = frappe.ui.Listing.extend({
|
|||
if(docname.length >= 1){
|
||||
me.dialog = frappe.ui.to_do_dialog({
|
||||
obj: me,
|
||||
method: 'frappe.desk.form.assign_to.add_multiple',
|
||||
doctype: me.doctype,
|
||||
docname: docname,
|
||||
bulk_assign: true,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue