Merge pull request #663 from rmehta/develop
fix for todo delete and tags
This commit is contained in:
commit
727972bc7c
4 changed files with 55 additions and 55 deletions
|
|
@ -347,15 +347,7 @@ def get_meta(doctype, cached=True):
|
|||
|
||||
def delete_doc(doctype=None, name=None, force=0, ignore_doctypes=None, for_reload=False, ignore_permissions=False):
|
||||
import frappe.model.delete_doc
|
||||
|
||||
if not ignore_doctypes:
|
||||
ignore_doctypes = []
|
||||
|
||||
if isinstance(name, list):
|
||||
for n in name:
|
||||
frappe.model.delete_doc.delete_doc(doctype, n, force, ignore_doctypes, for_reload, ignore_permissions)
|
||||
else:
|
||||
frappe.model.delete_doc.delete_doc(doctype, name, force, ignore_doctypes, for_reload, ignore_permissions)
|
||||
frappe.model.delete_doc.delete_doc(doctype, name, force, ignore_doctypes, for_reload, ignore_permissions)
|
||||
|
||||
def delete_doc_if_exists(doctype, name):
|
||||
if db.exists(doctype, name):
|
||||
|
|
|
|||
|
|
@ -31,7 +31,6 @@ class ToDo(Document):
|
|||
description = self.description)
|
||||
}).insert(ignore_permissions=True)
|
||||
|
||||
|
||||
# NOTE: todo is viewable if either owner or assigned_to or System Manager in roles
|
||||
|
||||
def get_permission_query_conditions(user):
|
||||
|
|
|
|||
|
|
@ -21,49 +21,54 @@ def delete_doc(doctype=None, name=None, force=0, ignore_doctypes=None, for_reloa
|
|||
doctype = frappe.form_dict.get('dt')
|
||||
name = frappe.form_dict.get('dn')
|
||||
|
||||
if not doctype:
|
||||
frappe.msgprint(_('Nothing to delete'), raise_exception =1)
|
||||
names = name
|
||||
if isinstance(name, basestring):
|
||||
names = [name]
|
||||
|
||||
# already deleted..?
|
||||
if not frappe.db.exists(doctype, name):
|
||||
return
|
||||
for name in names or []:
|
||||
|
||||
# delete attachments
|
||||
remove_all(doctype, name)
|
||||
# already deleted..?
|
||||
if not frappe.db.exists(doctype, name):
|
||||
return
|
||||
|
||||
if doctype=="DocType":
|
||||
if for_reload:
|
||||
# delete attachments
|
||||
remove_all(doctype, name)
|
||||
|
||||
if doctype=="DocType":
|
||||
if for_reload:
|
||||
|
||||
try:
|
||||
doc = frappe.get_doc(doctype, name)
|
||||
except frappe.DoesNotExistError:
|
||||
pass
|
||||
else:
|
||||
doc.run_method("before_reload")
|
||||
|
||||
try:
|
||||
doc = frappe.get_doc(doctype, name)
|
||||
except frappe.DoesNotExistError:
|
||||
pass
|
||||
else:
|
||||
doc.run_method("before_reload")
|
||||
frappe.db.sql("delete from `tabCustom Field` where dt = %s", name)
|
||||
frappe.db.sql("delete from `tabCustom Script` where dt = %s", name)
|
||||
frappe.db.sql("delete from `tabProperty Setter` where doc_type = %s", name)
|
||||
frappe.db.sql("delete from `tabReport` where ref_doctype=%s", name)
|
||||
|
||||
delete_from_table(doctype, name, ignore_doctypes, None)
|
||||
|
||||
else:
|
||||
frappe.db.sql("delete from `tabCustom Field` where dt = %s", name)
|
||||
frappe.db.sql("delete from `tabCustom Script` where dt = %s", name)
|
||||
frappe.db.sql("delete from `tabProperty Setter` where doc_type = %s", name)
|
||||
frappe.db.sql("delete from `tabReport` where ref_doctype=%s", name)
|
||||
doc = frappe.get_doc(doctype, name)
|
||||
|
||||
delete_from_table(doctype, name, ignore_doctypes, None)
|
||||
if not for_reload:
|
||||
check_permission_and_not_submitted(doc, ignore_permissions)
|
||||
doc.run_method("on_trash")
|
||||
|
||||
else:
|
||||
doc = frappe.get_doc(doctype, name)
|
||||
delete_linked_todos(doc)
|
||||
# check if links exist
|
||||
if not force:
|
||||
check_if_doc_is_linked(doc)
|
||||
check_if_doc_is_dynamically_linked(doc)
|
||||
|
||||
if not for_reload:
|
||||
check_permission_and_not_submitted(doc, ignore_permissions)
|
||||
doc.run_method("on_trash")
|
||||
# check if links exist
|
||||
if not force:
|
||||
check_if_doc_is_linked(doc)
|
||||
check_if_doc_is_dynamically_linked(doc)
|
||||
delete_from_table(doctype, name, ignore_doctypes, doc)
|
||||
|
||||
delete_from_table(doctype, name, ignore_doctypes, doc)
|
||||
|
||||
# delete user_permissions
|
||||
frappe.defaults.clear_default(parenttype="User Permission", key=doctype, value=name)
|
||||
# delete user_permissions
|
||||
frappe.defaults.clear_default(parenttype="User Permission", key=doctype, value=name)
|
||||
|
||||
return 'okay'
|
||||
|
||||
|
|
@ -135,3 +140,7 @@ def check_if_doc_is_dynamically_linked(doc):
|
|||
{options}=%s and {fieldname}=%s""".format(**df), (doc.doctype, doc.name)):
|
||||
frappe.throw(_("Cannot delete or cancel because {0} {1} is linked with {2} {3}").format(doc.doctype,
|
||||
doc.name, df.parent, name), frappe.LinkExistsError)
|
||||
|
||||
def delete_linked_todos(doc):
|
||||
delete_doc("ToDo", frappe.db.sql_list("""select name from `tabToDo`
|
||||
where reference_type=%s and reference_name=%s""", (doc.doctype, doc.name)))
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
|
||||
# MIT License. See license.txt
|
||||
# MIT License. See license.txt
|
||||
|
||||
from __future__ import unicode_literals
|
||||
"""
|
||||
|
|
@ -33,17 +33,17 @@ def check_user_tags(dt):
|
|||
except Exception, e:
|
||||
if e.args[0] == 1054:
|
||||
DocTags(dt).setup()
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def add_tag():
|
||||
"adds a new tag to a record, and creates the Tag master"
|
||||
|
||||
|
||||
f = frappe.local.form_dict
|
||||
tag, color = f.get('tag'), f.get('color')
|
||||
dt, dn = f.get('dt'), f.get('dn')
|
||||
|
||||
|
||||
DocTags(dt).add(dn, tag)
|
||||
|
||||
|
||||
return tag
|
||||
|
||||
@frappe.whitelist()
|
||||
|
|
@ -51,23 +51,23 @@ def remove_tag():
|
|||
"removes tag from the record"
|
||||
f = frappe.local.form_dict
|
||||
tag, dt, dn = f.get('tag'), f.get('dt'), f.get('dn')
|
||||
|
||||
|
||||
DocTags(dt).remove(dn, tag)
|
||||
|
||||
|
||||
|
||||
|
||||
class DocTags:
|
||||
"""Tags for a particular doctype"""
|
||||
def __init__(self, dt):
|
||||
self.dt = dt
|
||||
|
||||
|
||||
def get_tag_fields(self):
|
||||
"""returns tag_fields property"""
|
||||
return frappe.db.get_value('DocType', self.dt, 'tag_fields')
|
||||
|
||||
|
||||
def get_tags(self, dn):
|
||||
"""returns tag for a particular item"""
|
||||
return frappe.db.get_value(self.dt, dn, '_user_tags', ignore=1) or ''
|
||||
return (frappe.db.get_value(self.dt, dn, '_user_tags', ignore=1) or '').strip()
|
||||
|
||||
def add(self, dn, tag):
|
||||
"""add a new user tag"""
|
||||
|
|
@ -97,15 +97,15 @@ class DocTags:
|
|||
frappe.db.sql("update `tab%s` set _user_tags=%s where name=%s" % \
|
||||
(self.dt,'%s','%s'), (tags , dn))
|
||||
except Exception, e:
|
||||
if e.args[0]==1054:
|
||||
if e.args[0]==1054:
|
||||
if not tags:
|
||||
# no tags, nothing to do
|
||||
return
|
||||
|
||||
|
||||
self.setup()
|
||||
self.update(dn, tl)
|
||||
else: raise
|
||||
|
||||
|
||||
def setup(self):
|
||||
"""adds the _user_tags column if not exists"""
|
||||
from frappe.model.db_schema import add_column
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue