refactor: make desk settings user specific
Signed-off-by: Akhil Narang <me@akhilnarang.dev>
This commit is contained in:
parent
99f233c6c7
commit
895ca9a30b
6 changed files with 106 additions and 111 deletions
|
|
@ -437,16 +437,9 @@ def add_layouts(bootinfo):
|
|||
|
||||
|
||||
def get_desk_settings():
|
||||
role_list = frappe.get_all("Role", fields=["*"], filters=dict(name=["in", frappe.get_roles()]))
|
||||
desk_settings = {}
|
||||
from frappe.core.doctype.user.user import desk_properties
|
||||
|
||||
from frappe.core.doctype.role.role import desk_properties
|
||||
|
||||
for role in role_list:
|
||||
for key in desk_properties:
|
||||
desk_settings[key] = desk_settings.get(key) or role.get(key)
|
||||
|
||||
return desk_settings
|
||||
return frappe.get_value("User", frappe.session.user, desk_properties, as_dict=True)
|
||||
|
||||
|
||||
def get_notification_settings():
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import frappe
|
||||
|
||||
from ..role import desk_properties
|
||||
from ...user.user import desk_properties
|
||||
|
||||
|
||||
def execute():
|
||||
|
|
|
|||
|
|
@ -14,18 +14,7 @@
|
|||
"disabled",
|
||||
"is_custom",
|
||||
"desk_access",
|
||||
"two_factor_auth",
|
||||
"navigation_settings_section",
|
||||
"search_bar",
|
||||
"notifications",
|
||||
"list_settings_section",
|
||||
"list_sidebar",
|
||||
"bulk_actions",
|
||||
"view_switcher",
|
||||
"form_settings_section",
|
||||
"form_sidebar",
|
||||
"timeline",
|
||||
"dashboard"
|
||||
"two_factor_auth"
|
||||
],
|
||||
"fields": [
|
||||
{
|
||||
|
|
@ -73,69 +62,6 @@
|
|||
"fieldname": "column_break_4",
|
||||
"fieldtype": "Column Break"
|
||||
},
|
||||
{
|
||||
"fieldname": "navigation_settings_section",
|
||||
"fieldtype": "Section Break",
|
||||
"label": "Navigation Settings"
|
||||
},
|
||||
{
|
||||
"default": "1",
|
||||
"fieldname": "search_bar",
|
||||
"fieldtype": "Check",
|
||||
"label": "Search Bar"
|
||||
},
|
||||
{
|
||||
"fieldname": "list_settings_section",
|
||||
"fieldtype": "Section Break",
|
||||
"label": "List Settings"
|
||||
},
|
||||
{
|
||||
"default": "1",
|
||||
"fieldname": "list_sidebar",
|
||||
"fieldtype": "Check",
|
||||
"label": "Sidebar"
|
||||
},
|
||||
{
|
||||
"default": "1",
|
||||
"fieldname": "bulk_actions",
|
||||
"fieldtype": "Check",
|
||||
"label": "Bulk Actions"
|
||||
},
|
||||
{
|
||||
"fieldname": "form_settings_section",
|
||||
"fieldtype": "Section Break",
|
||||
"label": "Form Settings"
|
||||
},
|
||||
{
|
||||
"default": "1",
|
||||
"fieldname": "form_sidebar",
|
||||
"fieldtype": "Check",
|
||||
"label": "Sidebar"
|
||||
},
|
||||
{
|
||||
"default": "1",
|
||||
"fieldname": "timeline",
|
||||
"fieldtype": "Check",
|
||||
"label": "Timeline"
|
||||
},
|
||||
{
|
||||
"default": "1",
|
||||
"fieldname": "dashboard",
|
||||
"fieldtype": "Check",
|
||||
"label": "Dashboard"
|
||||
},
|
||||
{
|
||||
"default": "1",
|
||||
"fieldname": "view_switcher",
|
||||
"fieldtype": "Check",
|
||||
"label": "View Switcher"
|
||||
},
|
||||
{
|
||||
"default": "1",
|
||||
"fieldname": "notifications",
|
||||
"fieldtype": "Check",
|
||||
"label": "Notifications"
|
||||
},
|
||||
{
|
||||
"default": "0",
|
||||
"fieldname": "is_custom",
|
||||
|
|
@ -148,7 +74,7 @@
|
|||
"idx": 1,
|
||||
"index_web_pages_for_search": 1,
|
||||
"links": [],
|
||||
"modified": "2024-03-23 16:03:36.854123",
|
||||
"modified": "2024-09-19 17:07:08.672124",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Core",
|
||||
"name": "Role",
|
||||
|
|
|
|||
|
|
@ -4,17 +4,6 @@
|
|||
import frappe
|
||||
from frappe.model.document import Document
|
||||
from frappe.website.path_resolver import validate_path
|
||||
|
||||
desk_properties = (
|
||||
"search_bar",
|
||||
"notifications",
|
||||
"list_sidebar",
|
||||
"bulk_actions",
|
||||
"view_switcher",
|
||||
"form_sidebar",
|
||||
"timeline",
|
||||
"dashboard",
|
||||
)
|
||||
from frappe.website.router import clear_routing_cache
|
||||
|
||||
STANDARD_ROLES = ("Administrator", "System Manager", "Script Manager", "All", "Guest")
|
||||
|
|
@ -29,21 +18,13 @@ class Role(Document):
|
|||
if TYPE_CHECKING:
|
||||
from frappe.types import DF
|
||||
|
||||
bulk_actions: DF.Check
|
||||
dashboard: DF.Check
|
||||
desk_access: DF.Check
|
||||
disabled: DF.Check
|
||||
form_sidebar: DF.Check
|
||||
home_page: DF.Data | None
|
||||
is_custom: DF.Check
|
||||
list_sidebar: DF.Check
|
||||
notifications: DF.Check
|
||||
restrict_to_domain: DF.Link | None
|
||||
role_name: DF.Data
|
||||
search_bar: DF.Check
|
||||
timeline: DF.Check
|
||||
two_factor_auth: DF.Check
|
||||
view_switcher: DF.Check
|
||||
# end: auto-generated types
|
||||
|
||||
def before_rename(self, old, new, merge=False):
|
||||
|
|
@ -78,10 +59,6 @@ class Role(Document):
|
|||
if self.name == "Guest":
|
||||
self.desk_access = 0
|
||||
|
||||
if not self.desk_access:
|
||||
for key in desk_properties:
|
||||
self.set(key, 0)
|
||||
|
||||
def remove_roles(self):
|
||||
frappe.db.delete("Has Role", {"role": self.name})
|
||||
frappe.clear_cache()
|
||||
|
|
|
|||
|
|
@ -50,6 +50,17 @@
|
|||
"desk_theme",
|
||||
"code_editor_type",
|
||||
"banner_image",
|
||||
"navigation_settings_section",
|
||||
"search_bar",
|
||||
"notifications",
|
||||
"list_settings_section",
|
||||
"list_sidebar",
|
||||
"bulk_actions",
|
||||
"view_switcher",
|
||||
"form_settings_section",
|
||||
"form_sidebar",
|
||||
"timeline",
|
||||
"dashboard",
|
||||
"change_password",
|
||||
"new_password",
|
||||
"logout_all_sessions",
|
||||
|
|
@ -748,6 +759,69 @@
|
|||
"fieldname": "default_app",
|
||||
"fieldtype": "Select",
|
||||
"label": "Default App"
|
||||
},
|
||||
{
|
||||
"fieldname": "navigation_settings_section",
|
||||
"fieldtype": "Section Break",
|
||||
"label": "Navigation Settings"
|
||||
},
|
||||
{
|
||||
"default": "1",
|
||||
"fieldname": "search_bar",
|
||||
"fieldtype": "Check",
|
||||
"label": "Search Bar"
|
||||
},
|
||||
{
|
||||
"default": "1",
|
||||
"fieldname": "notifications",
|
||||
"fieldtype": "Check",
|
||||
"label": "Notifications"
|
||||
},
|
||||
{
|
||||
"fieldname": "list_settings_section",
|
||||
"fieldtype": "Section Break",
|
||||
"label": "List Settings"
|
||||
},
|
||||
{
|
||||
"default": "1",
|
||||
"fieldname": "list_sidebar",
|
||||
"fieldtype": "Check",
|
||||
"label": "Sidebar"
|
||||
},
|
||||
{
|
||||
"default": "1",
|
||||
"fieldname": "bulk_actions",
|
||||
"fieldtype": "Check",
|
||||
"label": "Bulk Actions"
|
||||
},
|
||||
{
|
||||
"default": "1",
|
||||
"fieldname": "view_switcher",
|
||||
"fieldtype": "Check",
|
||||
"label": "View Switcher"
|
||||
},
|
||||
{
|
||||
"fieldname": "form_settings_section",
|
||||
"fieldtype": "Section Break",
|
||||
"label": "Form Settings"
|
||||
},
|
||||
{
|
||||
"default": "1",
|
||||
"fieldname": "form_sidebar",
|
||||
"fieldtype": "Check",
|
||||
"label": "Sidebar"
|
||||
},
|
||||
{
|
||||
"default": "1",
|
||||
"fieldname": "timeline",
|
||||
"fieldtype": "Check",
|
||||
"label": "Timeline"
|
||||
},
|
||||
{
|
||||
"default": "1",
|
||||
"fieldname": "dashboard",
|
||||
"fieldtype": "Check",
|
||||
"label": "Dashboard"
|
||||
}
|
||||
],
|
||||
"icon": "fa fa-user",
|
||||
|
|
@ -810,7 +884,7 @@
|
|||
"link_fieldname": "user"
|
||||
}
|
||||
],
|
||||
"modified": "2024-08-13 14:48:15.168516",
|
||||
"modified": "2024-09-19 17:06:42.161178",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Core",
|
||||
"name": "User",
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
|
||||
# License: MIT. See LICENSE
|
||||
|
||||
import json
|
||||
from collections.abc import Iterable
|
||||
from datetime import timedelta
|
||||
|
||||
|
|
@ -39,6 +38,17 @@ from frappe.utils.password import update_password as _update_password
|
|||
from frappe.utils.user import get_system_managers
|
||||
from frappe.website.utils import get_home_page, is_signup_disabled
|
||||
|
||||
desk_properties = (
|
||||
"search_bar",
|
||||
"notifications",
|
||||
"list_sidebar",
|
||||
"bulk_actions",
|
||||
"view_switcher",
|
||||
"form_sidebar",
|
||||
"timeline",
|
||||
"dashboard",
|
||||
)
|
||||
|
||||
|
||||
class User(Document):
|
||||
# begin: auto-generated types
|
||||
|
|
@ -62,8 +72,10 @@ class User(Document):
|
|||
bio: DF.SmallText | None
|
||||
birth_date: DF.Date | None
|
||||
block_modules: DF.Table[BlockModule]
|
||||
bulk_actions: DF.Check
|
||||
bypass_restrict_ip_check_if_2fa_enabled: DF.Check
|
||||
code_editor_type: DF.Literal["vscode", "vim", "emacs"]
|
||||
dashboard: DF.Check
|
||||
default_app: DF.Literal[None]
|
||||
default_workspace: DF.Link | None
|
||||
defaults: DF.Table[DefaultValue]
|
||||
|
|
@ -79,6 +91,7 @@ class User(Document):
|
|||
follow_created_documents: DF.Check
|
||||
follow_liked_documents: DF.Check
|
||||
follow_shared_documents: DF.Check
|
||||
form_sidebar: DF.Check
|
||||
full_name: DF.Data | None
|
||||
gender: DF.Link | None
|
||||
home_settings: DF.Code | None
|
||||
|
|
@ -91,6 +104,7 @@ class User(Document):
|
|||
last_name: DF.Data | None
|
||||
last_password_reset_date: DF.Date | None
|
||||
last_reset_password_key_generated_on: DF.Datetime | None
|
||||
list_sidebar: DF.Check
|
||||
location: DF.Data | None
|
||||
login_after: DF.Int
|
||||
login_before: DF.Int
|
||||
|
|
@ -100,6 +114,7 @@ class User(Document):
|
|||
module_profile: DF.Link | None
|
||||
mute_sounds: DF.Check
|
||||
new_password: DF.Password | None
|
||||
notifications: DF.Check
|
||||
onboarding_status: DF.SmallText | None
|
||||
phone: DF.Data | None
|
||||
redirect_url: DF.SmallText | None
|
||||
|
|
@ -108,17 +123,20 @@ class User(Document):
|
|||
role_profile_name: DF.Link | None
|
||||
role_profiles: DF.TableMultiSelect[UserRoleProfile]
|
||||
roles: DF.Table[HasRole]
|
||||
search_bar: DF.Check
|
||||
send_me_a_copy: DF.Check
|
||||
send_welcome_email: DF.Check
|
||||
simultaneous_sessions: DF.Int
|
||||
social_logins: DF.Table[UserSocialLogin]
|
||||
thread_notify: DF.Check
|
||||
time_zone: DF.Autocomplete | None
|
||||
timeline: DF.Check
|
||||
unsubscribed: DF.Check
|
||||
user_emails: DF.Table[UserEmail]
|
||||
user_image: DF.AttachImage | None
|
||||
user_type: DF.Link | None
|
||||
username: DF.Data | None
|
||||
view_switcher: DF.Check
|
||||
# end: auto-generated types
|
||||
|
||||
__new_password = None
|
||||
|
|
@ -178,6 +196,8 @@ class User(Document):
|
|||
self.validate_allowed_modules()
|
||||
self.validate_user_image()
|
||||
self.set_time_zone()
|
||||
self.set_desk_properties()
|
||||
|
||||
if self.language == "Loading...":
|
||||
self.language = None
|
||||
|
||||
|
|
@ -793,6 +813,11 @@ class User(Document):
|
|||
},
|
||||
)
|
||||
|
||||
def set_desk_properties(self):
|
||||
if self.user_type == "Website User":
|
||||
for key in desk_properties:
|
||||
self.set(key, 0)
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def get_timezones():
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue