[enhance] added roles for portal users frappe/frappe#2091 (#6452)
diff --git a/erpnext/accounts/report/profitability_analysis/profitability_analysis.js b/erpnext/accounts/report/profitability_analysis/profitability_analysis.js
index 4b9a1af..a25fa56 100644
--- a/erpnext/accounts/report/profitability_analysis/profitability_analysis.js
+++ b/erpnext/accounts/report/profitability_analysis/profitability_analysis.js
@@ -14,7 +14,7 @@
},
{
"fieldname": "based_on",
- "label": __("Baed On"),
+ "label": __("Based On"),
"fieldtype": "Select",
"options": "Cost Center\nProject",
"default": "Cost Center",
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index 43ae234..8b8d3c9 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -101,17 +101,25 @@
portal_menu_items = [
{"title": _("Projects"), "route": "/project", "reference_doctype": "Project"},
- {"title": _("Request for Quotations"), "route": "/rfq", "reference_doctype": "Request for Quotation"},
- {"title": _("Supplier Quotation"), "route": "/quotations", "reference_doctype": "Supplier Quotation"},
- {"title": _("Orders"), "route": "/orders", "reference_doctype": "Sales Order"},
- {"title": _("Invoices"), "route": "/invoices", "reference_doctype": "Sales Invoice"},
- {"title": _("Shipments"), "route": "/shipments", "reference_doctype": "Delivery Note"},
- {"title": _("Issues"), "route": "/issues", "reference_doctype": "Issue", "show_always": True},
+ {"title": _("Request for Quotations"), "route": "/rfq", "reference_doctype": "Request for Quotation", "role": "Supplier"},
+ {"title": _("Supplier Quotation"), "route": "/quotations", "reference_doctype": "Supplier Quotation", "role": "Supplier"},
+ {"title": _("Orders"), "route": "/orders", "reference_doctype": "Sales Order", "role":"Customer"},
+ {"title": _("Invoices"), "route": "/invoices", "reference_doctype": "Sales Invoice", "role":"Customer"},
+ {"title": _("Shipments"), "route": "/shipments", "reference_doctype": "Delivery Note", "role":"Customer"},
+ {"title": _("Issues"), "route": "/issues", "reference_doctype": "Issue", "role":"Customer"},
{"title": _("Addresses"), "route": "/addresses", "reference_doctype": "Address"},
{"title": _("Announcements"), "route": "/announcement", "reference_doctype": "Announcement"},
- {"title": _("Courses"), "route": "/course", "reference_doctype": "Course"},
- {"title": _("Assessment Schedule"), "route": "/assessment", "reference_doctype": "Assessment"},
- {"title": _("Fees"), "route": "/fees", "reference_doctype": "Fees"}
+ {"title": _("Courses"), "route": "/course", "reference_doctype": "Course", "role":"Student"},
+ {"title": _("Assessment Schedule"), "route": "/assessment", "reference_doctype": "Assessment", "role":"Student"},
+ {"title": _("Fees"), "route": "/fees", "reference_doctype": "Fees", "role":"Student"}
+]
+
+default_roles = [
+ {'role': 'Customer', 'doctype':'Contact', 'email_field': 'email_id',
+ 'filters': {'ifnull(customer, "")': ('!=', '')}},
+ {'role': 'Supplier', 'doctype':'Contact', 'email_field': 'email_id',
+ 'filters': {'ifnull(supplier, "")': ('!=', '')}},
+ {'role': 'Student', 'doctype':'Student', 'email_field': 'student_email_id'}
]
has_website_permission = {
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index 86580a2..7968751 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -328,3 +328,4 @@
erpnext.patches.v7_0.update_mode_of_payment_type
execute:frappe.reload_doctype("Salary Slip")
execute:frappe.db.sql("update `tabSalary Slip` set posting_date=creation")
+erpnext.patches.v7_1.update_portal_roles
diff --git a/erpnext/patches/v7_1/update_portal_roles.py b/erpnext/patches/v7_1/update_portal_roles.py
new file mode 100644
index 0000000..b36ae93
--- /dev/null
+++ b/erpnext/patches/v7_1/update_portal_roles.py
@@ -0,0 +1,18 @@
+import frappe
+
+def execute():
+ frappe.reload_doctype('Role')
+ for role_name in ('Customer', 'Supplier', 'Student'):
+ if frappe.db.exists('Role', role_name):
+ frappe.db.set_value('Role', role_name, 'desk_access', 0)
+ else:
+ frappe.get_doc(dict(doctype='Role', role_name=role_name, desk_access=0)).insert()
+
+
+ # set customer, supplier roles
+ for c in frappe.get_all('Contact', fields=['user'], filters={'ifnull(user, "")': ('!=', '')}):
+ user = frappe.get_doc('User', c.user)
+ user.set_default_roles()
+ user.save()
+
+
diff --git a/erpnext/setup/setup_wizard/domainify.py b/erpnext/setup/setup_wizard/domainify.py
index 05af9a6..2b87cc0 100644
--- a/erpnext/setup/setup_wizard/domainify.py
+++ b/erpnext/setup/setup_wizard/domainify.py
@@ -18,7 +18,7 @@
'set_value': [
['Stock Settings', None, 'show_barcode_field', 1]
],
- 'remove_sidebar_items': ['/announcement', '/course', '/assessment', '/fees']
+ 'default_portal_role': 'Customer'
},
'Retail': {
@@ -32,7 +32,7 @@
'set_value': [
['Stock Settings', None, 'show_barcode_field', 1]
],
- 'remove_sidebar_items': ['/announcement', '/course', '/assessment', '/fees']
+ 'default_portal_role': 'Customer'
},
'Distribution': {
@@ -45,7 +45,7 @@
'set_value': [
['Stock Settings', None, 'show_barcode_field', 1]
],
- 'remove_sidebar_items': ['/announcement', '/course', '/assessment', '/fees']
+ 'default_portal_role': 'Customer'
},
'Services': {
@@ -58,14 +58,15 @@
'set_value': [
['Stock Settings', None, 'show_barcode_field', 0]
],
- 'remove_sidebar_items': ['/announcement', '/course', '/assessment', '/fees']
+ 'default_portal_role': 'Customer'
},
'Education': {
'desktop_icons': ['Student', 'Program', 'Course', 'Student Group', 'Instructor',
'Fees', 'ToDo', 'Schools'],
'allow_roles': ['Academics User', 'Accounts User', 'Accounts Manager', 'Item Manager',
- 'Website Manager', 'HR User', 'HR Manager', 'Purchase User', 'Purchase Manager'],
- 'allow_sidebar_items': ['/announcement', '/course', '/assessment', '/fees']
+ 'Website Manager', 'HR User', 'HR Manager', 'Purchase User', 'Purchase Manager',
+ 'Student'],
+ 'default_portal_role': 'Student'
},
}
if not domain in data:
@@ -80,6 +81,8 @@
setup_properties(data)
set_values(data)
setup_sidebar_items(data)
+ if data.get('default_portal_role'):
+ frappe.db.set_value('Portal Settings', None, 'default_role', data.get('default_portal_role'))
frappe.clear_cache()
def setup_desktop_icons(data):
diff --git a/erpnext/setup/setup_wizard/install_fixtures.py b/erpnext/setup/setup_wizard/install_fixtures.py
index 1f14ddf..0cc3575 100644
--- a/erpnext/setup/setup_wizard/install_fixtures.py
+++ b/erpnext/setup/setup_wizard/install_fixtures.py
@@ -13,6 +13,9 @@
def install(country=None):
records = [
+ dict(doctype='Role', role_name='Supplier', desk_access=0),
+ dict(doctype='Role', role_name='Customer', desk_access=0),
+ dict(doctype='Role', role_name='Student', desk_access=0),
# address template
{'doctype':"Address Template", "country": country},