fix(cleanup): cleanup layout of doctype, user, role, add home_page to Portal Settings, Role

This commit is contained in:
Rushabh Mehta 2020-08-10 11:07:51 +05:30
parent cde45ba488
commit 77018fc9d6
20 changed files with 507 additions and 633 deletions

View file

@ -18,6 +18,7 @@ from frappe.utils.password import check_password, delete_login_failed_cache
from frappe.core.doctype.activity_log.activity_log import add_authentication_log
from frappe.twofactor import (should_run_2fa, authenticate_for_2factor,
confirm_otp_token, get_cached_user_pass)
from frappe.website.utils import get_home_page
from six.moves.urllib.parse import quote
@ -167,7 +168,7 @@ class LoginManager:
frappe.local.cookie_manager.set_cookie("system_user", "no")
if not resume:
frappe.local.response["message"] = "No App"
frappe.local.response["home_page"] = get_website_user_home_page(self.user)
frappe.local.response["home_page"] = '/' + get_home_page()
else:
frappe.local.cookie_manager.set_cookie("system_user", "yes")
if not resume:
@ -382,16 +383,6 @@ def clear_cookies():
frappe.session.sid = ""
frappe.local.cookie_manager.delete_cookie(["full_name", "user_id", "sid", "user_image", "system_user"])
def get_website_user_home_page(user):
home_page_method = frappe.get_hooks('get_website_user_home_page')
if home_page_method:
home_page = frappe.get_attr(home_page_method[-1])(user)
return '/' + home_page.strip('/')
elif frappe.get_hooks('website_user_home_page'):
return '/' + frappe.get_hooks('website_user_home_page')[-1].strip('/')
else:
return '/me'
def get_last_tried_login_data(user, get_last_login=False):
locked_account_time = frappe.cache().hget('locked_account_time', user)
if get_last_login and locked_account_time:

View file

@ -473,6 +473,8 @@
"label": "Documentation Link"
},
{
"collapsible": 1,
"collapsible_depends_on": "actions",
"fieldname": "actions_section",
"fieldtype": "Section Break",
"label": "Actions"
@ -484,6 +486,8 @@
"options": "DocType Action"
},
{
"collapsible": 1,
"collapsible_depends_on": "links",
"fieldname": "links_section",
"fieldtype": "Section Break",
"label": "Links Section"
@ -528,8 +532,84 @@
],
"icon": "fa fa-bolt",
"idx": 6,
"links": [],
"modified": "2020-07-21 16:20:57.028802",
"links": [
{
"group": "Views",
"link_doctype": "Report",
"link_fieldname": "ref_doctype"
},
{
"group": "Workflow",
"link_doctype": "Workflow",
"link_fieldname": "document_type"
},
{
"group": "Workflow",
"link_doctype": "Notification",
"link_fieldname": "document_type"
},
{
"group": "Customization",
"link_doctype": "Custom Field",
"link_fieldname": "dt"
},
{
"group": "Customization",
"link_doctype": "Custom Script",
"link_fieldname": "dt"
},
{
"group": "Customization",
"link_doctype": "Server Script",
"link_fieldname": "reference_doctype"
},
{
"group": "Workflow",
"link_doctype": "Webhook",
"link_fieldname": "webhook_doctype"
},
{
"group": "Views",
"link_doctype": "Print Format",
"link_fieldname": "doc_type"
},
{
"group": "Views",
"link_doctype": "Web Form",
"link_fieldname": "doc_type"
},
{
"group": "Views",
"link_doctype": "Calendar View",
"link_fieldname": "reference_doctype"
},
{
"group": "Views",
"link_doctype": "Kanban Board",
"link_fieldname": "reference_doctype"
},
{
"group": "Workflow",
"link_doctype": "Onboarding Step",
"link_fieldname": "reference_document"
},
{
"group": "Rules",
"link_doctype": "Auto Repeat",
"link_fieldname": "reference_doctype"
},
{
"group": "Rules",
"link_doctype": "Assignment Rule",
"link_fieldname": "document_type"
},
{
"group": "Rules",
"link_doctype": "Energy Point Rule",
"link_fieldname": "reference_doctype"
}
],
"modified": "2020-08-06 12:59:32.369093",
"modified_by": "Administrator",
"module": "Core",
"name": "DocType",

View file

@ -3,6 +3,8 @@
frappe.ui.form.on('Module Def', {
refresh: function(frm) {
frappe.xcall('frappe.core.doctype.module_def.module_def.get_installed_apps').then(r => {
frm.set_df_property('app_name', 'options', JSON.parse(r));
});
}
});

View file

@ -1,172 +1,88 @@
{
"allow_copy": 0,
"allow_guest_to_view": 0,
"allow_import": 0,
"allow_rename": 1,
"autoname": "field:module_name",
"beta": 0,
"creation": "2013-01-10 16:34:03",
"custom": 0,
"docstatus": 0,
"doctype": "DocType",
"editable_grid": 0,
"engine": "InnoDB",
"actions": [],
"allow_rename": 1,
"autoname": "field:module_name",
"creation": "2013-01-10 16:34:03",
"doctype": "DocType",
"engine": "InnoDB",
"field_order": [
"module_name",
"custom",
"app_name",
"restrict_to_domain"
],
"fields": [
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "module_name",
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 1,
"in_standard_filter": 0,
"label": "Module Name",
"length": 0,
"no_copy": 0,
"oldfieldname": "module_name",
"oldfieldtype": "Data",
"permlevel": 0,
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 1,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
"fieldname": "module_name",
"fieldtype": "Data",
"in_list_view": 1,
"label": "Module Name",
"oldfieldname": "module_name",
"oldfieldtype": "Data",
"reqd": 1,
"unique": 1
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "app_name",
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 1,
"in_standard_filter": 1,
"label": "App Name",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 1,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
"fieldname": "app_name",
"fieldtype": "Select",
"in_list_view": 1,
"in_standard_filter": 1,
"label": "App Name",
"reqd": 1
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "restrict_to_domain",
"fieldtype": "Link",
"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": "Restrict To Domain",
"length": 0,
"no_copy": 0,
"options": "Domain",
"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
"fieldname": "restrict_to_domain",
"fieldtype": "Link",
"label": "Restrict To Domain",
"options": "Domain"
},
{
"default": "0",
"fieldname": "custom",
"fieldtype": "Check",
"label": "Custom"
}
],
"has_web_view": 0,
"hide_heading": 0,
"hide_toolbar": 0,
"icon": "fa fa-sitemap",
"idx": 1,
"image_view": 0,
"in_create": 0,
"is_submittable": 0,
"issingle": 0,
"istable": 0,
"max_attachments": 0,
"modified": "2017-07-13 03:05:28.213656",
"modified_by": "Administrator",
"module": "Core",
"name": "Module Def",
"owner": "Administrator",
],
"icon": "fa fa-sitemap",
"idx": 1,
"links": [
{
"link_doctype": "DocType",
"link_fieldname": "module"
},
{
"link_doctype": "Desk Page",
"link_fieldname": "module"
}
],
"modified": "2020-08-06 12:39:30.740379",
"modified_by": "Administrator",
"module": "Core",
"name": "Module Def",
"owner": "Administrator",
"permissions": [
{
"amend": 0,
"apply_user_permissions": 0,
"cancel": 0,
"create": 1,
"delete": 1,
"email": 1,
"export": 0,
"if_owner": 0,
"import": 0,
"permlevel": 0,
"print": 1,
"read": 1,
"report": 1,
"role": "Administrator",
"set_user_permissions": 0,
"share": 1,
"submit": 0,
"create": 1,
"delete": 1,
"email": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "Administrator",
"share": 1,
"write": 1
},
},
{
"amend": 0,
"apply_user_permissions": 0,
"cancel": 0,
"create": 0,
"delete": 0,
"email": 0,
"export": 0,
"if_owner": 0,
"import": 0,
"permlevel": 0,
"print": 0,
"read": 1,
"report": 0,
"role": "System Manager",
"set_user_permissions": 0,
"share": 0,
"submit": 0,
"write": 0
"create": 1,
"delete": 1,
"read": 1,
"report": 1,
"role": "System Manager",
"write": 1
}
],
"quick_entry": 1,
"read_only": 0,
"read_only_onload": 0,
"show_name_in_global_search": 1,
"sort_order": "ASC",
"track_changes": 1,
"track_seen": 0
],
"show_name_in_global_search": 1,
"sort_field": "modified",
"sort_order": "ASC",
"track_changes": 1
}

View file

@ -2,7 +2,7 @@
# MIT License. See license.txt
from __future__ import unicode_literals
import frappe, os
import frappe, os, json
from frappe.model.document import Document
@ -11,7 +11,7 @@ class ModuleDef(Document):
"""If in `developer_mode`, create folder for module and
add in `modules.txt` of app if missing."""
frappe.clear_cache()
if frappe.conf.get("developer_mode"):
if not self.custom and frappe.conf.get("developer_mode"):
self.create_modules_folder()
self.add_to_modules_txt()
@ -43,7 +43,7 @@ class ModuleDef(Document):
def on_trash(self):
"""Delete module name from modules.txt"""
if frappe.flags.in_uninstall:
if frappe.flags.in_uninstall or self.custom:
return
modules = None
@ -60,3 +60,7 @@ class ModuleDef(Document):
frappe.clear_cache()
frappe.setup_module_map()
@frappe.whitelist()
def get_installed_apps():
return json.dumps(frappe.get_installed_apps())

View file

@ -1,216 +1,90 @@
{
"allow_copy": 0,
"allow_guest_to_view": 0,
"allow_import": 0,
"allow_rename": 1,
"autoname": "field:role_name",
"beta": 0,
"creation": "2013-01-08 15:50:01",
"custom": 0,
"docstatus": 0,
"doctype": "DocType",
"document_type": "Document",
"editable_grid": 0,
"actions": [],
"allow_rename": 1,
"autoname": "field:role_name",
"creation": "2013-01-08 15:50:01",
"doctype": "DocType",
"document_type": "Document",
"engine": "InnoDB",
"field_order": [
"role_name",
"home_page",
"restrict_to_domain",
"column_break_4",
"disabled",
"desk_access",
"two_factor_auth"
],
"fields": [
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "role_name",
"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": "Role Name",
"length": 0,
"no_copy": 0,
"oldfieldname": "role_name",
"oldfieldtype": "Data",
"permlevel": 0,
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 1,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
"fieldname": "role_name",
"fieldtype": "Data",
"label": "Role Name",
"oldfieldname": "role_name",
"oldfieldtype": "Data",
"reqd": 1,
"unique": 1
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"description": "If disabled, this role will be removed from all users.",
"fieldname": "disabled",
"fieldtype": "Check",
"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": "Disabled",
"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
},
"default": "0",
"description": "If disabled, this role will be removed from all users.",
"fieldname": "disabled",
"fieldtype": "Check",
"label": "Disabled"
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"default": "1",
"fieldname": "desk_access",
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 1,
"in_standard_filter": 0,
"label": "Desk Access",
"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
},
"default": "1",
"fieldname": "desk_access",
"fieldtype": "Check",
"in_list_view": 1,
"label": "Desk Access"
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"default": "0",
"fieldname": "two_factor_auth",
"fieldtype": "Check",
"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": "Two Factor Authentication",
"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
},
"default": "0",
"fieldname": "two_factor_auth",
"fieldtype": "Check",
"label": "Two Factor Authentication"
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "restrict_to_domain",
"fieldtype": "Link",
"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": "Restrict To Domain",
"length": 0,
"no_copy": 0,
"options": "Domain",
"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
"fieldname": "restrict_to_domain",
"fieldtype": "Link",
"label": "Restrict To Domain",
"options": "Domain"
},
{
"description": "Route: Example \"/desk\"",
"fieldname": "home_page",
"fieldtype": "Data",
"label": "Home Page"
},
{
"fieldname": "column_break_4",
"fieldtype": "Column Break"
}
],
"has_web_view": 0,
"hide_heading": 0,
"hide_toolbar": 0,
"icon": "fa fa-bookmark",
"idx": 1,
"image_view": 0,
"in_create": 0,
"is_submittable": 0,
"issingle": 0,
"istable": 0,
"max_attachments": 0,
"modified": "2017-07-06 12:42:57.097914",
"modified_by": "Administrator",
"module": "Core",
"name": "Role",
"owner": "Administrator",
],
"icon": "fa fa-bookmark",
"idx": 1,
"links": [],
"modified": "2020-08-06 15:42:59.036960",
"modified_by": "Administrator",
"module": "Core",
"name": "Role",
"owner": "Administrator",
"permissions": [
{
"amend": 0,
"apply_user_permissions": 0,
"cancel": 0,
"create": 1,
"delete": 1,
"email": 1,
"export": 0,
"if_owner": 0,
"import": 0,
"permlevel": 0,
"print": 1,
"read": 1,
"report": 1,
"role": "System Manager",
"set_user_permissions": 0,
"share": 1,
"submit": 0,
"create": 1,
"delete": 1,
"email": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "System Manager",
"share": 1,
"write": 1
}
],
"quick_entry": 1,
"read_only": 0,
"read_only_onload": 0,
"show_name_in_global_search": 0,
"sort_order": "ASC",
"track_changes": 1,
"track_seen": 0
],
"quick_entry": 1,
"sort_field": "modified",
"sort_order": "ASC",
"track_changes": 1
}

View file

@ -2,8 +2,11 @@
// For license information, please see license.txt
frappe.ui.form.on('Server Script', {
setup: function(frm) {
frm.trigger('setup_help');
},
refresh: function(frm) {
if(frm.doc.script_type === 'Scheduler Event' && !frm.doc.disabled){
if (frm.doc.script_type === 'Scheduler Event' && !frm.doc.disabled) {
frm.add_custom_button('Schedule Script', function() {
var d = new frappe.ui.Dialog({
title: "Schedule Script Execution",
@ -33,14 +36,50 @@ frappe.ui.form.on('Server Script', {
}
},
schedule_script(frm, data){
schedule_script(frm, data) {
frm.call({
method: "frappe.core.doctype.server_script.server_script.setup_scheduler_events",
args: {
'script_name': frm.doc.name,
'frequency': data.event_type
}
})
});
},
setup_help(frm) {
frm.get_field('help_html').html(`
<h3>Examples</h3>
<h4>DocType Event</h4>
<pre><code>
# set property
if "test" in doc.description:
doc.status = 'Closed'
# validate
if "validate" in doc.description:
raise frappe.ValidationError
# auto create another document
if doc.allocted_to:
frappe.get_doc(dict(
doctype = 'ToDo'
owner = doc.allocated_to,
description = doc.subject
)).insert()
</code></pre>
<hr>
<h4>API Call</h4>
<pre><code>
# respond to API
if frappe.form_dict.message == "ping":
frappe.response['message'] = "pong"
else:
frappe.response['message'] = "ok"
</code></pre>
`);
}
});

View file

@ -14,7 +14,9 @@
"api_method",
"allow_guest",
"section_break_8",
"script"
"script",
"help_section",
"help_html"
],
"fields": [
{
@ -72,10 +74,19 @@
{
"fieldname": "section_break_8",
"fieldtype": "Section Break"
},
{
"fieldname": "help_section",
"fieldtype": "Section Break",
"label": "Help"
},
{
"fieldname": "help_html",
"fieldtype": "HTML"
}
],
"links": [],
"modified": "2020-04-06 11:24:38.161555",
"modified": "2020-08-07 13:13:02.483963",
"modified_by": "Administrator",
"module": "Core",
"name": "Server Script",

View file

@ -588,9 +588,70 @@
"icon": "fa fa-user",
"idx": 413,
"image_field": "user_image",
"links": [],
"links": [
{
"group": "Profile",
"link_doctype": "Contact",
"link_fieldname": "user"
},
{
"group": "Profile",
"link_doctype": "Chat Profile",
"link_fieldname": "user"
},
{
"group": "Profile",
"link_doctype": "Blogger",
"link_fieldname": "user"
},
{
"group": "Logs",
"link_doctype": "Access Log",
"link_fieldname": "user"
},
{
"group": "Logs",
"link_doctype": "Activity Log",
"link_fieldname": "user"
},
{
"group": "Logs",
"link_doctype": "Energy Point Log",
"link_fieldname": "user"
},
{
"group": "Logs",
"link_doctype": "Route History",
"link_fieldname": "user"
},
{
"group": "Settings",
"link_doctype": "User Permission",
"link_fieldname": "user"
},
{
"group": "Settings",
"link_doctype": "Assignment Rule",
"link_fieldname": "user"
},
{
"group": "Settings",
"link_doctype": "Document Follow",
"link_fieldname": "user"
},
{
"group": "Activity",
"link_doctype": "Communication",
"link_fieldname": "user"
},
{
"group": "Activity",
"link_doctype": "ToDo",
"link_fieldname": "owner"
}
],
"max_attachments": 5,
"modified": "2020-04-08 12:27:36.716490",
"modified": "2020-08-06 19:48:49.677800",
"modified_by": "Administrator",
"module": "Core",
"name": "User",
@ -606,13 +667,13 @@
"read": 1,
"report": 1,
"role": "System Manager",
"set_user_permissions": 1,
"share": 1,
"write": 1
},
{
"permlevel": 1,
"read": 1,
"report": 1,
"role": "System Manager",
"write": 1
}

View file

@ -184,7 +184,7 @@
}
],
"links": [],
"modified": "2020-05-18 19:42:30.435604",
"modified": "2020-08-06 12:55:20.377679",
"modified_by": "Administrator",
"module": "Desk",
"name": "Onboarding Step",

View file

@ -11,5 +11,8 @@ def execute():
)
for theme in themes:
doc = frappe.get_doc("Website Theme", theme.name)
doc.generate_bootstrap_theme()
doc.save()
try:
doc.generate_bootstrap_theme()
doc.save()
except:
pass

View file

@ -20,7 +20,7 @@
.sub-heading {
display: inline-block;
margin-right: 10px;
max-width: 50%;
max-width: 40%;
vertical-align: middle;
overflow: visible;
}
@ -83,7 +83,7 @@
padding-bottom: 17px;
.sub-heading {
max-width: 50%;
max-width: 40%;
overflow: hidden;
}
}

View file

@ -173,7 +173,7 @@ app_license = "{app_license}"
# Home Pages
# ----------
# application home page (will override Website Settings)
# application home page (will not override Website Settings)
# home_page = "login"
# website user home page (by Role)
@ -181,9 +181,6 @@ app_license = "{app_license}"
# "Role": "home_page"
# }}
# Website user home page (by function)
# get_website_user_home_page = "{app_name}.utils.get_home_page"
# Generators
# ----------

View file

@ -1,231 +1,79 @@
{
"allow_copy": 0,
"allow_import": 0,
"allow_rename": 0,
"beta": 0,
"creation": "2016-03-30 01:40:20.001775",
"custom": 0,
"docstatus": 0,
"doctype": "DocType",
"document_type": "",
"editable_grid": 0,
"actions": [],
"creation": "2016-03-30 01:40:20.001775",
"doctype": "DocType",
"engine": "InnoDB",
"field_order": [
"default_role",
"default_portal_home",
"standard_menu_items",
"hide_standard_menu",
"menu",
"custom_sidebar_menu",
"custom_menu"
],
"fields": [
{
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "default_role",
"fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Default Role at Time of Signup",
"length": 0,
"no_copy": 0,
"options": "Role",
"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
},
"fieldname": "default_role",
"fieldtype": "Link",
"label": "Default Role at Time of Signup",
"options": "Role"
},
{
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "standard_menu_items",
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Standard Sidebar Menu",
"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
},
"fieldname": "standard_menu_items",
"fieldtype": "Section Break",
"label": "Standard Sidebar Menu"
},
{
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "hide_standard_menu",
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Hide Standard Menu",
"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
},
"default": "0",
"fieldname": "hide_standard_menu",
"fieldtype": "Check",
"label": "Hide Standard Menu"
},
{
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "menu",
"fieldtype": "Table",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Portal Menu",
"length": 0,
"no_copy": 0,
"options": "Portal Menu Item",
"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
},
"fieldname": "menu",
"fieldtype": "Table",
"label": "Portal Menu",
"options": "Portal Menu Item"
},
{
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "custom_sidebar_menu",
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Custom Sidebar Menu",
"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
},
"fieldname": "custom_sidebar_menu",
"fieldtype": "Section Break",
"label": "Custom Sidebar Menu"
},
{
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "custom_menu",
"fieldtype": "Table",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Custom Menu Items",
"length": 0,
"no_copy": 0,
"options": "Portal Menu Item",
"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
"fieldname": "custom_menu",
"fieldtype": "Table",
"label": "Custom Menu Items",
"options": "Portal Menu Item"
},
{
"description": "Example: \"/desk\"",
"fieldname": "default_portal_home",
"fieldtype": "Data",
"label": "Default Portal Home"
}
],
"hide_heading": 0,
"hide_toolbar": 0,
"idx": 0,
"image_view": 0,
"in_create": 0,
"is_submittable": 0,
"issingle": 1,
"istable": 0,
"max_attachments": 0,
"modified": "2016-12-29 14:40:31.476181",
"modified_by": "Administrator",
"module": "Website",
"name": "Portal Settings",
"name_case": "",
"owner": "Administrator",
],
"issingle": 1,
"links": [],
"modified": "2020-08-06 15:43:36.387050",
"modified_by": "Administrator",
"module": "Website",
"name": "Portal Settings",
"owner": "Administrator",
"permissions": [
{
"amend": 0,
"apply_user_permissions": 0,
"cancel": 0,
"create": 1,
"delete": 1,
"email": 1,
"export": 0,
"if_owner": 0,
"import": 0,
"is_custom": 0,
"permlevel": 0,
"print": 1,
"read": 1,
"report": 0,
"role": "Website Manager",
"set_user_permissions": 0,
"share": 1,
"submit": 0,
"create": 1,
"delete": 1,
"email": 1,
"print": 1,
"read": 1,
"role": "Website Manager",
"share": 1,
"write": 1
}
],
"quick_entry": 0,
"read_only": 0,
"read_only_onload": 0,
"sort_field": "modified",
"sort_order": "DESC",
"track_changes": 1,
"track_seen": 0
],
"sort_field": "modified",
"sort_order": "DESC",
"track_changes": 1
}

View file

@ -0,0 +1,10 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2020, Frappe Technologies and Contributors
# See license.txt
from __future__ import unicode_literals
# import frappe
import unittest
class TestPortalSettings(unittest.TestCase):
pass

View file

@ -203,6 +203,7 @@
},
{
"collapsible": 1,
"collapsible_depends_on": "client_script",
"fieldname": "client_script_section",
"fieldtype": "Section Break",
"label": "Client Script"
@ -344,6 +345,7 @@
},
{
"collapsible": 1,
"collapsible_depends_on": "custom_css",
"fieldname": "custom_css_section",
"fieldtype": "Section Break",
"label": "Custom CSS"
@ -359,7 +361,7 @@
"icon": "icon-edit",
"is_published_field": "published",
"links": [],
"modified": "2020-07-21 16:25:37.028459",
"modified": "2020-08-07 13:12:03.945686",
"modified_by": "Administrator",
"module": "Website",
"name": "Web Form",

View file

@ -137,6 +137,7 @@
},
{
"collapsible": 1,
"collapsible_depends_on": "insert_code",
"fieldname": "custom_javascript",
"fieldtype": "Section Break",
"label": "Script"
@ -157,6 +158,7 @@
},
{
"collapsible": 1,
"collapsible_depends_on": "insert_style",
"fieldname": "custom_css",
"fieldtype": "Section Break",
"label": "Style"
@ -292,7 +294,7 @@
"is_published_field": "published",
"links": [],
"max_attachments": 20,
"modified": "2020-07-21 16:25:17.899069",
"modified": "2020-08-07 10:55:54.885448",
"modified_by": "Administrator",
"module": "Website",
"name": "Web Page",

View file

@ -1,5 +1,11 @@
{
"actions": [],
"actions": [
{
"action": "frappe.sessions.clear",
"action_type": "Server Action",
"label": "Clear Cache"
}
],
"creation": "2013-04-30 12:58:46",
"doctype": "DocType",
"document_type": "Other",
@ -358,7 +364,7 @@
"issingle": 1,
"links": [],
"max_attachments": 10,
"modified": "2020-05-15 14:12:32.907352",
"modified": "2020-08-07 13:34:19.181561",
"modified_by": "Administrator",
"module": "Website",
"name": "Website Settings",

View file

@ -73,23 +73,22 @@ def get_home_page():
def _get_home_page():
home_page = None
get_website_user_home_page = frappe.get_hooks('get_website_user_home_page')
if get_website_user_home_page:
home_page = frappe.get_attr(get_website_user_home_page[-1])(frappe.session.user)
# for user
if frappe.session.user != 'Guest':
# by role
for role in frappe.get_roles():
home_page = frappe.db.get_value('Role', role, 'home_page')
if home_page: break
# portal default
if not home_page:
home_page = frappe.db.get_value("Portal Settings", None, "default_portal_home")
# by hooks
if not home_page:
role_home_page = frappe.get_hooks("role_home_page")
if role_home_page:
for role in frappe.get_roles():
if role in role_home_page:
home_page = role_home_page[role][-1]
break
if not home_page:
home_page = frappe.get_hooks("home_page")
if home_page:
home_page = home_page[-1]
home_page = get_home_page_via_hooks()
# global
if not home_page:
home_page = frappe.db.get_value("Website Settings", None, "home_page") or "login"
@ -99,6 +98,31 @@ def get_home_page():
return frappe.cache().hget("home_page", frappe.session.user, _get_home_page)
def get_home_page_via_hooks():
home_page = None
home_page_method = frappe.get_hooks('get_website_user_home_page')
if home_page_method:
home_page = frappe.get_attr(home_page_method[-1])(user).strip('/')
elif frappe.get_hooks('website_user_home_page'):
home_page = frappe.get_hooks('website_user_home_page')[-1].strip('/')
if not home_page:
role_home_page = frappe.get_hooks("role_home_page")
if role_home_page:
for role in frappe.get_roles():
if role in role_home_page:
home_page = role_home_page[role][-1]
break
if not home_page:
home_page = frappe.get_hooks("home_page")
if home_page:
home_page = home_page[-1]
return home_page
def is_signup_enabled():
if getattr(frappe.local, "is_signup_enabled", None) is None:
frappe.local.is_signup_enabled = True

View file

@ -12,6 +12,7 @@ from frappe.integrations.doctype.ldap_settings.ldap_settings import LDAPSettings
from frappe.utils.password import get_decrypted_password
from frappe.utils.html_utils import get_icon_html
from frappe.integrations.oauth2_logins import decoder_compat
from frappe.website.utils import get_home_page
no_cache = True
@ -20,7 +21,10 @@ def get_context(context):
if frappe.session.user != "Guest":
if not redirect_to:
redirect_to = "/me" if frappe.session.data.user_type=="Website User" else "/desk"
if frappe.session.data.user_type=="Website User":
redirect_to = get_home_page()
else:
redirect_to = "/desk"
frappe.local.flags.redirect_location = redirect_to
raise frappe.Redirect