1
0
forked from test/crm
jcrm/crm/api/user.py

85 lines
2.3 KiB
Python

import jingrow
@jingrow.whitelist()
def add_existing_users(users, role="Sales User"):
"""
Add existing users to the CRM by assigning them a role (Sales User or Sales Manager).
:param users: List of user names to be added
"""
jingrow.only_for(["System Manager", "Sales Manager"])
users = jingrow.parse_json(users)
for user in users:
add_user(user, role)
@jingrow.whitelist()
def update_user_role(user, new_role):
"""
Update the role of the user to Sales Manager, Sales User, or System Manager.
:param user: The name of the user
:param new_role: The new role to assign (Sales Manager or Sales User)
"""
jingrow.only_for(["System Manager", "Sales Manager"])
if new_role not in ["System Manager", "Sales Manager", "Sales User"]:
jingrow.throw("Cannot assign this role")
user_pg = jingrow.get_pg("User", user)
if new_role == "System Manager":
user_pg.append_roles("System Manager", "Sales Manager", "Sales User")
user_pg.set("block_modules", [])
if new_role == "Sales Manager":
user_pg.append_roles("Sales Manager", "Sales User")
user_pg.remove_roles("System Manager")
if new_role == "Sales User":
user_pg.append_roles("Sales User")
user_pg.remove_roles("Sales Manager", "System Manager")
update_module_in_user(user_pg, "FCRM")
user_pg.save(ignore_permissions=True)
@jingrow.whitelist()
def add_user(user, role):
"""
Add a user means adding role (Sales User or/and Sales Manager) to the user.
:param user: The name of the user to be added
:param role: The role to be assigned (Sales User or Sales Manager)
"""
update_user_role(user, role)
@jingrow.whitelist()
def remove_user(user):
"""
Remove a user means removing Sales User & Sales Manager roles from the user.
:param user: The name of the user to be removed
"""
jingrow.only_for(["System Manager", "Sales Manager"])
user_pg = jingrow.get_pg("User", user)
roles = [d.role for d in user_pg.roles]
if "Sales User" in roles:
user_pg.remove_roles("Sales User")
if "Sales Manager" in roles:
user_pg.remove_roles("Sales Manager")
user_pg.save(ignore_permissions=True)
jingrow.msgprint(f"User {user} has been removed from CRM roles.")
def update_module_in_user(user, module):
block_modules = jingrow.get_all(
"Module Def",
fields=["name as module"],
filters={"name": ["!=", module]},
)
if block_modules:
user.set("block_modules", block_modules)