Fixed patch, travis
This commit is contained in:
parent
ba3eca3369
commit
4c357643db
10 changed files with 52 additions and 41 deletions
|
|
@ -99,6 +99,7 @@ def get_allowed_reports():
|
|||
def get_user_page_or_report(parent):
|
||||
roles = frappe.get_roles()
|
||||
has_role = {}
|
||||
field = "title" if parent == 'Page' else "name"
|
||||
|
||||
# get pages or reports set on custom role
|
||||
for p in frappe.db.sql("""select `tabCustom Role`.{field} as name, `tabCustom Role`.modified
|
||||
|
|
@ -107,26 +108,26 @@ def get_user_page_or_report(parent):
|
|||
`tabCustom Role`.{field} is not null and `tabHas Role`.role in ({roles})
|
||||
""".format(field=parent.lower(), roles = ', '.join(['%s']*len(roles))), roles, as_dict=1):
|
||||
|
||||
has_role[p.name] = {"modified":p.modified}
|
||||
has_role[p.name] = {"modified":p.modified, "title": p.name}
|
||||
|
||||
if not has_role:
|
||||
for p in frappe.db.sql("""select distinct
|
||||
tab{parent}.name, tab{parent}.modified
|
||||
tab{parent}.name, tab{parent}.modified, tab{parent}.{field} as title
|
||||
from `tabHas Role`, `tab{parent}`
|
||||
where `tabHas Role`.role in ({roles})
|
||||
and `tabHas Role`.parent = `tab{parent}`.name
|
||||
""".format(parent=parent, roles = ', '.join(['%s']*len(roles))),
|
||||
""".format(parent=parent, field=field, roles = ', '.join(['%s']*len(roles))),
|
||||
roles, as_dict=True):
|
||||
|
||||
has_role[p.name] = {"modified":p.modified}
|
||||
has_role[p.name] = {"modified":p.modified, "title": p.title}
|
||||
|
||||
# pages or reports where role is not set are also allowed
|
||||
for p in frappe.db.sql("""select name, modified
|
||||
for p in frappe.db.sql("""select name, modified, {field} as title
|
||||
from `tab{parent}` where
|
||||
(select count(*) from `tabHas Role`
|
||||
where `tabHas Role`.parent=tab{parent}.name) = 0""".format(parent=parent), as_dict=1):
|
||||
where `tabHas Role`.parent=tab{parent}.name) = 0""".format(parent=parent, field=field), as_dict=1):
|
||||
|
||||
has_role[p.name] = {"modified":p.modified}
|
||||
has_role[p.name] = {"modified":p.modified, "title": p.title}
|
||||
|
||||
return has_role
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
"doctype": "Report",
|
||||
"is_standard": "No",
|
||||
"javascript": null,
|
||||
"json": "{\"filters\":[],\"columns\":[[\"name\",\"User\"],[\"user_type\",\"User\"],[\"first_name\",\"User\"],[\"last_name\",\"User\"],[\"last_active\",\"User\"],[\"role\",\"UserRole\"]],\"sort_by\":\"User.modified\",\"sort_order\":\"desc\",\"sort_by_next\":null,\"sort_order_next\":\"desc\"}",
|
||||
"json": "{\"filters\":[],\"columns\":[[\"name\",\"User\"],[\"user_type\",\"User\"],[\"first_name\",\"User\"],[\"last_name\",\"User\"],[\"last_active\",\"User\"],[\"role\",\"Has Role\"]],\"sort_by\":\"User.modified\",\"sort_order\":\"desc\",\"sort_by_next\":null,\"sort_order_next\":\"desc\"}",
|
||||
"modified": "2016-09-01 02:59:07.728890",
|
||||
"module": "Core",
|
||||
"name": "User Activity Report",
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ class TestCustomizeForm(unittest.TestCase):
|
|||
|
||||
d = self.get_customize_form("Event")
|
||||
self.assertEquals(d.doc_type, "Event")
|
||||
self.assertEquals(len(d.get("fields")), 28)
|
||||
self.assertEquals(len(d.get("fields")), 27)
|
||||
|
||||
d = self.get_customize_form("User")
|
||||
self.assertEquals(d.doc_type, "User")
|
||||
|
|
|
|||
|
|
@ -15,9 +15,6 @@
|
|||
"doctype": "Event",
|
||||
"starts_on": "2014-01-01",
|
||||
"subject": "_Test Event 3",
|
||||
"event_type": "Private",
|
||||
"roles": [
|
||||
{"role": "System Manager"}
|
||||
]
|
||||
"event_type": "Private"
|
||||
}
|
||||
]
|
||||
|
|
|
|||
|
|
@ -8,7 +8,10 @@ def execute():
|
|||
for data in frappe.get_all('User', fields = ["name"]):
|
||||
doc = frappe.get_doc('User', data.name)
|
||||
doc.set('roles',[])
|
||||
roles = [{'role': d.role} for d in doc.user_roles]
|
||||
doc.set('roles', roles)
|
||||
for args in frappe.get_all('UserRole', fields = ["role"],
|
||||
filters = {'parent': data.name, 'parenttype': 'User'}):
|
||||
doc.append('roles', {
|
||||
'role': args.role
|
||||
})
|
||||
for role in doc.roles:
|
||||
role.db_update()
|
||||
|
|
@ -5,17 +5,40 @@ from __future__ import unicode_literals
|
|||
import frappe
|
||||
|
||||
def execute():
|
||||
for doctype in ['Page', 'Report']:
|
||||
for data in frappe.get_all(doctype, fields = ["name"]):
|
||||
doc = frappe.get_doc(doctype, data.name)
|
||||
make_custom_roles_for_page_and_report(doc, doctype)
|
||||
frappe.reload_doc("core", 'doctype', "custom_role")
|
||||
make_custom_roles_for_page_and_report()
|
||||
|
||||
def make_custom_roles_for_page_and_report(doc, doctype):
|
||||
def make_custom_roles_for_page_and_report():
|
||||
for doctype in ['Page', 'Report']:
|
||||
for data in get_data(doctype):
|
||||
doc = frappe.get_doc(doctype, data.name)
|
||||
roles = get_roles(doctype, data, doc)
|
||||
make_custom_roles(doctype, doc.name, roles)
|
||||
|
||||
def get_data(doctype):
|
||||
fields = ["name"] if doctype == 'Page' else ["name", "ref_doctype"]
|
||||
return frappe.get_all(doctype, fields = fields)
|
||||
|
||||
def get_roles(doctype, data, doc):
|
||||
roles = []
|
||||
if doctype == 'Page':
|
||||
for d in doc.roles:
|
||||
if frappe.db.exists('Role', d.role):
|
||||
roles.append({'role': d.role})
|
||||
else:
|
||||
out = frappe.get_all('Custom DocPerm', fields='distinct role', filters=dict(parent = data.ref_doctype))
|
||||
if not out:
|
||||
out = frappe.get_all('DocPerm', fields='distinct role', filters=dict(parent = data.ref_doctype))
|
||||
for d in out:
|
||||
roles.append({'role': d.role})
|
||||
return roles
|
||||
|
||||
def make_custom_roles(doctype, name, roles):
|
||||
field = doctype.lower()
|
||||
roles = [{'role': d.role} for d in doc.roles]
|
||||
|
||||
if roles:
|
||||
custom_permission = frappe.get_doc({
|
||||
'doctype': 'Custom Role',
|
||||
field : doc.name,
|
||||
'roles': roles
|
||||
field : name,
|
||||
'roles' : roles
|
||||
}).insert()
|
||||
|
|
@ -576,7 +576,7 @@ frappe.views.ListView = frappe.ui.BaseList.extend({
|
|||
});
|
||||
}, true);
|
||||
}
|
||||
if (user_roles.includes('System Manager')) {
|
||||
if (roles.includes('System Manager')) {
|
||||
this.page.add_menu_item(__('Role Permissions Manager'), function () {
|
||||
frappe.set_route('permission-manager', {
|
||||
doctype: me.doctype
|
||||
|
|
@ -597,7 +597,7 @@ frappe.views.ListView = frappe.ui.BaseList.extend({
|
|||
frappe.add_to_desktop(me.doctype, me.doctype);
|
||||
}, true);
|
||||
|
||||
if (user_roles.includes('System Manager') && frappe.boot.developer_mode === 1) {
|
||||
if (roles.includes('System Manager') && frappe.boot.developer_mode === 1) {
|
||||
// edit doctype
|
||||
this.page.add_menu_item(__('Edit DocType'), function () {
|
||||
frappe.set_route('Form', 'DocType', me.doctype);
|
||||
|
|
@ -653,7 +653,7 @@ frappe.views.ListView = frappe.ui.BaseList.extend({
|
|||
return !is_submittable || doc.docstatus === 1 ||
|
||||
(allow_print_for_cancelled && doc.docstatus == 2) ||
|
||||
(allow_print_for_draft && doc.docstatus == 0) ||
|
||||
user_roles.includes('Administrator')
|
||||
roles.includes('Administrator')
|
||||
}).map(function (doc) {
|
||||
return doc.name
|
||||
});
|
||||
|
|
|
|||
|
|
@ -82,8 +82,6 @@ class TestDataImport(unittest.TestCase):
|
|||
content[-1][2] = "__Test Event with children"
|
||||
content[-1][3] = "Private"
|
||||
content[-1][4] = "2014-01-01 10:00:00.000000"
|
||||
content[-1][content[15].index("role")] = "System Manager"
|
||||
importer.upload(content)
|
||||
|
||||
ev = frappe.get_doc("Event", {"subject":"__Test Event with children"})
|
||||
self.assertTrue("System Manager" in [d.role for d in ev.roles])
|
||||
|
|
|
|||
|
|
@ -45,21 +45,13 @@ class TestDocument(unittest.TestCase):
|
|||
"doctype":"Event",
|
||||
"subject":"test-doc-test-event 2",
|
||||
"starts_on": "2014-01-01",
|
||||
"event_type": "Public",
|
||||
"roles": [
|
||||
{
|
||||
"role": "System Manager"
|
||||
}
|
||||
]
|
||||
"event_type": "Public"
|
||||
})
|
||||
d.insert()
|
||||
self.assertTrue(d.name.startswith("EV"))
|
||||
self.assertEquals(frappe.db.get_value("Event", d.name, "subject"),
|
||||
"test-doc-test-event 2")
|
||||
|
||||
d1 = frappe.get_doc("Event", d.name)
|
||||
self.assertEquals(d1.roles[0].role, "System Manager")
|
||||
|
||||
def test_update(self):
|
||||
d = self.test_insert()
|
||||
d.subject = "subject changed"
|
||||
|
|
|
|||
|
|
@ -107,9 +107,6 @@ class TestGlobalSearch(unittest.TestCase):
|
|||
'subject': text,
|
||||
'starts_on': frappe.utils.now_datetime()
|
||||
})
|
||||
doc.append('roles', dict(role='Administrator'))
|
||||
doc.insert()
|
||||
|
||||
frappe.db.commit()
|
||||
results = global_search.search('Administrator')
|
||||
self.assertEquals(len(results), 9)
|
||||
frappe.db.commit()
|
||||
Loading…
Add table
Reference in a new issue