mirror of
https://github.com/django-q2/django-q2.git
synced 2026-10-06 05:08:11 +08:00
Merge pull request #86 from Koed00/dev
moves hook signal in separate module
This commit is contained in:
@@ -6,3 +6,6 @@ from .conf import Conf
|
|||||||
class DjangoQConfig(AppConfig):
|
class DjangoQConfig(AppConfig):
|
||||||
name = 'django_q'
|
name = 'django_q'
|
||||||
verbose_name = Conf.LABEL
|
verbose_name = Conf.LABEL
|
||||||
|
|
||||||
|
def ready(self):
|
||||||
|
from django_q.signals import call_hook
|
||||||
@@ -1,12 +1,7 @@
|
|||||||
import logging
|
|
||||||
|
|
||||||
from django import get_version
|
from django import get_version
|
||||||
import importlib
|
|
||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.db.models.signals import post_save
|
|
||||||
from django.dispatch import receiver
|
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from picklefield import PickledObjectField
|
from picklefield import PickledObjectField
|
||||||
from picklefield.fields import dbsafe_decode
|
from picklefield.fields import dbsafe_decode
|
||||||
@@ -91,25 +86,6 @@ class Task(models.Model):
|
|||||||
ordering = ['-stopped']
|
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):
|
class SuccessManager(models.Manager):
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
return super(SuccessManager, self).get_queryset().filter(
|
return super(SuccessManager, self).get_queryset().filter(
|
||||||
|
|||||||
@@ -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))
|
||||||
Reference in New Issue
Block a user