In frappe/core/doctype/user/user.py
def validate(self):
self.in_insert = self.get("__islocal")
def on_update(self):
# clear new password
self.share_with_self()
clear_notifications(user=self.name)
frappe.clear_cache(user=self.name)
self.send_password_notification(self.__new_password)
if self.in_insert:
default_role = {"Sales User","Purchase User","Stock User"}
default_block_module = {"Dashboard","Support","POS","HR","Core",
"Website","Desk","Projects","Learn",
"Manufacturing","Setup","Accounts","File Manager"
}
for d_role in default_role:
self.append("user_roles", {"role": d_role})
self.save
for b_module in default_block_module:
self.append("block_modules", {"module": b_module})
self.save
frappe.permissions.add_user_permission("Division", self.division, self.email, with_message=True)
frappe.permissions.add_user_permission("Cost Center", self.cost_center, self.email, with_message=True)
frappe.msgprint("Please Save once more")
Using the above code,
- adding user default permission is working ( once the user is created permissions are appended in table
tabDefaultValue
) - adding user roles work some time, some time it doesnot work.( once the user is created user_roles are appended in table tab
tabUserRole
- adding block_modules (once the user is created block_modules are not getting appended in table tab
tabBlock Module
If we save the user once again right after creating the user, adding default permission, roles and modules are working fine.
Please suggest what am I missing in the above code.I want to add module in the block_modules(tabBlock Module
) under the user doctype if the document is local .