moves hook signal in separate module

By moving signals in their own module, we can now follow Django guidelines and register signals on app.ready.
This commit is contained in:
Ilan Steemers
2015-10-05 13:46:47 +02:00
parent 693e182d90
commit 913edcb3da
3 changed files with 30 additions and 24 deletions
+3
View File
@@ -6,3 +6,6 @@ from .conf import Conf
class DjangoQConfig(AppConfig):
name = 'django_q'
verbose_name = Conf.LABEL
def ready(self):
from django_q.signals import call_hook
-24
View File
@@ -1,12 +1,7 @@
import logging
from django import get_version
import importlib
from django.core.urlresolvers import reverse
from django.utils.translation import ugettext_lazy as _
from django.db import models
from django.db.models.signals import post_save
from django.dispatch import receiver
from django.utils import timezone
from picklefield import PickledObjectField
from picklefield.fields import dbsafe_decode
@@ -91,25 +86,6 @@ class Task(models.Model):
ordering = ['-stopped']
@receiver(post_save, sender=Task)
def call_hook(sender, instance, **kwargs):
if instance.hook:
logger = logging.getLogger('django-q')
f = instance.hook
if not callable(f):
try:
module, func = f.rsplit('.', 1)
m = importlib.import_module(module)
f = getattr(m, func)
except (ValueError, ImportError, AttributeError):
logger.error(_('malformed return hook \'{}\' for [{}]').format(instance.hook, instance.name))
return
try:
f(instance)
except Exception as e:
logger.error(_('return hook {} failed on [{}] because {}').format(instance.hook, instance.name, e))
class SuccessManager(models.Manager):
def get_queryset(self):
return super(SuccessManager, self).get_queryset().filter(
+27
View File
@@ -0,0 +1,27 @@
import importlib
import logging
from django.utils.translation import ugettext_lazy as _
from django.db.models.signals import post_save
from django.dispatch import receiver
from django_q.models import Task
@receiver(post_save, sender=Task)
def call_hook(sender, instance, **kwargs):
if instance.hook:
logger = logging.getLogger('django-q')
f = instance.hook
if not callable(f):
try:
module, func = f.rsplit('.', 1)
m = importlib.import_module(module)
f = getattr(m, func)
except (ValueError, ImportError, AttributeError):
logger.error(_('malformed return hook \'{}\' for [{}]').format(instance.hook, instance.name))
return
try:
f(instance)
except Exception as e:
logger.error(_('return hook {} failed on [{}] because {}').format(instance.hook, instance.name, e))