diff options
author | Étienne Loks <etienne.loks@peacefrogs.net> | 2012-08-03 11:27:05 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2012-08-03 11:27:05 +0200 |
commit | 36ca107c16c520bdd05a4615a3bbd2ecd159324a (patch) | |
tree | 29c4d4fe422b3b40c9c1e08d8ee5afba5292dadb | |
parent | 1334b649b6a33fe6c347f36c39ba224dc89a8814 (diff) | |
download | Chimère-36ca107c16c520bdd05a4615a3bbd2ecd159324a.tar.bz2 Chimère-36ca107c16c520bdd05a4615a3bbd2ecd159324a.zip |
Allow import without Celery
-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")], |