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)