From b961f282c247a88be52e7d169c1ffbb5282b5452 Mon Sep 17 00:00:00 2001 From: Griatch Date: Sun, 14 Apr 2019 22:53:38 +0200 Subject: [PATCH] Refactor/remove signal receiver module --- evennia/server/signals.py | 11 +++++++++++ evennia/typeclasses/models.py | 25 +++++++++++++++++++++---- evennia/typeclasses/signals.py | 13 ------------- 3 files changed, 32 insertions(+), 17 deletions(-) delete mode 100644 evennia/typeclasses/signals.py diff --git a/evennia/server/signals.py b/evennia/server/signals.py index 8ea0c8e551..975b82ee5c 100644 --- a/evennia/server/signals.py +++ b/evennia/server/signals.py @@ -68,8 +68,19 @@ from django.db.models.signals import ( pre_delete, # Sent before an object is deleted. post_delete, # after " m2m_changed, # Sent when a ManyToManyField changes. + pre_migrate, # Sent before migration starts + post_migrate, # after " + pre_init, # Sent at start of typeclass __init__ (before at_init) + post_init, # end ) from django.core.signals import ( request_started, # Sent when HTTP request begins. request_finished, # " ends. ) +from django.test.signals import ( + setting_changed, # Sent when setting changes from override + template_rendered, # Sent when test system renders template +) +from django.db.backends.signals import ( + connection_created, # Sent when making initial connection to database +) diff --git a/evennia/typeclasses/models.py b/evennia/typeclasses/models.py index 25f3da4a37..1f7e068f9d 100644 --- a/evennia/typeclasses/models.py +++ b/evennia/typeclasses/models.py @@ -50,7 +50,6 @@ from evennia.utils.utils import ( is_iter, inherits_from, lazy_property, class_from_module) from evennia.utils.logger import log_trace -from .signals import remove_attributes_on_delete, post_save __all__ = ("TypedObject", ) @@ -61,11 +60,29 @@ _TYPECLASS_AGGRESSIVE_CACHE = settings.TYPECLASS_AGGRESSIVE_CACHE _GA = object.__getattribute__ _SA = object.__setattr__ -#------------------------------------------------------------ + +# signal receivers. Connected in __new__ + +def call_at_first_save(sender, instance, created, **kwargs): + """ + Receives a signal just after the object is saved. + """ + if created: + instance.at_first_save() + + +def remove_attributes_on_delete(sender, instance, **kwargs): + """ + Wipe object's Attributes when it's deleted + """ + instance.db_attributes.all().delete() + + +# ------------------------------------------------------------ # # Typed Objects # -#------------------------------------------------------------ +# ------------------------------------------------------------ # @@ -101,7 +118,7 @@ class TypeclassBase(SharedMemoryModelBase): new_class = ModelBase.__new__(cls, name, bases, attrs) # attach signals - signals.post_save.connect(post_save, sender=new_class) + signals.post_save.connect(call_at_first_save, sender=new_class) signals.pre_delete.connect(remove_attributes_on_delete, sender=new_class) return new_class diff --git a/evennia/typeclasses/signals.py b/evennia/typeclasses/signals.py deleted file mode 100644 index 49a2457066..0000000000 --- a/evennia/typeclasses/signals.py +++ /dev/null @@ -1,13 +0,0 @@ - - -# signal receivers. Assigned in __new__ -def post_save(sender, instance, created, **kwargs): - """ - Receives a signal just after the object is saved. - """ - if created: - instance.at_first_save() - - -def remove_attributes_on_delete(sender, instance, **kwargs): - instance.db_attributes.all().delete()