Fixed patch, travis

This commit is contained in:
Rohit Waghchaure 2017-03-06 14:37:46 +05:30
parent ba3eca3369
commit 4c357643db
10 changed files with 52 additions and 41 deletions

View file

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

View file

@ -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",

View file

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

View file

@ -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"
}
]

View file

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

View file

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

View file

@ -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
});

View file

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

View file

@ -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"

View file

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