diff --git a/frappe/commands/site.py b/frappe/commands/site.py index 2b37af0f2c..4a98a2307f 100755 --- a/frappe/commands/site.py +++ b/frappe/commands/site.py @@ -416,6 +416,7 @@ def _set_limits(context, site, limits): site = get_site(context) with frappe.init_site(site): + frappe.connect() new_limits = {} for limit, value in limits: if limit not in ('emails', 'space', 'users', 'email_group', diff --git a/frappe/limits.py b/frappe/limits.py index 90efaca935..65fd735673 100755 --- a/frappe/limits.py +++ b/frappe/limits.py @@ -4,7 +4,7 @@ from frappe import _ from frappe.utils import now_datetime, getdate, flt, cint, get_fullname from frappe.installer import update_site_config from frappe.utils.data import formatdate -from frappe.utils.user import get_enabled_system_users +from frappe.utils.user import get_enabled_system_users, disable_users import os, subprocess, urlparse, urllib class SiteExpiredError(frappe.ValidationError): @@ -149,6 +149,7 @@ def update_limits(limits_dict): limits = get_limits() limits.update(limits_dict) update_site_config("limits", limits, validate=False) + disable_users(limits) frappe.local.conf.limits = limits def clear_limit(key): diff --git a/frappe/utils/user.py b/frappe/utils/user.py index 15367f988e..f8209ca1d0 100755 --- a/frappe/utils/user.py +++ b/frappe/utils/user.py @@ -308,4 +308,19 @@ def get_users(): def set_last_active_to_now(user): from frappe.utils import now_datetime - frappe.db.set_value("User", user, "last_active", now_datetime()) \ No newline at end of file + frappe.db.set_value("User", user, "last_active", now_datetime()) + +def disable_users(limits=None): + if not limits: + return + + if limits.get('users'): + active_users = frappe.db.sql_list("""select name from tabUser + where name not in ('Administrator', 'Guest') and user_type = 'System User' and enabled=1 + order by creation desc""") + + if len(active_users) > limits.get('users'): + for user in active_users[: -limits.get('users')]: + frappe.db.set_value("User", user, 'enabled', 0) + + frappe.db.commit()