From 6364eb2b6082bb20ed88d941028cfbc7b2dbe8e1 Mon Sep 17 00:00:00 2001 From: Magnus Hagander Date: Mon, 28 Aug 2017 17:04:10 +0200 Subject: [PATCH] Copy over sessioninfo utility from postgresqleu site --- pgweb/core/management/commands/sessioninfo.py | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 pgweb/core/management/commands/sessioninfo.py diff --git a/pgweb/core/management/commands/sessioninfo.py b/pgweb/core/management/commands/sessioninfo.py new file mode 100644 index 00000000..670f68f8 --- /dev/null +++ b/pgweb/core/management/commands/sessioninfo.py @@ -0,0 +1,39 @@ +# Dump interesting information out of django sessions +# +# (This is particarly interesting when digging through old stack trace emails..) +# +from django.core.management.base import BaseCommand, CommandError +from django.contrib.sessions.models import Session +from django.contrib.auth.models import User + +class Command(BaseCommand): + help = 'Dump interesting information about a session' + + def add_arguments(self, parser): + parser.add_argument('sessionid') + + def handle(self, *args, **options): + try: + session = Session.objects.get(session_key=options['sessionid']).get_decoded() + uid = session.get('_auth_user_id') + user = User.objects.get(pk=uid) + + print u"Session {0}".format(options['sessionid']) + print " -- Logged in user --" + print u"Userid: {0}".format(uid) + print u"Username: {0}".format(user.username) + print u"Name: {0}".format(user.get_full_name()) + print u"Email: {0}".format(user.email) + # Remove known keys + for k in ('_auth_user_id', '_auth_user_hash', '_auth_user_backend'): + session.pop(k, None) + if session: + print " -- Other session values --" + for k,v in session.items(): + print u"{0:20} {1}".format(k,v) + + except Session.DoesNotExist: + raise CommandError('Session not found') + except User.DoesNotExist: + raise CommandError('Associated user not found') + -- 2.39.5