view antispam/receivers.py @ 1037:7e0c3cbd3cda

Fix bad select_related call. In Django 1.8, select_related now throws an error if you give it an invalid field. This was happening. Fix that query. Also noticed an extra query generated in the display_post template. Fixed.
author Brian Neal <bgneal@gmail.com>
date Tue, 29 Dec 2015 22:21:42 -0600
parents 9d6c2ed2f348
children
line wrap: on
line source
""" receivers.py - Signal receivers for login related events.

We log these events so that fail2ban can perform rate limiting.

"""
import logging

from django.contrib.auth.signals import (user_logged_in, user_logged_out,
        user_login_failed)


# Get the auth logger that is monitored by fail2ban:
logger = logging.getLogger('auth')


def login_callback(sender, request, user, **kwargs):
    """Signal callback function for a user logging in."""
    logger.info('User login signal: %s', user.username)


def logout_callback(sender, request, user, **kwargs):
    """Signal callback function for a user logging in."""

    if user:
        logger.info('User logout signal: %s', user.username)


def login_failed_callback(sender, credentials, **kwargs):
    """Signal callback for a login failure event."""
    logger.error('User login failed signal from %s: %s', sender,
                 credentials.get('username'))


user_logged_in.connect(login_callback, dispatch_uid='antispam.receivers')
user_logged_out.connect(logout_callback, dispatch_uid='antispam.receivers')
user_login_failed.connect(login_failed_callback,
                          dispatch_uid='antispam.receivers')