diff options
| -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")],  | 
