OnlineJudge/account/signals.py

22 lines
813 B
Python

from django.utils.timezone import now
from django.dispatch import receiver
from django.contrib.auth.signals import user_logged_in, user_logged_out
@receiver(user_logged_in)
def add_user_session(sender, request, user, **kwargs):
request.session["ip"] = request.META.get('REMOTE_ADDR', '')
request.session["user_agent"] = request.META.get('HTTP_USER_AGENT', '')
request.session["last_login"] = now()
if request.session.session_key not in user.session_keys:
user.session_keys.append(request.session.session_key)
user.save()
@receiver(user_logged_out)
def delete_user_session(sender, request, user, **kwargs):
# user may be None
if user and request.session.session_key in user.session_keys:
user.session_keys.remove(request.session.session_key)
user.save()