diff options
Diffstat (limited to 'chimere')
-rw-r--r-- | chimere/admin.py | 13 | ||||
-rw-r--r-- | chimere/tasks.py | 40 |
2 files changed, 33 insertions, 20 deletions
diff --git a/chimere/admin.py b/chimere/admin.py index 9c65fac..b5697db 100644 --- a/chimere/admin.py +++ b/chimere/admin.py @@ -192,13 +192,12 @@ def export_to_osm(modeladmin, request, queryset): tasks.exporting(importer.pk) export_to_osm.short_description = _(u"Export to osm") -if 'tasks' in globals(): - class ImporterAdmin(admin.ModelAdmin): - list_display = ('importer_type', 'source', 'state', 'filtr') - list_filter = ('importer_type', 'source') - readonly_fields = ('state',) - actions = [importing, cancel_import, cancel_export] - admin.site.register(Importer, ImporterAdmin) +class ImporterAdmin(admin.ModelAdmin): + list_display = ('importer_type', 'source', 'state', 'filtr') + list_filter = ('importer_type', 'source') + readonly_fields = ('state',) + actions = [importing, cancel_import, cancel_export] +admin.site.register(Importer, ImporterAdmin) class NewsAdmin(admin.ModelAdmin): diff --git a/chimere/tasks.py b/chimere/tasks.py index 1405c5b..1d55d2d 100644 --- a/chimere/tasks.py +++ b/chimere/tasks.py @@ -18,31 +18,45 @@ # See the file COPYING for details. from django.conf import settings -if 'kombu.transport.django' not in settings.INSTALLED_APPS \ - or 'djcelery' not in settings.INSTALLED_APPS: - raise ImportError - -from celery.decorators import task +if 'kombu.transport.django' in settings.INSTALLED_APPS \ + and 'djcelery' in settings.INSTALLED_APPS: + from celery.decorators import task from django.core.exceptions import ObjectDoesNotExist from django.utils.translation import ugettext_lazy as _ from chimere.models import Importer + def single_instance_task(timeout): def task_exc(func): def wrapper(*args, **kwargs): - lock_id = "celery-single-instance-" + func.__name__ - acquire_lock = lambda: cache.add(lock_id, "true", timeout) - release_lock = lambda: cache.delete(lock_id) - if acquire_lock(): - try: - func() - finally: - release_lock() + return func() return wrapper return task_exc +if 'task' in globals(): + def single_instance_task(timeout): + def task_exc(func): + def wrapper(*args, **kwargs): + lock_id = "celery-single-instance-" + func.__name__ + acquire_lock = lambda: cache.add(lock_id, "true", timeout) + release_lock = lambda: cache.delete(lock_id) + if acquire_lock(): + try: + func() + finally: + release_lock() + return wrapper + return task_exc +else: + def task(): + def task_exc(func): + def wrapper(*args, **kwargs): + func(*args, **kwargs) + return wrapper + return task_exc + IMPORT_MESSAGES = { 'import_pending':[_(u"Import pending")], 'import_process':[_(u"Import processing")], |