From bc14dee451e4c2adb2ff5a157b98d20550f10621 Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Wed, 14 May 2014 18:09:27 +0530 Subject: [PATCH] Added frappe --clear_all_sessions --- frappe/cli.py | 10 ++++++++++ frappe/sessions.py | 9 +++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/frappe/cli.py b/frappe/cli.py index 60b882800e..a007f83758 100755 --- a/frappe/cli.py +++ b/frappe/cli.py @@ -232,6 +232,8 @@ def setup_utilities(parser): help="Clear cache, doctype cache and defaults") parser.add_argument("--reset_perms", default=False, action="store_true", help="Reset permissions for all doctypes") + parser.add_argument("--clear_all_sessions", default=False, action="store_true", + help="Clear sessions of all users (logs them out)") # scheduler parser.add_argument("--run_scheduler", default=False, action="store_true", @@ -501,6 +503,14 @@ def clear_web(): frappe.website.render.clear_cache() frappe.destroy() +@cmd +def clear_all_sessions(): + import frappe.sessions + frappe.connect() + frappe.sessions.clear_all_sessions() + frappe.db.commit() + frappe.destroy() + @cmd def build_sitemap(): from frappe.website import rebuild_config diff --git a/frappe/sessions.py b/frappe/sessions.py index 4bbe4b821f..eb4447b234 100644 --- a/frappe/sessions.py +++ b/frappe/sessions.py @@ -71,13 +71,18 @@ def clear_sessions(user=None, keep_current=False): if keep_current and frappe.session.sid==sid[0]: continue else: - frappe.cache().delete_value("session:" + sid[0]) - frappe.db.sql("""delete from tabSessions where sid=%s""", (sid[0],)) + delete_session(sid[0]) def delete_session(sid=None): frappe.cache().delete_value("session:" + sid) frappe.db.sql("""delete from tabSessions where sid=%s""", sid) +def clear_all_sessions(): + """This effectively logs out all users""" + frappe.only_for("Administrator") + for sid in frappe.db.sql_list("select sid from `tabSessions`"): + delete_session(sid) + def get(): """get session boot info""" from frappe.core.doctype.notification_count.notification_count import \