Copy over sessioninfo utility from postgresqleu site
authorMagnus Hagander <magnus@hagander.net>
Mon, 28 Aug 2017 15:04:10 +0000 (17:04 +0200)
committerMagnus Hagander <magnus@hagander.net>
Mon, 28 Aug 2017 15:04:10 +0000 (17:04 +0200)
pgweb/core/management/commands/sessioninfo.py [new file with mode: 0644]

diff --git a/pgweb/core/management/commands/sessioninfo.py b/pgweb/core/management/commands/sessioninfo.py
new file mode 100644 (file)
index 0000000..670f68f
--- /dev/null
@@ -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')
+