|
|
@@ -128,46 +128,35 @@ def delete_tags_for_document(doc): |
|
|
|
}) |
|
|
|
|
|
|
|
def update_tags(doc, tags): |
|
|
|
""" |
|
|
|
Adds tags for documents |
|
|
|
:param doc: Document to be added to global tags |
|
|
|
""" |
|
|
|
"""Adds tags for documents |
|
|
|
|
|
|
|
:param doc: Document to be added to global tags |
|
|
|
""" |
|
|
|
new_tags = {tag.strip() for tag in tags.split(",") if tag} |
|
|
|
|
|
|
|
for tag in new_tags: |
|
|
|
if not frappe.db.exists("Tag Link", {"parenttype": doc.doctype, "parent": doc.name, "tag": tag}): |
|
|
|
frappe.get_doc({ |
|
|
|
"doctype": "Tag Link", |
|
|
|
"document_type": doc.doctype, |
|
|
|
"document_name": doc.name, |
|
|
|
"parenttype": doc.doctype, |
|
|
|
"parent": doc.name, |
|
|
|
"title": doc.get_title() or '', |
|
|
|
"tag": tag |
|
|
|
}).insert(ignore_permissions=True) |
|
|
|
|
|
|
|
existing_tags = [tag.tag for tag in frappe.get_list("Tag Link", filters={ |
|
|
|
"document_type": doc.doctype, |
|
|
|
"document_name": doc.name |
|
|
|
}, fields=["tag"])] |
|
|
|
|
|
|
|
deleted_tags = get_deleted_tags(new_tags, existing_tags) |
|
|
|
|
|
|
|
if deleted_tags: |
|
|
|
for tag in deleted_tags: |
|
|
|
delete_tag_for_document(doc.doctype, doc.name, tag) |
|
|
|
|
|
|
|
def get_deleted_tags(new_tags, existing_tags): |
|
|
|
|
|
|
|
return list(set(existing_tags) - set(new_tags)) |
|
|
|
|
|
|
|
def delete_tag_for_document(dt, dn, tag): |
|
|
|
frappe.db.delete("Tag Link", { |
|
|
|
"document_type": dt, |
|
|
|
"document_name": dn, |
|
|
|
"tag": tag |
|
|
|
}) |
|
|
|
added_tags = set(new_tags) - set(existing_tags) |
|
|
|
for tag in added_tags: |
|
|
|
frappe.get_doc({ |
|
|
|
"doctype": "Tag Link", |
|
|
|
"document_type": doc.doctype, |
|
|
|
"document_name": doc.name, |
|
|
|
"parenttype": doc.doctype, |
|
|
|
"parent": doc.name, |
|
|
|
"title": doc.get_title() or '', |
|
|
|
"tag": tag |
|
|
|
}).insert(ignore_permissions=True) |
|
|
|
|
|
|
|
deleted_tags = list(set(existing_tags) - set(new_tags)) |
|
|
|
for tag in deleted_tags: |
|
|
|
frappe.db.delete("Tag Link", { |
|
|
|
"document_type": doc.doctype, |
|
|
|
"document_name": doc.name, |
|
|
|
"tag": tag |
|
|
|
}) |
|
|
|
|
|
|
|
@frappe.whitelist() |
|
|
|
def get_documents_for_tag(tag): |
|
|
|