Procházet zdrojové kódy

Merge pull request #2898 from KanchanChauhan/sidebar-reports-fixed

Sidebar reports fixed
version-14
rohitwaghchaure před 8 roky
committed by GitHub
rodič
revize
231658366b
5 změnil soubory, kde provedl 62 přidání a 12 odebrání
  1. +18
    -7
      frappe/boot.py
  2. +32
    -2
      frappe/core/doctype/custom_role/custom_role.json
  3. +1
    -1
      frappe/patches.txt
  4. +9
    -0
      frappe/patches/v8_0/set_user_permission_for_page_and_report.py
  5. +2
    -2
      frappe/public/js/frappe/list/list_sidebar.js

+ 18
- 7
frappe/boot.py Zobrazit soubor

@@ -99,35 +99,46 @@ def get_allowed_reports():
def get_user_page_or_report(parent):
roles = frappe.get_roles()
has_role = {}
field = "title" if parent == 'Page' else "name"
column = get_column(parent)
# get pages or reports set on custom role
for p in frappe.db.sql("""select `tabCustom Role`.{field} as name, `tabCustom Role`.modified
for p in frappe.db.sql("""select `tabCustom Role`.{field} as name, `tabCustom Role`.modified, `tabCustom Role`.ref_doctype
from `tabCustom Role`, `tabHas Role` where
`tabHas Role`.parent = `tabCustom Role`.name and
`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, "title": p.name}
has_role[p.name] = {"modified":p.modified, "title": p.name, "ref_doctype": p.ref_doctype}

for p in frappe.db.sql("""select distinct
tab{parent}.name, tab{parent}.modified, tab{parent}.{field} as title
tab{parent}.name, tab{parent}.modified, {column}
from `tabHas Role`, `tab{parent}`
where `tabHas Role`.role in ({roles})
and `tabHas Role`.parent = `tab{parent}`.name
""".format(parent=parent, field=field, roles = ', '.join(['%s']*len(roles))), roles, as_dict=True):
""".format(parent=parent, column=column, roles = ', '.join(['%s']*len(roles))), roles, as_dict=True):
if p.name not in has_role:
has_role[p.name] = {"modified":p.modified, "title": p.title}
if parent == "Report":
has_role[p.name].update({'ref_doctype': p.ref_doctype})

# pages or reports where role is not set are also allowed
for p in frappe.db.sql("""select name, modified, {field} as title
for p in frappe.db.sql("""select `tab{parent}`.name, `tab{parent}`.modified, {column}
from `tab{parent}` where
(select count(*) from `tabHas Role`
where `tabHas Role`.parent=tab{parent}.name) = 0""".format(parent=parent, field=field), as_dict=1):
where `tabHas Role`.parent=tab{parent}.name) = 0""".format(parent=parent, column=column), as_dict=1):
if p.name not in has_role:
has_role[p.name] = {"modified":p.modified, "title": p.title}
if parent == "Report":
has_role[p.name].update({'ref_doctype': p.ref_doctype})

return has_role
def get_column(doctype):
column = "`tabPage`.title as title"
if doctype == "Report":
column = "`tabReport`.name as name, `tabReport`.ref_doctype"

return column

def load_translations(bootinfo):
messages = frappe.get_lang_dict("boot")


+ 32
- 2
frappe/core/doctype/custom_role/custom_role.json Zobrazit soubor

@@ -1,5 +1,6 @@
{
"allow_copy": 0,
"allow_guest_to_view": 0,
"allow_import": 1,
"allow_rename": 0,
"autoname": "hash",
@@ -159,19 +160,48 @@
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "ref_doctype",
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Reference Doctype",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
}
],
"has_web_view": 0,
"hide_heading": 0,
"hide_toolbar": 0,
"idx": 0,
"image_view": 0,
"in_create": 0,
"in_dialog": 0,
"is_submittable": 0,
"issingle": 0,
"istable": 0,
"max_attachments": 0,
"modified": "2017-02-20 13:59:35.882885",
"modified": "2017-03-20 12:56:09.164494",
"modified_by": "Administrator",
"module": "Core",
"name": "Custom Role",


+ 1
- 1
frappe/patches.txt Zobrazit soubor

@@ -17,7 +17,7 @@ execute:frappe.reload_doc('core', 'doctype', 'custom_docperm')
execute:frappe.reload_doc('core', 'doctype', 'deleted_document')
frappe.patches.v8_0.rename_page_role_to_has_role #2017-03-16
frappe.patches.v7_2.setup_custom_perms #2017-01-19
frappe.patches.v8_0.set_user_permission_for_page_and_report
frappe.patches.v8_0.set_user_permission_for_page_and_report #2017-03-20
execute:frappe.reload_doc('core', 'doctype', 'role')
execute:frappe.reload_doc('core', 'doctype', 'user')
execute:frappe.reload_doc('custom', 'doctype', 'custom_field') #2015-10-19


+ 9
- 0
frappe/patches/v8_0/set_user_permission_for_page_and_report.py Zobrazit soubor

@@ -9,6 +9,15 @@ def execute():
frappe.reload_doc("core", 'doctype', "custom_role")
set_user_permission_for_page_and_report()

update_ref_doctype_in_custom_role()

def update_ref_doctype_in_custom_role():
frappe.reload_doc("core", 'doctype', "custom_role")
frappe.db.sql("""update `tabCustom Role`
set
ref_doctype = (select ref_doctype from tabReport where name = `tabCustom Role`.report)
where report is not null""")

def set_user_permission_for_page_and_report():
make_custom_roles_for_page_and_report()



+ 2
- 2
frappe/public/js/frappe/list/list_sidebar.js Zobrazit soubor

@@ -90,7 +90,7 @@ frappe.views.ListSidebar = Class.extend({
if(!r.ref_doctype || r.ref_doctype==me.doctype) {
var report_type = r.report_type==='Report Builder'
? 'Report/' + r.ref_doctype : 'query-report';
var route = r.route || report_type + '/' + r.name;
var route = r.route || report_type + '/' + r.title;

if(added.indexOf(route)===-1) {
// don't repeat
@@ -102,7 +102,7 @@ frappe.views.ListSidebar = Class.extend({
}

$('<li><a href="#'+ route + '">'
+ __(r.name)+'</a></li>').appendTo(dropdown);
+ __(r.title)+'</a></li>').appendTo(dropdown);
}
}
});


Načítá se…
Zrušit
Uložit