Browse Source

fix: Only system manager is able to create tags

Currently creating tags for a document by any user other than system
manager throwing error. Fixed it by giving permissions to `ALL` role.
version-14
leela 3 years ago
parent
commit
e4ef3a40c5
2 changed files with 36 additions and 34 deletions
  1. +22
    -33
      frappe/desk/doctype/tag/tag.py
  2. +14
    -1
      frappe/desk/doctype/tag_link/tag_link.json

+ 22
- 33
frappe/desk/doctype/tag/tag.py View File

@@ -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):


+ 14
- 1
frappe/desk/doctype/tag_link/tag_link.json View File

@@ -1,4 +1,5 @@
{
"actions": [],
"creation": "2019-09-24 13:25:36.435685",
"doctype": "DocType",
"editable_grid": 1,
@@ -44,7 +45,8 @@
"read_only": 1
}
],
"modified": "2019-10-03 16:42:35.932409",
"links": [],
"modified": "2021-09-20 16:53:37.217998",
"modified_by": "Administrator",
"module": "Desk",
"name": "Tag Link",
@@ -61,6 +63,17 @@
"role": "System Manager",
"share": 1,
"write": 1
},
{
"create": 1,
"email": 1,
"export": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "All",
"share": 1,
"write": 1
}
],
"read_only": 1,


Loading…
Cancel
Save