Refactor/remove signal receiver module

This commit is contained in:
Griatch 2019-04-14 22:53:38 +02:00
parent 26a7d0e9e8
commit b961f282c2
3 changed files with 32 additions and 17 deletions

View file

@ -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
)

View file

@ -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

View file

@ -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()