[Python-modules-commits] [django-celery] 01/10: Import django-celery_3.1.17.orig.tar.gz
Michael Fladischer
fladi at moszumanska.debian.org
Mon Oct 19 07:17:46 UTC 2015
This is an automated email from the git hooks/post-receive script.
fladi pushed a commit to annotated tag debian/3.1.17-1
in repository django-celery.
commit 58751dd4216a267ccad1f8b5932487c51af036e4
Author: Michael Fladischer <FladischerMichael at fladi.at>
Date: Mon Oct 19 08:53:14 2015 +0200
Import django-celery_3.1.17.orig.tar.gz
---
AUTHORS | 1 +
Changelog | 31 ++
LICENSE | 4 +-
PKG-INFO | 4 +-
README | 2 +-
README.rst | 2 +-
django_celery.egg-info/PKG-INFO | 4 +-
django_celery.egg-info/SOURCES.txt | 8 +-
djcelery/__init__.py | 20 +-
djcelery/backends/cache.py | 2 +-
djcelery/compat.py | 17 +-
djcelery/management/base.py | 14 +-
djcelery/management/commands/celery.py | 6 +-
djcelery/management/commands/celerybeat.py | 6 +-
djcelery/management/commands/celerycam.py | 6 +-
djcelery/management/commands/celeryd.py | 6 +-
djcelery/management/commands/celerymon.py | 4 +-
djcelery/management/commands/djcelerymon.py | 6 +-
djcelery/migrations/0001_initial.py | 459 ++++++++++++---------
djcelery/migrations/__init__.py | 16 +
djcelery/models.py | 22 +-
djcelery/mon.py | 4 +-
djcelery/picklefield.py | 20 +-
djcelery/snapshot.py | 4 +-
.../0001_initial.py | 2 +-
.../0002_v25_changes.py | 0
.../0003_v26_changes.py | 0
.../0004_v30_changes.py | 0
.../{migrations => south_migrations}/__init__.py | 0
djcelery/tests/test_schedulers.py | 21 +-
djcelery/tests/test_snapshot.py | 11 +-
djcelery/utils.py | 16 +-
docs/_ext/applyxrefs.py | 2 -
docs/changelog.rst | 31 ++
docs/conf.py | 6 +-
docs/settings.py | 2 +-
extra/release/doc4allmods | 8 +-
setup.py | 11 +-
tests/settings.py | 6 +-
39 files changed, 488 insertions(+), 296 deletions(-)
diff --git a/AUTHORS b/AUTHORS
index 73c2bda..e8a5c4d 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -24,6 +24,7 @@ Darjus Loktevic <darjus at amazon.com>
David Fischer <david.fischer.ch at gmail.com>
David Ziegler <david.ziegler at gmail.com>
Diego Andres Sanabria Martin <diegueus9 at gmail.com>
+Dmitriy Krasilnikov <krasilnikov.d.o at gmail.com>
Donald Stufft <donald.stufft at gmail.com>
Eldon Stegall
Eugene Nagornyi <ideviantik at gmail.com>
diff --git a/Changelog b/Changelog
index 950faa5..dc06c45 100644
--- a/Changelog
+++ b/Changelog
@@ -5,6 +5,37 @@
.. contents::
:local:
+.. _version-3.1.17:
+
+3.1.17
+======
+:release-date: 2015-10-09 04:02 P.M PDT
+
+- Adds Django migrations
+
+ ... warning::
+
+ Old South migrations have been moved to ``djcelery.south_migrations``,
+ so if you still use South you need to configure the new location
+ in ``settings.py``:
+
+ .. code-block:: python
+
+ SOUTH_MIGRATION_MODULES = {
+ 'djcelery': 'djcelery.south_migrations',
+ }
+
+- ``djcelery.picklefield`` now compatible with Django 1.8
+
+ Fix taken upstream from ``django-picklefield``.
+
+- Fixed timezone issues when CELERY_ENABLE_UTC not set.
+
+ Fix contributed by Dmitriy Krasilnikov.
+
+- Fixed Python 3 compatibility issue in ``setup_loader``
+ (Issue #344, Issue #346).
+
.. _version-3.1.16:
3.1.16
diff --git a/LICENSE b/LICENSE
index 80813f2..96f7f04 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
-Copyright (c) 2012-2013 GoPivotal, Inc. All Rights Reserved.
+Copyright (c) 2015 Ask Solem. All Rights Reserved.
+Copyright (c) 2012-2014 GoPivotal, Inc. All Rights Reserved.
Copyright (c) 2009-2012 Ask Solem. All Rights Reserved.
-All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
diff --git a/PKG-INFO b/PKG-INFO
index 61b7427..ab4dc20 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: django-celery
-Version: 3.1.16
+Version: 3.1.17
Summary: Old django celery integration project.
Home-page: http://celeryproject.org
Author: Ask Solem
@@ -12,7 +12,7 @@ Description: ===============================================
.. image:: http://cloud.github.com/downloads/celery/celery/celery_128.png
- :Version: 3.1.16
+ :Version: 3.1.17
:Web: http://celeryproject.org/
:Download: http://pypi.python.org/pypi/django-celery/
:Source: http://github.com/celery/django-celery/
diff --git a/README b/README
index 8ee489c..d98f5d4 100644
--- a/README
+++ b/README
@@ -4,7 +4,7 @@
.. image:: http://cloud.github.com/downloads/celery/celery/celery_128.png
-:Version: 3.1.16
+:Version: 3.1.17
:Web: http://celeryproject.org/
:Download: http://pypi.python.org/pypi/django-celery/
:Source: http://github.com/celery/django-celery/
diff --git a/README.rst b/README.rst
index 8ee489c..d98f5d4 100644
--- a/README.rst
+++ b/README.rst
@@ -4,7 +4,7 @@
.. image:: http://cloud.github.com/downloads/celery/celery/celery_128.png
-:Version: 3.1.16
+:Version: 3.1.17
:Web: http://celeryproject.org/
:Download: http://pypi.python.org/pypi/django-celery/
:Source: http://github.com/celery/django-celery/
diff --git a/django_celery.egg-info/PKG-INFO b/django_celery.egg-info/PKG-INFO
index 61b7427..ab4dc20 100644
--- a/django_celery.egg-info/PKG-INFO
+++ b/django_celery.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: django-celery
-Version: 3.1.16
+Version: 3.1.17
Summary: Old django celery integration project.
Home-page: http://celeryproject.org
Author: Ask Solem
@@ -12,7 +12,7 @@ Description: ===============================================
.. image:: http://cloud.github.com/downloads/celery/celery/celery_128.png
- :Version: 3.1.16
+ :Version: 3.1.17
:Web: http://celeryproject.org/
:Download: http://pypi.python.org/pypi/django-celery/
:Source: http://github.com/celery/django-celery/
diff --git a/django_celery.egg-info/SOURCES.txt b/django_celery.egg-info/SOURCES.txt
index b47266d..7f0d416 100644
--- a/django_celery.egg-info/SOURCES.txt
+++ b/django_celery.egg-info/SOURCES.txt
@@ -51,12 +51,14 @@ djcelery/management/commands/celeryd_multi.py
djcelery/management/commands/celerymon.py
djcelery/management/commands/djcelerymon.py
djcelery/migrations/0001_initial.py
-djcelery/migrations/0002_v25_changes.py
-djcelery/migrations/0003_v26_changes.py
-djcelery/migrations/0004_v30_changes.py
djcelery/migrations/__init__.py
djcelery/monproj/__init__.py
djcelery/monproj/urls.py
+djcelery/south_migrations/0001_initial.py
+djcelery/south_migrations/0002_v25_changes.py
+djcelery/south_migrations/0003_v26_changes.py
+djcelery/south_migrations/0004_v30_changes.py
+djcelery/south_migrations/__init__.py
djcelery/static/djcelery/style.css
djcelery/templates/admin/djcelery/change_list.html
djcelery/templates/djcelery/confirm_rate_limit.html
diff --git a/djcelery/__init__.py b/djcelery/__init__.py
index 0821b09..d429084 100644
--- a/djcelery/__init__.py
+++ b/djcelery/__init__.py
@@ -1,11 +1,12 @@
"""Old django celery integration project."""
-# :copyright: (c) 2009 - 2012 by Ask Solem.
+# :copyright: (c) 2009 - 2015 by Ask Solem.
# :license: BSD, see LICENSE for more details.
from __future__ import absolute_import, unicode_literals
import os
+import sys
-VERSION = (3, 1, 16)
+VERSION = (3, 1, 17)
__version__ = '.'.join(map(str, VERSION[0:3])) + ''.join(VERSION[3:])
__author__ = 'Ask Solem'
__contact__ = 'ask at celeryproject.org'
@@ -16,7 +17,18 @@ __license__ = 'BSD (3 clause)'
# -eof meta-
-def setup_loader():
- os.environ.setdefault('CELERY_LOADER', 'djcelery.loaders.DjangoLoader')
+if sys.version_info[0] == 3:
+
+ def setup_loader():
+ os.environ.setdefault(
+ 'CELERY_LOADER', 'djcelery.loaders.DjangoLoader',
+ )
+
+else:
+
+ def setup_loader(): # noqa
+ os.environ.setdefault(
+ b'CELERY_LOADER', b'djcelery.loaders.DjangoLoader',
+ )
from celery import current_app as celery # noqa
diff --git a/djcelery/backends/cache.py b/djcelery/backends/cache.py
index 7006bf0..40588bb 100644
--- a/djcelery/backends/cache.py
+++ b/djcelery/backends/cache.py
@@ -37,7 +37,7 @@ class DjangoMemcacheWrapper(object):
# Check if django is using memcache as the cache backend. If so, wrap the
# cache object in a DjangoMemcacheWrapper for Django < 1.2 that fixes a bug
# with retrieving pickled data.
-from django.core.cache.backends.base import InvalidCacheBackendError
+from django.core.cache.backends.base import InvalidCacheBackendError # noqa
try:
from django.core.cache.backends.memcached import CacheClass
except (ImportError, AttributeError, InvalidCacheBackendError):
diff --git a/djcelery/compat.py b/djcelery/compat.py
index 053f0ca..fc797a3 100644
--- a/djcelery/compat.py
+++ b/djcelery/compat.py
@@ -1,7 +1,10 @@
from __future__ import absolute_import
+import os
import sys
+from kombu.utils.encoding import bytes_to_str, str_to_bytes
+
PY2 = sys.version_info[0] == 2
PY3 = sys.version_info[0] == 3
@@ -25,7 +28,17 @@ def python_2_unicode_compatible(cls):
if PY3:
unicode = str
- itervalues = lambda x: x.values()
+
+ def itervalues(x):
+ return x.values()
+
+ def setenv(k, v):
+ os.environ[bytes_to_str(k)] = bytes_to_str(v)
else:
unicode = unicode
- itervalues = lambda x: x.itervalues()
+
+ def itervalues(x): # noqa
+ return x.itervalues()
+
+ def setenv(k, v): # noqa
+ os.environ[str_to_bytes(k)] = str_to_bytes(v)
diff --git a/djcelery/management/base.py b/djcelery/management/base.py
index 2949acc..11520f1 100644
--- a/djcelery/management/base.py
+++ b/djcelery/management/base.py
@@ -1,13 +1,13 @@
from __future__ import absolute_import, unicode_literals
+import celery
+import djcelery
import django
-import os
import sys
from django.core.management.base import BaseCommand
-import celery
-import djcelery
+from djcelery.compat import setenv
DB_SHARED_THREAD = """\
DatabaseWrapper objects created in a thread can only \
@@ -39,8 +39,8 @@ def patch_thread_ident():
self._thread_ident = _get_ident()
def _validate_thread_sharing(self):
- if (not self.allow_thread_sharing
- and self._thread_ident != _get_ident()):
+ if (not self.allow_thread_sharing and
+ self._thread_ident != _get_ident()):
raise DatabaseError(
DB_SHARED_THREAD % (
self.alias, self._thread_ident, _get_ident()),
@@ -75,7 +75,7 @@ class CeleryCommand(BaseCommand):
super(CeleryCommand, self).execute(*args, **options)
def set_broker(self, broker):
- os.environ['CELERY_BROKER_URL'] = broker
+ setenv('CELERY_BROKER_URL', broker)
def run_from_argv(self, argv):
self.handle_default_options(argv[2:])
@@ -90,7 +90,7 @@ class CeleryCommand(BaseCommand):
# called with the resulting options parsed by optparse.
if '--settings=' in arg:
_, settings_module = arg.split('=')
- os.environ['DJANGO_SETTINGS_MODULE'] = settings_module
+ setenv('DJANGO_SETTINGS_MODULE', settings_module)
elif '--pythonpath=' in arg:
_, pythonpath = arg.split('=')
sys.path.insert(0, pythonpath)
diff --git a/djcelery/management/commands/celery.py b/djcelery/management/commands/celery.py
index f0c8b29..4839e0b 100644
--- a/djcelery/management/commands/celery.py
+++ b/djcelery/management/commands/celery.py
@@ -11,9 +11,9 @@ base = celery.CeleryCommand(app=app)
class Command(CeleryCommand):
"""The celery command."""
help = 'celery commands, see celery help'
- options = (CeleryCommand.options
- + base.get_options()
- + base.preload_options)
+ options = (CeleryCommand.options +
+ base.get_options() +
+ base.preload_options)
def run_from_argv(self, argv):
argv = self.handle_default_options(argv)
diff --git a/djcelery/management/commands/celerybeat.py b/djcelery/management/commands/celerybeat.py
index c91a134..e4573dc 100644
--- a/djcelery/management/commands/celerybeat.py
+++ b/djcelery/management/commands/celerybeat.py
@@ -15,9 +15,9 @@ beat = beat.beat(app=app)
class Command(CeleryCommand):
"""Run the celery periodic task scheduler."""
- options = (CeleryCommand.options
- + beat.get_options()
- + beat.preload_options)
+ options = (CeleryCommand.options +
+ beat.get_options() +
+ beat.preload_options)
help = 'Old alias to the "celery beat" command.'
def handle(self, *args, **options):
diff --git a/djcelery/management/commands/celerycam.py b/djcelery/management/commands/celerycam.py
index 8686a5a..2849b44 100644
--- a/djcelery/management/commands/celerycam.py
+++ b/djcelery/management/commands/celerycam.py
@@ -15,9 +15,9 @@ ev = events.events(app=app)
class Command(CeleryCommand):
"""Run the celery curses event viewer."""
- options = (CeleryCommand.options
- + ev.get_options()
- + ev.preload_options)
+ options = (CeleryCommand.options +
+ ev.get_options() +
+ ev.preload_options)
help = 'Takes snapshots of the clusters state to the database.'
def handle(self, *args, **options):
diff --git a/djcelery/management/commands/celeryd.py b/djcelery/management/commands/celeryd.py
index 586fa74..0ed4c40 100644
--- a/djcelery/management/commands/celeryd.py
+++ b/djcelery/management/commands/celeryd.py
@@ -16,9 +16,9 @@ worker = worker.worker(app=app)
class Command(CeleryCommand):
"""Run the celery daemon."""
help = 'Old alias to the "celery worker" command.'
- options = (CeleryCommand.options
- + worker.get_options()
- + worker.preload_options)
+ options = (CeleryCommand.options +
+ worker.get_options() +
+ worker.preload_options)
def handle(self, *args, **options):
worker.check_args(args)
diff --git a/djcelery/management/commands/celerymon.py b/djcelery/management/commands/celerymon.py
index 7c42484..91317a4 100644
--- a/djcelery/management/commands/celerymon.py
+++ b/djcelery/management/commands/celerymon.py
@@ -30,8 +30,8 @@ or if you're still using easy_install (shame on you!)
class Command(CeleryCommand):
"""Run the celery monitor."""
- options = (CeleryCommand.options
- + (mon and mon.get_options() + mon.preload_options or ()))
+ options = (CeleryCommand.options +
+ (mon and mon.get_options() + mon.preload_options or ()))
help = 'Run the celery monitor'
def handle(self, *args, **options):
diff --git a/djcelery/management/commands/djcelerymon.py b/djcelery/management/commands/djcelerymon.py
index 9310155..29a09fc 100644
--- a/djcelery/management/commands/djcelerymon.py
+++ b/djcelery/management/commands/djcelerymon.py
@@ -32,9 +32,9 @@ class WebserverThread(threading.Thread):
class Command(CeleryCommand):
"""Run the celery curses event viewer."""
args = '[optional port number, or ipaddr:port]'
- options = (runserver.Command.option_list
- + ev.get_options()
- + ev.preload_options)
+ options = (runserver.Command.option_list +
+ ev.get_options() +
+ ev.preload_options)
help = 'Starts Django Admin instance and celerycam in the same process.'
# see http://code.djangoproject.com/changeset/13319.
stdout, stderr = sys.stdout, sys.stderr
diff --git a/djcelery/migrations/0001_initial.py b/djcelery/migrations/0001_initial.py
index ffe6049..6b8e292 100644
--- a/djcelery/migrations/0001_initial.py
+++ b/djcelery/migrations/0001_initial.py
@@ -1,206 +1,265 @@
-# encoding: utf-8
-from __future__ import absolute_import
+# -*- coding: utf-8 -*-
+# Generated by Django 1.10.dev20151005181923 on 2015-10-09 22:39
+from __future__ import absolute_import, unicode_literals
-import datetime
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-from django.db import DatabaseError
+from django.db import migrations, models
+import django.db.models.deletion
+import djcelery.picklefield
-class Migration(SchemaMigration):
+class Migration(migrations.Migration):
- def forwards(self, orm):
+ initial = True
- # Adding model 'TaskMeta'
- db.create_table('celery_taskmeta', (
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('task_id', self.gf('django.db.models.fields.CharField')(unique=True, max_length=255)),
- ('status', self.gf('django.db.models.fields.CharField')(default='PENDING', max_length=50)),
- ('result', self.gf('djcelery.picklefield.PickledObjectField')(default=None, null=True)),
- ('date_done', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, blank=True)),
- ('traceback', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),))
- db.send_create_signal('djcelery', ['TaskMeta'])
+ dependencies = [
+ ]
- # Adding model 'TaskSetMeta'
- db.create_table('celery_tasksetmeta', (
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('taskset_id', self.gf('django.db.models.fields.CharField')(unique=True, max_length=255)),
- ('result', self.gf('djcelery.picklefield.PickledObjectField')()),
- ('date_done', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, blank=True)),))
- db.send_create_signal('djcelery', ['TaskSetMeta'])
-
- # Adding model 'IntervalSchedule'
- db.create_table('djcelery_intervalschedule', (
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('every', self.gf('django.db.models.fields.IntegerField')()),
- ('period', self.gf('django.db.models.fields.CharField')(max_length=24)),))
- db.send_create_signal('djcelery', ['IntervalSchedule'])
-
- # Adding model 'CrontabSchedule'
- db.create_table('djcelery_crontabschedule', (
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('minute', self.gf('django.db.models.fields.CharField')(default='*', max_length=64)),
- ('hour', self.gf('django.db.models.fields.CharField')(default='*', max_length=64)),
- ('day_of_week', self.gf('django.db.models.fields.CharField')(default='*', max_length=64)),))
- db.send_create_signal('djcelery', ['CrontabSchedule'])
-
- # Adding model 'PeriodicTasks'
- db.create_table('djcelery_periodictasks', (
- ('ident', self.gf('django.db.models.fields.SmallIntegerField')(default=1, unique=True, primary_key=True)),
- ('last_update', self.gf('django.db.models.fields.DateTimeField')()),))
- db.send_create_signal('djcelery', ['PeriodicTasks'])
-
- # Adding model 'PeriodicTask'
- db.create_table('djcelery_periodictask', (
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('name', self.gf('django.db.models.fields.CharField')(unique=True, max_length=200)),
- ('task', self.gf('django.db.models.fields.CharField')(max_length=200)),
- ('interval', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['djcelery.IntervalSchedule'], null=True, blank=True)),
- ('crontab', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['djcelery.CrontabSchedule'], null=True, blank=True)),
- ('args', self.gf('django.db.models.fields.TextField')(default='[]', blank=True)),
- ('kwargs', self.gf('django.db.models.fields.TextField')(default='{}', blank=True)),
- ('queue', self.gf('django.db.models.fields.CharField')(default=None, max_length=200, null=True, blank=True)),
- ('exchange', self.gf('django.db.models.fields.CharField')(default=None, max_length=200, null=True, blank=True)),
- ('routing_key', self.gf('django.db.models.fields.CharField')(default=None, max_length=200, null=True, blank=True)),
- ('expires', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
- ('enabled', self.gf('django.db.models.fields.BooleanField')(default=True)),
- ('last_run_at', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
- ('total_run_count', self.gf('django.db.models.fields.PositiveIntegerField')(default=0)),
- ('date_changed', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, blank=True)),))
- db.send_create_signal('djcelery', ['PeriodicTask'])
-
- # Adding model 'WorkerState'
- db.create_table('djcelery_workerstate', (
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('hostname', self.gf('django.db.models.fields.CharField')(unique=True, max_length=255)),
- ('last_heartbeat', self.gf('django.db.models.fields.DateTimeField')(null=True, db_index=True)),))
- db.send_create_signal('djcelery', ['WorkerState'])
-
- # Adding model 'TaskState'
- db.create_table('djcelery_taskstate', (
- ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('state', self.gf('django.db.models.fields.CharField')(max_length=64, db_index=True)),
- ('task_id', self.gf('django.db.models.fields.CharField')(unique=True, max_length=36)),
- ('name', self.gf('django.db.models.fields.CharField')(max_length=200, null=True, db_index=True)),
- ('tstamp', self.gf('django.db.models.fields.DateTimeField')(db_index=True)),
- ('args', self.gf('django.db.models.fields.TextField')(null=True)),
- ('kwargs', self.gf('django.db.models.fields.TextField')(null=True)),
- ('eta', self.gf('django.db.models.fields.DateTimeField')(null=True)),
- ('expires', self.gf('django.db.models.fields.DateTimeField')(null=True)),
- ('result', self.gf('django.db.models.fields.TextField')(null=True)),
- ('traceback', self.gf('django.db.models.fields.TextField')(null=True)),
- ('runtime', self.gf('django.db.models.fields.FloatField')(null=True)),
- ('retries', self.gf('django.db.models.fields.IntegerField')(default=0)),
- ('worker', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['djcelery.WorkerState'], null=True)),
- ('hidden', self.gf('django.db.models.fields.BooleanField')(default=False, db_index=True)),))
- db.send_create_signal('djcelery', ['TaskState'])
-
-
- def backwards(self, orm):
-
- # Deleting model 'TaskMeta'
- db.delete_table('celery_taskmeta')
-
- # Deleting model 'TaskSetMeta'
- db.delete_table('celery_tasksetmeta')
-
- # Deleting model 'IntervalSchedule'
- db.delete_table('djcelery_intervalschedule')
-
- # Deleting model 'CrontabSchedule'
- db.delete_table('djcelery_crontabschedule')
-
- # Deleting model 'PeriodicTasks'
- db.delete_table('djcelery_periodictasks')
-
- # Deleting model 'PeriodicTask'
- db.delete_table('djcelery_periodictask')
-
- # Deleting model 'WorkerState'
- db.delete_table('djcelery_workerstate')
-
- # Deleting model 'TaskState'
- db.delete_table('djcelery_taskstate')
-
-
- models = {
- 'djcelery.crontabschedule': {
- 'Meta': {'object_name': 'CrontabSchedule'},
- 'day_of_week': ('django.db.models.fields.CharField', [], {'default': "'*'", 'max_length': '64'}),
- 'hour': ('django.db.models.fields.CharField', [], {'default': "'*'", 'max_length': '64'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'minute': ('django.db.models.fields.CharField', [], {'default': "'*'", 'max_length': '64'})
- },
- 'djcelery.intervalschedule': {
- 'Meta': {'object_name': 'IntervalSchedule'},
- 'every': ('django.db.models.fields.IntegerField', [], {}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'period': ('django.db.models.fields.CharField', [], {'max_length': '24'})
- },
- 'djcelery.periodictask': {
- 'Meta': {'object_name': 'PeriodicTask'},
- 'args': ('django.db.models.fields.TextField', [], {'default': "'[]'", 'blank': 'True'}),
- 'crontab': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djcelery.CrontabSchedule']", 'null': 'True', 'blank': 'True'}),
- 'date_changed': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
- 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'exchange': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'expires': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'interval': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djcelery.IntervalSchedule']", 'null': 'True', 'blank': 'True'}),
- 'kwargs': ('django.db.models.fields.TextField', [], {'default': "'{}'", 'blank': 'True'}),
- 'last_run_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '200'}),
- 'queue': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'routing_key': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '200', 'null': 'True', 'blank': 'True'}),
- 'task': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
- 'total_run_count': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'})
- },
- 'djcelery.periodictasks': {
- 'Meta': {'object_name': 'PeriodicTasks'},
- 'ident': ('django.db.models.fields.SmallIntegerField', [], {'default': '1', 'unique': 'True', 'primary_key': 'True'}),
- 'last_update': ('django.db.models.fields.DateTimeField', [], {})
- },
- 'djcelery.taskmeta': {
- 'Meta': {'object_name': 'TaskMeta', 'db_table': "'celery_taskmeta'"},
- 'date_done': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'result': ('djcelery.picklefield.PickledObjectField', [], {'default': 'None', 'null': 'True'}),
- 'status': ('django.db.models.fields.CharField', [], {'default': "'PENDING'", 'max_length': '50'}),
- 'task_id': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'traceback': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'})
- },
- 'djcelery.tasksetmeta': {
- 'Meta': {'object_name': 'TaskSetMeta', 'db_table': "'celery_tasksetmeta'"},
- 'date_done': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'result': ('djcelery.picklefield.PickledObjectField', [], {}),
- 'taskset_id': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
- },
- 'djcelery.taskstate': {
- 'Meta': {'ordering': "['-tstamp']", 'object_name': 'TaskState'},
- 'args': ('django.db.models.fields.TextField', [], {'null': 'True'}),
- 'eta': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'expires': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
- 'hidden': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'db_index': 'True'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'kwargs': ('django.db.models.fields.TextField', [], {'null': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'db_index': 'True'}),
- 'result': ('django.db.models.fields.TextField', [], {'null': 'True'}),
- 'retries': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
- 'runtime': ('django.db.models.fields.FloatField', [], {'null': 'True'}),
- 'state': ('django.db.models.fields.CharField', [], {'max_length': '64', 'db_index': 'True'}),
- 'task_id': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '36'}),
- 'traceback': ('django.db.models.fields.TextField', [], {'null': 'True'}),
- 'tstamp': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
- 'worker': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['djcelery.WorkerState']", 'null': 'True'})
- },
- 'djcelery.workerstate': {
- 'Meta': {'ordering': "['-last_heartbeat']", 'object_name': 'WorkerState'},
- 'hostname': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'last_heartbeat': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'db_index': 'True'})
- }
- }
-
- complete_apps = ['djcelery']
+ operations = [
+ migrations.CreateModel(
+ name='CrontabSchedule',
+ fields=[
+ ('id', models.AutoField(
+ auto_created=True, primary_key=True,
+ serialize=False, verbose_name='ID')),
+ ('minute', models.CharField(
+ default='*', max_length=64, verbose_name='minute')),
+ ('hour', models.CharField(
+ default='*', max_length=64, verbose_name='hour')),
+ ('day_of_week', models.CharField(
+ default='*', max_length=64, verbose_name='day of week')),
+ ('day_of_month', models.CharField(
+ default='*', max_length=64, verbose_name='day of month')),
+ ('month_of_year', models.CharField(
+ default='*', max_length=64, verbose_name='month of year')),
+ ],
+ options={
+ 'ordering': [
+ 'month_of_year', 'day_of_month',
+ 'day_of_week', 'hour', 'minute'],
+ 'verbose_name': 'crontab',
+ 'verbose_name_plural': 'crontabs',
+ },
+ ),
+ migrations.CreateModel(
+ name='IntervalSchedule',
+ fields=[
+ ('id', models.AutoField(
+ auto_created=True, primary_key=True,
+ serialize=False, verbose_name='ID')),
+ ('every', models.IntegerField(verbose_name='every')),
+ ('period', models.CharField(
+ choices=[
+ ('days', 'Days'),
+ ('hours', 'Hours'),
+ ('minutes', 'Minutes'),
+ ('seconds', 'Seconds'),
+ ('microseconds', 'Microseconds')],
+ max_length=24, verbose_name='period')),
+ ],
+ options={
+ 'ordering': ['period', 'every'],
+ 'verbose_name': 'interval',
+ 'verbose_name_plural': 'intervals',
+ },
+ ),
+ migrations.CreateModel(
+ name='PeriodicTask',
+ fields=[
+ ('id', models.AutoField(
+ auto_created=True, primary_key=True,
+ serialize=False, verbose_name='ID')),
+ ('name', models.CharField(
+ help_text='Useful description', max_length=200,
+ unique=True, verbose_name='name')),
+ ('task', models.CharField(
+ max_length=200, verbose_name='task name')),
+ ('args', models.TextField(
+ blank=True, default='[]',
+ help_text='JSON encoded positional arguments',
+ verbose_name='Arguments')),
+ ('kwargs', models.TextField(
+ blank=True, default='{}',
+ help_text='JSON encoded keyword arguments',
+ verbose_name='Keyword arguments')),
+ ('queue', models.CharField(
+ blank=True, default=None,
+ help_text='Queue defined in CELERY_QUEUES',
+ max_length=200, null=True, verbose_name='queue')),
+ ('exchange', models.CharField(
+ blank=True, default=None, max_length=200,
+ null=True, verbose_name='exchange')),
+ ('routing_key', models.CharField(
+ blank=True, default=None, max_length=200,
+ null=True, verbose_name='routing key')),
+ ('expires', models.DateTimeField(
+ blank=True, null=True, verbose_name='expires')),
+ ('enabled', models.BooleanField(
+ default=True, verbose_name='enabled')),
+ ('last_run_at', models.DateTimeField(
+ blank=True, editable=False, null=True)),
+ ('total_run_count', models.PositiveIntegerField(
+ default=0, editable=False)),
+ ('date_changed', models.DateTimeField(
+ auto_now=True)),
+ ('description', models.TextField(
+ blank=True, verbose_name='description')),
+ ('crontab', models.ForeignKey(
+ blank=True,
+ help_text='Use one of interval/crontab', null=True,
+ on_delete=django.db.models.deletion.CASCADE,
+ to='djcelery.CrontabSchedule', verbose_name='crontab')),
+ ('interval', models.ForeignKey(
+ blank=True, null=True,
+ on_delete=django.db.models.deletion.CASCADE,
+ to='djcelery.IntervalSchedule', verbose_name='interval')),
+ ],
+ options={
+ 'verbose_name': 'periodic task',
+ 'verbose_name_plural': 'periodic tasks',
+ },
+ ),
+ migrations.CreateModel(
+ name='PeriodicTasks',
+ fields=[
+ ('ident', models.SmallIntegerField(
+ default=1, primary_key=True,
+ serialize=False, unique=True)),
+ ('last_update', models.DateTimeField()),
+ ],
+ ),
+ migrations.CreateModel(
+ name='TaskMeta',
+ fields=[
+ ('id', models.AutoField(
+ auto_created=True, primary_key=True,
+ serialize=False, verbose_name='ID')),
+ ('task_id', models.CharField(
+ max_length=255, unique=True,
+ verbose_name='task id')),
+ ('status', models.CharField(
+ choices=[
+ (b'RECEIVED', b'RECEIVED'),
+ (b'RETRY', b'RETRY'),
+ (b'REVOKED', b'REVOKED'),
+ (b'SUCCESS', b'SUCCESS'),
+ (b'STARTED', b'STARTED'),
+ (b'FAILURE', b'FAILURE'),
+ (b'PENDING', b'PENDING')],
+ default=b'PENDING', max_length=50,
+ verbose_name='state')),
+ ('result', djcelery.picklefield.PickledObjectField(
+ default=None, editable=False, null=True)),
+ ('date_done', models.DateTimeField(
+ auto_now=True, verbose_name='done at')),
+ ('traceback', models.TextField(
+ blank=True, null=True, verbose_name='traceback')),
+ ('hidden', models.BooleanField(
+ db_index=True, default=False, editable=False)),
+ ('meta', djcelery.picklefield.PickledObjectField(
+ default=None, editable=False, null=True)),
+ ],
+ options={
+ 'db_table': 'celery_taskmeta',
+ 'verbose_name': 'task state',
+ 'verbose_name_plural': 'task states',
+ },
+ ),
+ migrations.CreateModel(
+ name='TaskSetMeta',
+ fields=[
+ ('id', models.AutoField(
+ auto_created=True, primary_key=True,
+ serialize=False, verbose_name='ID')),
+ ('taskset_id', models.CharField(
+ max_length=255, unique=True,
+ verbose_name='group id')),
+ ('result', djcelery.picklefield.PickledObjectField(
+ editable=False)),
+ ('date_done', models.DateTimeField(
+ auto_now=True, verbose_name='created at')),
+ ('hidden', models.BooleanField(
+ db_index=True, default=False, editable=False)),
+ ],
+ options={
+ 'db_table': 'celery_tasksetmeta',
+ 'verbose_name': 'saved group result',
+ 'verbose_name_plural': 'saved group results',
+ },
+ ),
+ migrations.CreateModel(
+ name='TaskState',
+ fields=[
+ ('id', models.AutoField(
+ auto_created=True, primary_key=True,
+ serialize=False, verbose_name='ID')),
+ ('state', models.CharField(
+ choices=[
+ (b'RECEIVED', b'RECEIVED'),
+ (b'RETRY', b'RETRY'),
+ (b'REVOKED', b'REVOKED'),
+ (b'SUCCESS', b'SUCCESS'),
+ (b'STARTED', b'STARTED'),
+ (b'FAILURE', b'FAILURE'),
+ (b'PENDING', b'PENDING')],
+ db_index=True, max_length=64, verbose_name='state')),
+ ('task_id', models.CharField(
+ max_length=36, unique=True, verbose_name='UUID')),
+ ('name', models.CharField(
+ db_index=True, max_length=200,
+ null=True, verbose_name='name')),
+ ('tstamp', models.DateTimeField(
+ db_index=True, verbose_name='event received at')),
+ ('args', models.TextField(
+ null=True, verbose_name='Arguments')),
+ ('kwargs', models.TextField(
+ null=True, verbose_name='Keyword arguments')),
+ ('eta', models.DateTimeField(
+ null=True, verbose_name='ETA')),
+ ('expires', models.DateTimeField(
+ null=True, verbose_name='expires')),
+ ('result', models.TextField(
+ null=True, verbose_name='result')),
+ ('traceback', models.TextField(
+ null=True, verbose_name='traceback')),
+ ('runtime', models.FloatField(
+ help_text='in seconds if task succeeded',
+ null=True, verbose_name='execution time')),
+ ('retries', models.IntegerField(
+ default=0, verbose_name='number of retries')),
+ ('hidden', models.BooleanField(
+ db_index=True, default=False, editable=False)),
+ ],
+ options={
+ 'ordering': ['-tstamp'],
+ 'get_latest_by': 'tstamp',
+ 'verbose_name': 'task',
+ 'verbose_name_plural': 'tasks',
+ },
+ ),
+ migrations.CreateModel(
+ name='WorkerState',
+ fields=[
+ ('id', models.AutoField(
+ auto_created=True, primary_key=True,
+ serialize=False, verbose_name='ID')),
+ ('hostname', models.CharField(
+ max_length=255, unique=True, verbose_name='hostname')),
+ ('last_heartbeat', models.DateTimeField(
+ db_index=True, null=True, verbose_name='last heartbeat')),
+ ],
+ options={
+ 'ordering': ['-last_heartbeat'],
+ 'get_latest_by': 'last_heartbeat',
+ 'verbose_name': 'worker',
+ 'verbose_name_plural': 'workers',
+ },
+ ),
+ migrations.AddField(
+ model_name='taskstate',
+ name='worker',
+ field=models.ForeignKey(
+ null=True,
+ on_delete=django.db.models.deletion.CASCADE,
+ to='djcelery.WorkerState', verbose_name='worker'),
+ ),
+ ]
diff --git a/djcelery/migrations/__init__.py b/djcelery/migrations/__init__.py
index e69de29..14b82ff 100644
--- a/djcelery/migrations/__init__.py
+++ b/djcelery/migrations/__init__.py
@@ -0,0 +1,16 @@
+from __future__ import absolute_import
+
+SOUTH_ERROR_MESSAGE = """
+For South support, customize the SOUTH_MIGRATION_MODULES setting
+to point to the correct migrations module:
+
+ SOUTH_MIGRATION_MODULES = {
+ 'djcelery': 'djcelery.south_migrations',
+ }
+"""
+
+try:
+ from django.db import migrations # noqa
+except ImportError:
+ from django.core.exceptions import ImproperlyConfigured
+ raise ImproperlyConfigured(SOUTH_ERROR_MESSAGE)
diff --git a/djcelery/models.py b/djcelery/models.py
index 23e89ce..1436662 100644
--- a/djcelery/models.py
+++ b/djcelery/models.py
@@ -1,6 +1,6 @@
from __future__ import absolute_import, unicode_literals
-from datetime import timedelta, datetime
+from datetime import timedelta
from time import time, mktime, gmtime
from django.core.exceptions import MultipleObjectsReturned, ValidationError
@@ -16,12 +16,16 @@ from celery.utils.timeutils import timedelta_seconds
from . import managers
from .picklefield import PickledObjectField
-from .utils import now
+from .utils import fromtimestamp, now
from .compat import python_2_unicode_compatible
TASK_STATE_CHOICES = zip(states.ALL_STATES, states.ALL_STATES)
+def cronexp(field):
+ return field and str(field).replace(' ', '') or '*'
+
+
@python_2_unicode_compatible
class TaskMeta(models.Model):
"""Task result/status."""
@@ -121,7 +125,7 @@ class IntervalSchedule(models.Model):
def __str__(self):
if self.every == 1:
return _('every {0.period_singular}').format(self)
- return _('every {0.every} {0.period}').format(self)
+ return _('every {0.every:d} {0.period}').format(self)
@property
def period_singular(self):
@@ -149,10 +153,12 @@ class CrontabSchedule(models.Model):
'day_of_week', 'hour', 'minute']
def __str__(self):
- rfield = lambda f: f and str(f).replace(' ', '') or '*'
return '{0} {1} {2} {3} {4} (m/h/d/dM/MY)'.format(
- rfield(self.minute), rfield(self.hour), rfield(self.day_of_week),
- rfield(self.day_of_month), rfield(self.month_of_year),
+ cronexp(self.minute),
+ cronexp(self.hour),
+ cronexp(self.day_of_week),
+ cronexp(self.day_of_month),
+ cronexp(self.month_of_year),
)
@property
@@ -360,11 +366,11 @@ class TaskState(models.Model):
def save(self, *args, **kwargs):
if self.eta is not None:
- self.eta = datetime.utcfromtimestamp(float('%d.%s' % (
+ self.eta = fromtimestamp(float('%d.%s' % (
mktime(self.eta.timetuple()), self.eta.microsecond,
)))
if self.expires is not None:
- self.expires = datetime.utcfromtimestamp(float('%d.%s' % (
+ self.expires = fromtimestamp(float('%d.%s' % (
mktime(self.expires.timetuple()), self.expires.microsecond,
... 419 lines suppressed ...
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/python-modules/packages/django-celery.git
More information about the Python-modules-commits
mailing list