blob: bb81f609f66996d558039d92d874e57c3b978342 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
# Dump interesting information out of django sessions
#
# (This is particarly interesting when digging through old stack trace emails..)
#
# Copyright (C) 2017, PostgreSQL Europe
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("Session {0}".format(options['sessionid']))
print(" -- Logged in user --")
print("Userid: {0}".format(uid))
print("Username: {0}".format(user.username))
print("Name: {0}".format(user.get_full_name()))
print("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 list(session.items()):
print("{0:20} {1}".format(k, v))
except Session.DoesNotExist:
raise CommandError('Session not found')
except User.DoesNotExist:
raise CommandError('Associated user not found')
|