56 lines
2.0 KiB
Python
56 lines
2.0 KiB
Python
# -*- coding: utf-8 -*-
|
||
|
||
"""
|
||
When you get an error email from your Django app telling you someone got a
|
||
server error,
|
||
it’s not always easy to tell which user had a problem.
|
||
It might help your debugging to know or you might want to contact the user to
|
||
tell them you have fixed the problem.
|
||
"""
|
||
|
||
from django.contrib.auth.models import User
|
||
from django.contrib.sessions.models import Session
|
||
from django.core.management.base import BaseCommand, CommandError
|
||
from django.utils.translation import ugettext_lazy as _
|
||
from optparse import make_option
|
||
|
||
|
||
class Command(BaseCommand):
|
||
args = '<session_key session_key ...>'
|
||
help = 'If the session still exists find it and show the related User'
|
||
option_list = BaseCommand.option_list + (
|
||
make_option('--delete',
|
||
action='store_true',
|
||
dest='delete',
|
||
default=False,
|
||
help='Delete the Useraccount'),
|
||
make_option('--ban',
|
||
action='store_true',
|
||
dest='ban',
|
||
default=False,
|
||
help='Ban the Useraccount'),
|
||
)
|
||
|
||
|
||
def handle(self, *args, **options):
|
||
for session_key in args:
|
||
try:
|
||
session = Session.objects.get(session_key=session_key)
|
||
uid = session.get_decoded().get('_auth_user_id')
|
||
user = User.objects.get(pk=uid)
|
||
except Session.DoesNotExist:
|
||
self.stderr.write('Session "%s" does not exist' % session_key)
|
||
continue
|
||
except User.DoesNotExist:
|
||
self.stderr.write('Session "%s" has no registed User' % session_key)
|
||
continue
|
||
if options['delete']:
|
||
self.stdout.write('deleting %s'% user.username)
|
||
user.delete()
|
||
elif options['ban']:
|
||
self.stdout.write('banning %s' % user.username)
|
||
user.is_active = False
|
||
user.save()
|
||
else:
|
||
self.stdout.write("Username: %s" % user.username)
|