Skip to content

Commit

Permalink
centralise periodic tasks
Browse files Browse the repository at this point in the history
  • Loading branch information
jscott1989 committed Jun 16, 2016
1 parent 32b5726 commit e7f2a7c
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 18 deletions.
2 changes: 1 addition & 1 deletion src/admin/tasks.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"""Period tasks related to emails."""

from celery.decorators import periodic_task
from happening.tasks import periodic_task
from datetime import timedelta
from .models import Backup
from django.core.management.commands import dumpdata, flush, loaddata
Expand Down
2 changes: 1 addition & 1 deletion src/emails/tasks.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"""Period tasks related to emails."""
from datetime import datetime
from celery.decorators import periodic_task
from happening.tasks import periodic_task
from datetime import timedelta


Expand Down
2 changes: 1 addition & 1 deletion src/events/tasks.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"""Period tasks related to events."""

from celery.decorators import periodic_task
from happening.tasks import periodic_task
from datetime import timedelta
from .models import TicketOrder, WaitingListSubscription, TicketType
from payments.models import Payment
Expand Down
14 changes: 0 additions & 14 deletions src/happening/plugins.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,20 +99,6 @@ def plugin_enabled(plugin_id):
return setting.enabled


def every(*o_args, **o_kwargs):
"""Ensure that periodic tasks are only executed for enabled plugins."""
def every_inner(f):
from periodically.decorators import every as periodically_every

def every_inner_inner(*args, **kwargs):
# First check if this plugin is enabled, if not return
plugin_id = inspect.getmodule(f).__name__[:-len(".periodictasks")]
if not plugin_enabled(plugin_id):
return False
return f(*args, **kwargs)
return periodically_every(*o_args, **o_kwargs)(every_inner_inner)
return every_inner

registered_middlewares = {}


Expand Down
22 changes: 21 additions & 1 deletion src/happening/tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,27 @@
from happening.storage import storage
from datetime import timedelta
from django.utils import timezone
from celery.decorators import periodic_task
from celery.decorators import periodic_task as celery_periodic_task
import inspect
from happening.plugins import plugin_enabled


def periodic_task(*o_args, **o_kwargs):
"""Schedule a task to run periodically."""
def periodic_task_inner(f):
plugin_id = inspect.getmodule(f).__name__[:-len(".tasks")]

def periodic_task_inner_inner(*args, **kwargs):
# First check if this plugin is enabled, if not return
if not plugin_enabled(plugin_id):
return False
return f()
if 'name' not in o_kwargs:
o_kwargs['name'] = f.__name__
o_kwargs['name'] = '%s.tasks.%s' % (plugin_id, o_kwargs['name'])
return celery_periodic_task(*o_args, **o_kwargs)(
periodic_task_inner_inner)
return periodic_task_inner


@periodic_task(run_every=timedelta(days=1))
Expand Down

0 comments on commit e7f2a7c

Please sign in to comment.