Skip to content

Instantly share code, notes, and snippets.

@astagi
Created December 18, 2018 11:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save astagi/f556cba7f64ff79a712fe1dbcedccd13 to your computer and use it in GitHub Desktop.
Save astagi/f556cba7f64ff79a712fe1dbcedccd13 to your computer and use it in GitHub Desktop.
Remove all sessions from Django
import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'ares.settings'
import django
django.setup()
import datetime
from django.conf import settings
from django.contrib.auth import logout
from core.models import BaseAresUser as User
from django.contrib.sessions.models import Session
from django.http import HttpRequest
from importlib import import_module
def init_session(session_key):
"""
Initialize same session as done for ``SessionMiddleware``.
"""
engine = import_module(settings.SESSION_ENGINE)
return engine.SessionStore(session_key)
def main():
"""
Read all available users and all available not expired sessions. Then
logout from each session.
"""
now = datetime.datetime.now()
request = HttpRequest()
sessions = Session.objects.filter(expire_date__gt=now)
users = dict(User.objects.values_list('id', 'username'))
print('Found %d not-expired session(s).' % len(sessions))
for session in sessions:
username = session.get_decoded().get('_auth_user_id')
request.session = init_session(session.session_key)
logout(request)
print(' Successfully logout %r user.' % username)
print('All OK!')
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment