Merge pull request #3324 from volundmush/signal_refactor

SIGNAL_ACCOUNT_POST_LOGIN_FAIL is now properly used. Added a CUSTOM_S…
This commit is contained in:
Griatch 2023-11-23 18:47:36 +01:00 committed by GitHub
commit 1f25987cd6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 0 deletions

View file

@ -33,6 +33,7 @@ from evennia.server.signals import (
SIGNAL_ACCOUNT_POST_CREATE,
SIGNAL_OBJECT_POST_PUPPET,
SIGNAL_OBJECT_POST_UNPUPPET,
SIGNAL_ACCOUNT_POST_LOGIN_FAIL,
)
from evennia.server.throttle import Throttle
from evennia.typeclasses.attributes import ModelAttributeBackend, NickHandler
@ -676,6 +677,7 @@ class DefaultAccount(AccountDB, metaclass=TypeclassBase):
if session:
account = AccountDB.objects.get_account_from_name(username)
if account:
SIGNAL_ACCOUNT_POST_LOGIN_FAIL.send(sender=account, session=session)
account.at_failed_login(session)
return None, errors

View file

@ -21,6 +21,7 @@ without necessitating a full takeover of hooks that may be in high demand.
"""
from django.dispatch import Signal
from collections import defaultdict
# The sender is the created Account. This is triggered at the very end of
# Account.create() after the Account is created. Note that this will *not* fire
@ -91,6 +92,14 @@ SIGNAL_CHANNEL_POST_CREATE = Signal()
# Called just after at_traverse hook.
SIGNAL_EXIT_TRAVERSED = Signal()
# Used as a generic event emitter. Use to make your own signals easily in one place!
# To use it, import SIGNALS_CUSTOM and use it like a dictionary of Signal objects.
# Example:
# from evennia.utils.signals import SIGNALS_CUSTOM
# SIGNALS_CUSTOM['my_signal'].connect(my_callback)
# SIGNALS_CUSTOM['my_signal'].send(sender, **kwargs)
SIGNALS_CUSTOM: dict[str, Signal] = defaultdict(Signal)
# Django default signals (https://docs.djangoproject.com/en/4.1/topics/signals/)
from django.core.signals import request_finished # " ends.