content: import logging
  
  from django.contrib.auth.signals import user_login_failed
  from django.db.models.signals import post_save
  from django.dispatch import receiver
  
  from netbox.config import get_config
  from users.models import User, UserConfig
  from utilities.request import get_client_ip
  
  
  @receiver(user_login_failed)
  def log_user_login_failed(sender, credentials, request, **kwargs):
      logger = logging.getLogger('netbox.auth.login')
      username = credentials.get("username")
      if client_ip := get_client_ip(request):
          logger.info(f"Failed login attempt for username: {username} from {client_ip}")
      else:
          logger.warning(
              "Client IP address could not be determined for validation. Check that the HTTP server is properly "
              "configured to pass the required header(s)."
          )
          logger.info(f"Failed login attempt for username: {username}")
  
  
  @receiver(post_save, sender=User)
  def create_userconfig(instance, created, raw=False, **kwargs):
      """
      Automatically create a new UserConfig when a new User is created. Skip this if importing a user from a fixture.
      """
      if created and not raw:
          config = get_config()
          UserConfig(user=instance, data=config.DEFAULT_USER_PREFERENCES).save()
  