mirror of
https://github.com/frappe/erpnext.git
synced 2026-06-04 04:39:11 +00:00
Show Activity entries based on permissions. Completely fixes #1481
This commit is contained in:
@@ -1,61 +1,71 @@
|
|||||||
{
|
{
|
||||||
"autoname": "hash",
|
"autoname": "hash",
|
||||||
"creation": "2012-07-03 13:29:42.000000",
|
"creation": "2012-07-03 13:29:42",
|
||||||
"docstatus": 0,
|
"docstatus": 0,
|
||||||
"doctype": "DocType",
|
"doctype": "DocType",
|
||||||
"fields": [
|
"fields": [
|
||||||
{
|
{
|
||||||
"fieldname": "feed_type",
|
"fieldname": "feed_type",
|
||||||
"fieldtype": "Select",
|
"fieldtype": "Select",
|
||||||
"label": "Feed Type",
|
"in_list_view": 1,
|
||||||
|
"label": "Feed Type",
|
||||||
"permlevel": 0
|
"permlevel": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fieldname": "doc_type",
|
"fieldname": "doc_type",
|
||||||
"fieldtype": "Data",
|
"fieldtype": "Data",
|
||||||
"label": "Doc Type",
|
"in_list_view": 1,
|
||||||
|
"label": "Doc Type",
|
||||||
"permlevel": 0
|
"permlevel": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fieldname": "doc_name",
|
"fieldname": "doc_name",
|
||||||
"fieldtype": "Data",
|
"fieldtype": "Data",
|
||||||
"label": "Doc Name",
|
"in_list_view": 1,
|
||||||
|
"label": "Doc Name",
|
||||||
"permlevel": 0
|
"permlevel": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fieldname": "subject",
|
"fieldname": "subject",
|
||||||
"fieldtype": "Data",
|
"fieldtype": "Data",
|
||||||
"label": "Subject",
|
"in_list_view": 1,
|
||||||
|
"label": "Subject",
|
||||||
"permlevel": 0
|
"permlevel": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fieldname": "color",
|
"fieldname": "color",
|
||||||
"fieldtype": "Data",
|
"fieldtype": "Data",
|
||||||
"label": "Color",
|
"in_list_view": 1,
|
||||||
|
"label": "Color",
|
||||||
"permlevel": 0
|
"permlevel": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fieldname": "full_name",
|
"fieldname": "full_name",
|
||||||
"fieldtype": "Data",
|
"fieldtype": "Data",
|
||||||
"label": "Full Name",
|
"label": "Full Name",
|
||||||
"permlevel": 0
|
"permlevel": 0
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"icon": "icon-rss",
|
"icon": "icon-rss",
|
||||||
"idx": 1,
|
"idx": 1,
|
||||||
"modified": "2013-12-20 19:24:05.000000",
|
"modified": "2014-05-02 08:27:23.936733",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Home",
|
"module": "Home",
|
||||||
"name": "Feed",
|
"name": "Feed",
|
||||||
"owner": "Administrator",
|
"owner": "Administrator",
|
||||||
"permissions": [
|
"permissions": [
|
||||||
{
|
{
|
||||||
"email": 1,
|
"email": 1,
|
||||||
"permlevel": 0,
|
"permlevel": 0,
|
||||||
"print": 1,
|
"print": 1,
|
||||||
"read": 1,
|
"read": 1,
|
||||||
"report": 1,
|
"report": 1,
|
||||||
"role": "System Manager"
|
"role": "System Manager"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"permlevel": 0,
|
||||||
|
"read": 1,
|
||||||
|
"role": "All"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -3,15 +3,42 @@
|
|||||||
|
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
import frappe
|
import frappe
|
||||||
|
import frappe.defaults
|
||||||
from frappe.model.document import Document
|
from frappe.model.document import Document
|
||||||
|
|
||||||
class Feed(Document):
|
class Feed(Document):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def on_doctype_update():
|
def on_doctype_update():
|
||||||
if not frappe.db.sql("""show index from `tabFeed`
|
if not frappe.db.sql("""show index from `tabFeed`
|
||||||
where Key_name="feed_doctype_docname_index" """):
|
where Key_name="feed_doctype_docname_index" """):
|
||||||
frappe.db.commit()
|
frappe.db.commit()
|
||||||
frappe.db.sql("""alter table `tabFeed`
|
frappe.db.sql("""alter table `tabFeed`
|
||||||
add index feed_doctype_docname_index(doc_type, doc_name)""")
|
add index feed_doctype_docname_index(doc_type, doc_name)""")
|
||||||
|
|
||||||
|
def get_permission_query_conditions():
|
||||||
|
restrictions = frappe.defaults.get_restrictions()
|
||||||
|
can_read = frappe.user.get_can_read()
|
||||||
|
|
||||||
|
can_read_doctypes = ['"{}"'.format(doctype) for doctype in
|
||||||
|
list(set(can_read) - set(restrictions.keys()))]
|
||||||
|
|
||||||
|
if not can_read_doctypes:
|
||||||
|
return ""
|
||||||
|
|
||||||
|
conditions = ["tabFeed.doc_type in ({})".format(", ".join(can_read_doctypes))]
|
||||||
|
|
||||||
|
if restrictions:
|
||||||
|
can_read_docs = []
|
||||||
|
for doctype, names in restrictions.items():
|
||||||
|
for n in names:
|
||||||
|
can_read_docs.append('"{}|{}"'.format(doctype, n))
|
||||||
|
|
||||||
|
if can_read_docs:
|
||||||
|
conditions.append("concat_ws('|', tabFeed.doc_type, tabFeed.doc_name) in ({})".format(
|
||||||
|
", ".join(can_read_docs)))
|
||||||
|
|
||||||
|
return "(" + " or ".join(conditions) + ")"
|
||||||
|
|
||||||
|
def has_permission(doc):
|
||||||
|
return frappe.has_permission(doc.doc_type, "read", doc.doc_name)
|
||||||
|
|||||||
@@ -25,6 +25,15 @@ before_tests = "erpnext.setup.utils.before_tests"
|
|||||||
|
|
||||||
standard_queries = "Customer:erpnext.selling.doctype.customer.customer.get_customer_list"
|
standard_queries = "Customer:erpnext.selling.doctype.customer.customer.get_customer_list"
|
||||||
|
|
||||||
|
permission_query_conditions = {
|
||||||
|
"Feed": "erpnext.home.doctype.feed.feed.get_permission_query_conditions",
|
||||||
|
}
|
||||||
|
|
||||||
|
has_permission = {
|
||||||
|
"Feed": "erpnext.home.doctype.feed.feed.has_permission",
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
doc_events = {
|
doc_events = {
|
||||||
"*": {
|
"*": {
|
||||||
"on_update": "erpnext.home.update_feed",
|
"on_update": "erpnext.home.update_feed",
|
||||||
|
|||||||
Reference in New Issue
Block a user