def test_deactivate_additional_users(self): update_limits({'users': get_total_users() + 1}) if not frappe.db.exists( "User", "*****@*****.**"): user = frappe.new_doc('User') user.email = '*****@*****.**' user.first_name = 'Test Deactivate Additional Users' user.add_roles("System Manager") #update limits update_limits({"users": get_total_users() - 1}) self.assertEqual( frappe.db.get_value( "User", "*****@*****.**", "enabled"), 0) if frappe.db.exists("User", "*****@*****.**"): delete_contact('*****@*****.**') frappe.delete_doc('User', '*****@*****.**') # Clear the user limit clear_limit('users')
def disable_users(limits=None): if not limits: return if limits.get('users'): system_manager = get_system_managers(only_name=True)[-1] #exclude system manager from active user list active_users = frappe.db.sql_list("""select name from tabUser where name not in ('Administrator', 'Guest', %s) and user_type = 'System User' and enabled=1 order by creation desc""", system_manager) user_limit = cint(limits.get('users')) - 1 if len(active_users) > user_limit: # if allowed user limit 1 then deactivate all additional users # else extract additional user from active user list and deactivate them if cint(limits.get('users')) != 1: active_users = active_users[:-1 * user_limit] for user in active_users: frappe.db.set_value("User", user, 'enabled', 0) from frappe.core.doctype.user.user import get_total_users if get_total_users() > cint(limits.get('users')): reset_simultaneous_sessions(cint(limits.get('users'))) frappe.db.commit()
def disable_users(limits=None): if not limits: return if limits.get('users'): system_manager = get_system_managers(only_name=True)[-1] #exclude system manager from active user list active_users = frappe.db.sql_list( """select name from tabUser where name not in ('Administrator', 'Guest', %s) and user_type = 'System User' and enabled=1 order by creation desc""", system_manager) user_limit = cint(limits.get('users')) - 1 if len(active_users) > user_limit: # if allowed user limit 1 then deactivate all additional users # else extract additional user from active user list and deactivate them if cint(limits.get('users')) != 1: active_users = active_users[:-1 * user_limit] for user in active_users: frappe.db.set_value("User", user, 'enabled', 0) from frappe.core.doctype.user.user import get_total_users if get_total_users() > cint(limits.get('users')): reset_simultaneous_sessions(cint(limits.get('users'))) frappe.db.commit()
def test_deactivate_additional_users(self): update_limits({'users': get_total_users()+1}) if not frappe.db.exists("User", "*****@*****.**"): user = frappe.new_doc('User') user.email = '*****@*****.**' user.first_name = 'Test Deactivate Additional Users' user.add_roles("System Manager") #update limits update_limits({"users": get_total_users()-1}) self.assertEqual(frappe.db.get_value("User", "*****@*****.**", "enabled"), 0) if frappe.db.exists("User", "*****@*****.**"): frappe.delete_doc('User', '*****@*****.**') # Clear the user limit clear_limit('users')
def test_user_limit_for_site_with_simultaneous_sessions(self): clear_limit('users') # make sure this user counts user = frappe.get_doc('User', '*****@*****.**') user.add_roles('Website Manager') user.save() update_limits({'users': get_total_users()}) user.simultaneous_sessions = user.simultaneous_sessions + 1 self.assertRaises(MaxUsersReachedError, user.save) # Clear the user limit clear_limit('users')
def test_user_limit_for_site(self): update_limits({'users': get_total_users()}) # reload site config from frappe import _dict frappe.local.conf = _dict(frappe.get_site_config()) # Create a new user user = frappe.new_doc('User') user.email = '*****@*****.**' user.first_name = 'Test_max_user' self.assertRaises(MaxUsersReachedError, user.add_roles, 'System Manager') if frappe.db.exists('User', '*****@*****.**'): frappe.delete_doc('User', '*****@*****.**') # Clear the user limit clear_limit('users')
def disable_users(limits=None): warnings.warn( "disable_users will be deprecated. Please create a custom method for this functionality.", FutureWarning) if not limits: return if limits.get('users'): system_manager = get_system_managers(only_name=True) user_list = ['Administrator', 'Guest'] if system_manager: user_list.append(system_manager[-1]) #exclude system manager from active user list # active_users = frappe.db.sql_list("""select name from tabUser # where name not in ('Administrator', 'Guest', %s) and user_type = 'System User' and enabled=1 # order by creation desc""", system_manager) active_users = frappe.get_all("User", filters={ "user_type": "System User", "enabled": 1, "name": ["not in", user_list] }, fields=["name"]) user_limit = cint(limits.get('users')) - 1 if len(active_users) > user_limit: # if allowed user limit 1 then deactivate all additional users # else extract additional user from active user list and deactivate them if cint(limits.get('users')) != 1: active_users = active_users[:-1 * user_limit] for user in active_users: frappe.db.set_value("User", user, 'enabled', 0) from frappe.core.doctype.user.user import get_total_users if get_total_users() or 0 > cint(limits.get('users')): reset_simultaneous_sessions(cint(limits.get('users'))) frappe.db.commit()
def test_user_limit_for_site(self): from frappe.core.doctype.user.user import get_total_users update_limits({"users": get_total_users()}) # reload site config from frappe import _dict frappe.local.conf = _dict(frappe.get_site_config()) # Create a new user user = frappe.new_doc("User") user.email = "*****@*****.**" user.first_name = "Test_max_user" self.assertRaises(MaxUsersReachedError, user.add_roles, "System Manager") if frappe.db.exists("User", "*****@*****.**"): frappe.delete_doc("User", "*****@*****.**") # Clear the user limit clear_limit("users")
def get_site_status(verbose=False): import frappe import frappe.utils from frappe.utils.user import get_system_managers from frappe.core.doctype.user.user import get_total_users, get_active_users, \ get_website_users, get_active_website_users import json frappe.connect() ret = { 'last_backup_on': frappe.local.conf.last_backup_on, 'active_users': get_active_users(), 'total_users': get_total_users(), 'active_website_users': get_active_website_users(), 'website_users': get_website_users(), 'system_managers': "\n".join(get_system_managers()), 'default_company': frappe.db.get_default("company"), 'disk_usage': frappe.utils.get_disk_usage(), 'working_directory': frappe.local.site_path } # country, timezone, industry for key in ["country", "time_zone", "industry"]: ret[key] = frappe.db.get_default(key) # basic usage/progress analytics for doctype in ("Company", "Customer", "Item", "Quotation", "Sales Invoice", "Journal Voucher", "Stock Ledger Entry"): key = doctype.lower().replace(" ", "_") + "_exists" ret[key] = 1 if frappe.db.count(doctype) else 0 frappe.destroy() if verbose: print json.dumps(ret, indent=1, sort_keys=True) return ret