From f7b26b3dae31fd45cce2a370c2931879be75883d Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Tue, 2 Oct 2012 12:08:32 +0530 Subject: [PATCH] permission fixes --- .../leave_allocation/leave_allocation.txt | 133 ++++++------ .../leave_application/leave_application.txt | 190 ++++++++---------- erpnext/patches/october_2012/__init__.py | 0 .../patches/october_2012/update_permission.py | 39 ++++ erpnext/patches/patch_list.py | 4 + .../setup/doctype/price_list/price_list.js | 42 ++-- .../sales_and_purchase_return_tool.txt | 158 ++------------- 7 files changed, 234 insertions(+), 332 deletions(-) create mode 100644 erpnext/patches/october_2012/__init__.py create mode 100644 erpnext/patches/october_2012/update_permission.py diff --git a/erpnext/hr/doctype/leave_allocation/leave_allocation.txt b/erpnext/hr/doctype/leave_allocation/leave_allocation.txt index 9045221092..287dc80b28 100644 --- a/erpnext/hr/doctype/leave_allocation/leave_allocation.txt +++ b/erpnext/hr/doctype/leave_allocation/leave_allocation.txt @@ -3,11 +3,11 @@ # These values are common in all dictionaries { - 'creation': '2012-03-27 14:35:58', - 'docstatus': 0, - 'modified': '2012-03-27 14:45:49', - 'modified_by': u'Administrator', - 'owner': u'Administrator' + u'creation': '2012-05-15 12:14:45', + u'docstatus': 0, + u'modified': '2012-10-02 11:21:31', + u'modified_by': u'Administrator', + u'owner': u'Administrator' }, # These values are common for all DocType @@ -16,21 +16,21 @@ 'autoname': u'LAL/.#####', 'colour': u'White:FFF', 'default_print_format': u'Standard', - 'doctype': 'DocType', + u'doctype': u'DocType', 'is_submittable': 1, 'module': u'HR', - 'name': '__common__', + u'name': u'__common__', 'search_fields': u'employee,employee_name,leave_type,total_leaves_allocated,fiscal_year', 'section_style': u'Simple', 'server_code_error': u' ', 'show_in_menu': 0, - 'version': 1560 + 'version': 1 }, # These values are common for all DocField { - 'doctype': u'DocField', - 'name': '__common__', + u'doctype': u'DocField', + u'name': u'__common__', 'parent': u'Leave Allocation', 'parentfield': u'fields', 'parenttype': u'DocType' @@ -38,8 +38,8 @@ # These values are common for all DocPerm { - 'doctype': u'DocPerm', - 'name': '__common__', + u'doctype': u'DocPerm', + u'name': u'__common__', 'parent': u'Leave Allocation', 'parentfield': u'permissions', 'parenttype': u'DocType', @@ -48,58 +48,13 @@ # DocType, Leave Allocation { - 'doctype': 'DocType', - 'name': u'Leave Allocation' - }, - - # DocPerm - { - 'amend': 1, - 'cancel': 1, - 'create': 1, - 'doctype': u'DocPerm', - 'match': u'owner', - 'permlevel': 0, - 'role': u'HR User', - 'submit': 1, - 'write': 1 - }, - - # DocPerm - { - 'amend': 0, - 'cancel': 0, - 'create': 0, - 'doctype': u'DocPerm', - 'match': u'owner', - 'permlevel': 0, - 'role': u'HR User', - 'submit': 0, - 'write': 0 - }, - - # DocPerm - { - 'amend': 1, - 'cancel': 1, - 'create': 1, - 'doctype': u'DocPerm', - 'permlevel': 0, - 'role': u'HR Manager', - 'submit': 1, - 'write': 1 - }, - - # DocPerm - { - 'doctype': u'DocPerm', - 'permlevel': 1, - 'role': u'HR Manager' + u'doctype': u'DocType', + u'name': u'Leave Allocation' }, # DocField { - 'doctype': u'DocField', + u'doctype': u'DocField', 'fieldname': u'column_break0', 'fieldtype': u'Column Break', 'permlevel': 0, @@ -109,7 +64,7 @@ # DocField { 'colour': u'White:FFF', - 'doctype': u'DocField', + u'doctype': u'DocField', 'fieldname': u'employee', 'fieldtype': u'Link', 'in_filter': 1, @@ -125,7 +80,7 @@ # DocField { - 'doctype': u'DocField', + u'doctype': u'DocField', 'fieldname': u'employee_name', 'fieldtype': u'Data', 'in_filter': 1, @@ -137,7 +92,7 @@ # DocField { 'colour': u'White:FFF', - 'doctype': u'DocField', + u'doctype': u'DocField', 'fieldname': u'leave_type', 'fieldtype': u'Select', 'in_filter': 1, @@ -155,7 +110,7 @@ { 'colour': u'White:FFF', 'default': u'Today', - 'doctype': u'DocField', + u'doctype': u'DocField', 'fieldname': u'posting_date', 'fieldtype': u'Date', 'hidden': 0, @@ -171,7 +126,7 @@ # DocField { 'colour': u'White:FFF', - 'doctype': u'DocField', + u'doctype': u'DocField', 'fieldname': u'fiscal_year', 'fieldtype': u'Select', 'in_filter': 1, @@ -188,7 +143,7 @@ # DocField { 'colour': u'White:FFF', - 'doctype': u'DocField', + u'doctype': u'DocField', 'fieldname': u'description', 'fieldtype': u'Small Text', 'hidden': 0, @@ -201,7 +156,7 @@ # DocField { - 'doctype': u'DocField', + u'doctype': u'DocField', 'fieldname': u'column_break1', 'fieldtype': u'Column Break', 'permlevel': 0, @@ -210,7 +165,7 @@ # DocField { - 'doctype': u'DocField', + u'doctype': u'DocField', 'fieldname': u'carry_forward', 'fieldtype': u'Check', 'label': u'Carry Forward', @@ -220,7 +175,7 @@ # DocField { - 'doctype': u'DocField', + u'doctype': u'DocField', 'fieldname': u'carry_forwarded_leaves', 'fieldtype': u'Currency', 'label': u'Carry Forwarded Leaves', @@ -230,7 +185,7 @@ # DocField { - 'doctype': u'DocField', + u'doctype': u'DocField', 'fieldname': u'new_leaves_allocated', 'fieldtype': u'Currency', 'label': u'New Leaves Allocated', @@ -240,7 +195,7 @@ # DocField { - 'doctype': u'DocField', + u'doctype': u'DocField', 'fieldname': u'total_leaves_allocated', 'fieldtype': u'Currency', 'label': u'Total Leaves Allocated', @@ -250,7 +205,7 @@ # DocField { - 'doctype': u'DocField', + u'doctype': u'DocField', 'fieldname': u'amended_from', 'fieldtype': u'Data', 'hidden': 0, @@ -265,7 +220,7 @@ # DocField { 'description': u'The date at which current entry is corrected in the system.', - 'doctype': u'DocField', + u'doctype': u'DocField', 'fieldname': u'amendment_date', 'fieldtype': u'Date', 'hidden': 0, @@ -275,5 +230,37 @@ 'oldfieldtype': u'Date', 'permlevel': 1, 'print_hide': 1 + }, + + # DocPerm + { + 'amend': 1, + 'cancel': 1, + 'create': 1, + u'doctype': u'DocPerm', + 'match': u'owner', + 'permlevel': 0, + 'role': u'HR User', + 'submit': 1, + 'write': 1 + }, + + # DocPerm + { + 'amend': 1, + 'cancel': 1, + 'create': 1, + u'doctype': u'DocPerm', + 'permlevel': 0, + 'role': u'HR Manager', + 'submit': 1, + 'write': 1 + }, + + # DocPerm + { + u'doctype': u'DocPerm', + 'permlevel': 1, + 'role': u'All' } ] \ No newline at end of file diff --git a/erpnext/hr/doctype/leave_application/leave_application.txt b/erpnext/hr/doctype/leave_application/leave_application.txt index b2ce2ab338..c87c746b2f 100644 --- a/erpnext/hr/doctype/leave_application/leave_application.txt +++ b/erpnext/hr/doctype/leave_application/leave_application.txt @@ -3,11 +3,11 @@ # These values are common in all dictionaries { - 'creation': '2012-03-27 14:35:58', - 'docstatus': 0, - 'modified': '2012-03-27 14:45:49', - 'modified_by': u'Administrator', - 'owner': u'Administrator' + u'creation': '2012-05-15 12:14:45', + u'docstatus': 0, + u'modified': '2012-10-02 11:19:44', + u'modified_by': u'Administrator', + u'owner': u'Administrator' }, # These values are common for all DocType @@ -15,23 +15,23 @@ '_last_update': u'1310019491', 'autoname': u'LAP/.#####', 'colour': u'White:FFF', - 'doctype': 'DocType', + u'doctype': u'DocType', 'document_type': u'Transaction', 'is_submittable': 1, 'module': u'HR', - 'name': '__common__', + u'name': u'__common__', 'search_fields': u'employee,employee_name,leave_type,from_date,to_date,total_leave_days,fiscal_year', 'section_style': u'Simple', 'show_in_menu': 0, 'subject': u'From %(employee_name)s, %(designation)s', 'tag_fields': u'leave_type', - 'version': 17 + 'version': 1 }, # These values are common for all DocField { - 'doctype': u'DocField', - 'name': '__common__', + u'doctype': u'DocField', + u'name': u'__common__', 'parent': u'Leave Application', 'parentfield': u'fields', 'parenttype': u'DocType' @@ -39,8 +39,8 @@ # These values are common for all DocPerm { - 'doctype': u'DocPerm', - 'name': '__common__', + u'doctype': u'DocPerm', + u'name': u'__common__', 'parent': u'Leave Application', 'parentfield': u'permissions', 'parenttype': u'DocType', @@ -49,85 +49,13 @@ # DocType, Leave Application { - 'doctype': 'DocType', - 'name': u'Leave Application' - }, - - # DocPerm - { - 'amend': 1, - 'cancel': 1, - 'create': 1, - 'doctype': u'DocPerm', - 'match': u'owner', - 'permlevel': 0, - 'submit': 1, - 'write': 1 - }, - - # DocPerm - { - 'amend': 0, - 'cancel': 0, - 'create': 0, - 'doctype': u'DocPerm', - 'match': u'owner', - 'permlevel': 0, - 'submit': 0, - 'write': 0 - }, - - # DocPerm - { - 'amend': 1, - 'cancel': 1, - 'create': 1, - 'doctype': u'DocPerm', - 'permlevel': 0, - 'role': u'HR User', - 'submit': 1, - 'write': 1 - }, - - # DocPerm - { - 'amend': 1, - 'cancel': 1, - 'create': 1, - 'doctype': u'DocPerm', - 'permlevel': 0, - 'role': u'HR Manager', - 'submit': 1, - 'write': 1 - }, - - # DocPerm - { - 'amend': 0, - 'cancel': 0, - 'create': 0, - 'doctype': u'DocPerm', - 'permlevel': 1, - 'role': u'HR User', - 'submit': 0, - 'write': 0 - }, - - # DocPerm - { - 'amend': 0, - 'cancel': 0, - 'create': 0, - 'doctype': u'DocPerm', - 'permlevel': 1, - 'role': u'HR Manager', - 'submit': 0, - 'write': 0 + u'doctype': u'DocType', + u'name': u'Leave Application' }, # DocField { - 'doctype': u'DocField', + u'doctype': u'DocField', 'fieldname': u'column_break0', 'fieldtype': u'Column Break', 'permlevel': 0, @@ -136,7 +64,7 @@ # DocField { - 'doctype': u'DocField', + u'doctype': u'DocField', 'fieldname': u'employee', 'fieldtype': u'Link', 'in_filter': 1, @@ -149,7 +77,7 @@ # DocField { - 'doctype': u'DocField', + u'doctype': u'DocField', 'fieldname': u'employee_name', 'fieldtype': u'Data', 'in_filter': 1, @@ -160,7 +88,7 @@ # DocField { - 'doctype': u'DocField', + u'doctype': u'DocField', 'fieldname': u'leave_type', 'fieldtype': u'Select', 'in_filter': 1, @@ -173,7 +101,7 @@ # DocField { - 'doctype': u'DocField', + u'doctype': u'DocField', 'fieldname': u'leave_balance', 'fieldtype': u'Currency', 'label': u'Leave Balance', @@ -184,7 +112,7 @@ { 'colour': u'White:FFF', 'default': u'Today', - 'doctype': u'DocField', + u'doctype': u'DocField', 'fieldname': u'posting_date', 'fieldtype': u'Date', 'label': u'Posting Date', @@ -195,7 +123,7 @@ # DocField { - 'doctype': u'DocField', + u'doctype': u'DocField', 'fieldname': u'fiscal_year', 'fieldtype': u'Select', 'in_filter': 1, @@ -208,7 +136,7 @@ # DocField { - 'doctype': u'DocField', + u'doctype': u'DocField', 'fieldname': u'column_break1', 'fieldtype': u'Column Break', 'permlevel': 0, @@ -218,7 +146,7 @@ # DocField { 'colour': u'White:FFF', - 'doctype': u'DocField', + u'doctype': u'DocField', 'fieldname': u'half_day', 'fieldtype': u'Check', 'label': u'Half Day', @@ -229,7 +157,7 @@ # DocField { 'colour': u'White:FFF', - 'doctype': u'DocField', + u'doctype': u'DocField', 'fieldname': u'from_date', 'fieldtype': u'Date', 'label': u'From Date', @@ -241,7 +169,7 @@ # DocField { 'colour': u'White:FFF', - 'doctype': u'DocField', + u'doctype': u'DocField', 'fieldname': u'to_date', 'fieldtype': u'Date', 'label': u'To Date', @@ -252,7 +180,7 @@ # DocField { - 'doctype': u'DocField', + u'doctype': u'DocField', 'fieldname': u'total_leave_days', 'fieldtype': u'Currency', 'label': u'Total Leave Days', @@ -261,7 +189,7 @@ # DocField { - 'doctype': u'DocField', + u'doctype': u'DocField', 'fieldname': u'description', 'fieldtype': u'Small Text', 'label': u'Description', @@ -271,7 +199,7 @@ # DocField { - 'doctype': u'DocField', + u'doctype': u'DocField', 'fieldname': u'letter_head', 'fieldtype': u'Link', 'label': u'Letter Head', @@ -281,7 +209,7 @@ # DocField { - 'doctype': u'DocField', + u'doctype': u'DocField', 'fieldname': u'amended_from', 'fieldtype': u'Data', 'label': u'Amended From', @@ -290,10 +218,68 @@ # DocField { - 'doctype': u'DocField', + u'doctype': u'DocField', 'fieldname': u'amendment_date', 'fieldtype': u'Date', 'label': u'Amendment Date', 'permlevel': 1 + }, + + # DocPerm + { + 'amend': 0, + 'cancel': 0, + 'create': 0, + u'doctype': u'DocPerm', + 'match': u'owner', + 'permlevel': 0, + 'role': u'Employee', + 'submit': 0, + 'write': 0 + }, + + # DocPerm + { + 'amend': 1, + 'cancel': 1, + 'create': 1, + u'doctype': u'DocPerm', + 'permlevel': 0, + 'role': u'HR User', + 'submit': 1, + 'write': 1 + }, + + # DocPerm + { + 'amend': 1, + 'cancel': 1, + 'create': 1, + u'doctype': u'DocPerm', + 'permlevel': 0, + 'role': u'HR Manager', + 'submit': 1, + 'write': 1 + }, + + # DocPerm + { + u'doctype': u'DocPerm', + 'permlevel': 1, + 'role': u'HR User' + }, + + # DocPerm + { + u'doctype': u'DocPerm', + 'permlevel': 1, + 'role': u'HR Manager' + }, + + # DocPerm + { + u'doctype': u'DocPerm', + 'permlevel': 1, + 'role': u'Employee' } ] \ No newline at end of file diff --git a/erpnext/patches/october_2012/__init__.py b/erpnext/patches/october_2012/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/erpnext/patches/october_2012/update_permission.py b/erpnext/patches/october_2012/update_permission.py new file mode 100644 index 0000000000..5686a8ebc5 --- /dev/null +++ b/erpnext/patches/october_2012/update_permission.py @@ -0,0 +1,39 @@ +# ERPNext - web based ERP (http://erpnext.com) +# Copyright (C) 2012 Web Notes Technologies Pvt Ltd +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +from __future__ import unicode_literals +def execute(): + import webnotes + webnotes.conn.sql(""" + delete from `tabDocPerm` + where + role in ('Sales User', 'Sales Manager', 'Sales Master Manager', + 'Purchase User', 'Purchase Manager', 'Purchase Master Manager') + and parent = 'Sales and Purchase Return Tool' + """) + + webnotes.conn.sql("""delete from `tabDocPerm` where ifnull(role, '') = ''""") + + if not webnotes.conn.sql("""select name from `tabDocPerm` where parent = 'Leave Application' + and role = 'Employee' and permlevel = 1"""): + from webnotes.model.code import get_obj + from webnotes.model.doc import addchild + leave_app = get_obj('DocType', 'Leave Application', with_children=1) + ch = addchild(leave_app.doc, 'permissions', 'DocPerm') + ch.role = 'Employee' + ch.permlevel = 1 + ch.read = 1 + ch.save() \ No newline at end of file diff --git a/erpnext/patches/patch_list.py b/erpnext/patches/patch_list.py index 92e48a0bcd..8a38a3642d 100644 --- a/erpnext/patches/patch_list.py +++ b/erpnext/patches/patch_list.py @@ -604,4 +604,8 @@ patch_list = [ 'patch_module': 'patches.september_2012', 'patch_file': 'rebuild_trees', }, + { + 'patch_module': 'patches.october_2012', + 'patch_file': 'update_permission', + }, ] diff --git a/erpnext/setup/doctype/price_list/price_list.js b/erpnext/setup/doctype/price_list/price_list.js index 11993f8c3b..0d903a8147 100644 --- a/erpnext/setup/doctype/price_list/price_list.js +++ b/erpnext/setup/doctype/price_list/price_list.js @@ -19,29 +19,29 @@ cur_frm.cscript.refresh = function(doc, cdt, cdn) { cur_frm.set_intro("Save this list to begin."); return; } - if(!doc.file_list) { - cur_frm.set_intro('

1. Click on "Download Template" \ - to download the template of all Items.

' - +'

2. Update prices and Currency.

' - +'

3. Save it as a CSV (.csv) file.

' - +'

4. Upload the file.

'); + if (wn.boot.profile.can_create.indexOf(cdt) !== -1) { + if(!doc.file_list) { + cur_frm.set_intro('

1. Click on "Download Template" \ + to download the template of all Items.

' + +'

2. Update prices and Currency.

' + +'

3. Save it as a CSV (.csv) file.

' + +'

4. Upload the file.

'); - cur_frm.add_custom_button('Download Template', function() { - $c_obj_csv(cur_frm.get_doclist(), 'download_template'); - }, 'icon-download') + cur_frm.add_custom_button('Download Template', function() { + $c_obj_csv(cur_frm.get_doclist(), 'download_template'); + }, 'icon-download') - cur_frm.add_custom_button('Upload Price List', function() { - cur_frm.attachments.add_attachment(); - }, 'icon-upload') + cur_frm.add_custom_button('Upload Price List', function() { + cur_frm.attachments.add_attachment(); + }, 'icon-upload'); + } else { + cur_frm.set_intro('To update prices from the attachment, click on "Update Prices". \ + To reset prices, delete the attachment (in the sidebar) and upload again.'); - - } else { - cur_frm.set_intro('To update prices from the attachment, click on "Update Prices". \ - To reset prices, delete the attachment (in the sidebar) and upload again.'); - - // Update Prices - cur_frm.add_custom_button('Update Prices', function() { - cur_frm.call_server('update_prices'); - }, 'icon-refresh') + // Update Prices + cur_frm.add_custom_button('Update Prices', function() { + cur_frm.call_server('update_prices'); + }, 'icon-refresh'); + } } } diff --git a/erpnext/stock/doctype/sales_and_purchase_return_tool/sales_and_purchase_return_tool.txt b/erpnext/stock/doctype/sales_and_purchase_return_tool/sales_and_purchase_return_tool.txt index 8bec19e38a..0952f1d305 100644 --- a/erpnext/stock/doctype/sales_and_purchase_return_tool/sales_and_purchase_return_tool.txt +++ b/erpnext/stock/doctype/sales_and_purchase_return_tool/sales_and_purchase_return_tool.txt @@ -3,9 +3,9 @@ # These values are common in all dictionaries { - u'creation': '2012-07-03 13:29:45', + u'creation': '2012-09-19 12:24:41', u'docstatus': 0, - u'modified': '2012-09-17 10:55:11', + u'modified': '2012-10-02 10:40:14', u'modified_by': u'Administrator', u'owner': u'wasim@webnotestech.com' }, @@ -230,45 +230,37 @@ # DocPerm { + 'amend': 0, + 'cancel': 0, 'create': 1, u'doctype': u'DocPerm', 'permlevel': 0, - 'role': u'Accounts Manager', + 'role': u'Material User', + 'submit': 0, 'write': 1 }, - # DocPerm - { - u'doctype': u'DocPerm', - 'permlevel': 1, - 'role': u'All' - }, - # DocPerm { 'amend': 0, 'cancel': 0, - 'create': 0, + 'create': 1, u'doctype': u'DocPerm', - 'permlevel': 1, + 'permlevel': 0, + 'role': u'Material Manager', + 'submit': 0, + 'write': 1 + }, + + # DocPerm + { + 'amend': 0, + 'cancel': 0, + 'create': 1, + u'doctype': u'DocPerm', + 'permlevel': 0, 'role': u'System Manager', 'submit': 0, - 'write': 0 - }, - - # DocPerm - { - u'doctype': u'DocPerm', - 'permlevel': 1, - 'role': u'Accounts Manager' - }, - - # DocPerm - { - 'create': 1, - u'doctype': u'DocPerm', - 'permlevel': 0, - 'role': u'Purchase Manager', 'write': 1 }, @@ -277,25 +269,7 @@ 'create': 1, u'doctype': u'DocPerm', 'permlevel': 0, - 'role': u'Purchase User', - 'write': 1 - }, - - # DocPerm - { - 'create': 1, - u'doctype': u'DocPerm', - 'permlevel': 0, - 'role': u'Sales Manager', - 'write': 1 - }, - - # DocPerm - { - 'create': 1, - u'doctype': u'DocPerm', - 'permlevel': 0, - 'role': u'Sales User', + 'role': u'Accounts Manager', 'write': 1 }, @@ -308,98 +282,10 @@ 'write': 1 }, - # DocPerm - { - 'amend': 0, - 'cancel': 0, - 'create': 1, - u'doctype': u'DocPerm', - 'permlevel': 0, - 'role': u'System Manager', - 'submit': 0, - 'write': 1 - }, - # DocPerm { u'doctype': u'DocPerm', 'permlevel': 1, - 'role': u'Accounts User' - }, - - # DocPerm - { - u'doctype': u'DocPerm', - 'permlevel': 1, - 'role': u'Sales User' - }, - - # DocPerm - { - u'doctype': u'DocPerm', - 'permlevel': 1, - 'role': u'Sales Manager' - }, - - # DocPerm - { - u'doctype': u'DocPerm', - 'permlevel': 1, - 'role': u'Purchase User' - }, - - # DocPerm - { - u'doctype': u'DocPerm', - 'permlevel': 1, - 'role': u'Purchase Manager' - }, - - # DocPerm - { - 'amend': 0, - 'cancel': 0, - 'create': 0, - u'doctype': u'DocPerm', - 'permlevel': 1, - 'role': u'Material Manager', - 'submit': 0, - 'write': 0 - }, - - # DocPerm - { - 'amend': 0, - 'cancel': 0, - 'create': 1, - u'doctype': u'DocPerm', - 'permlevel': 0, - 'role': u'Material Manager', - 'submit': 0, - 'write': 1 - }, - - # DocPerm - { - 'amend': 0, - 'cancel': 0, - 'create': 0, - u'doctype': u'DocPerm', - 'permlevel': 1, - 'role': u'Material User', - 'submit': 0, - 'write': 0 - }, - - # DocPerm - { - 'amend': 0, - 'cancel': 0, - 'create': 1, - u'doctype': u'DocPerm', - 'permlevel': 0, - 'role': u'Material User', - 'submit': 0, - 'write': 1 + 'role': u'All' } ] \ No newline at end of file