12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- import django
- from django.db import models
- from django.utils.translation import ugettext_lazy as _
- from picklefield.fields import PickledObjectField
- from celery import conf
- from celery import states
- from celery.managers import TaskManager, TaskSetManager
- TASK_STATUSES_CHOICES = zip(states.ALL_STATES, states.ALL_STATES)
- class TaskMeta(models.Model):
- """Task result/status."""
- task_id = models.CharField(_(u"task id"), max_length=255, unique=True)
- status = models.CharField(_(u"task status"), max_length=50,
- default=states.PENDING, choices=TASK_STATUSES_CHOICES)
- result = PickledObjectField(null=False, default=None)
- date_done = models.DateTimeField(_(u"done at"), auto_now=True)
- traceback = models.TextField(_(u"traceback"), blank=True, null=True)
- objects = TaskManager()
- class Meta:
- """Model meta-data."""
- verbose_name = _(u"task meta")
- verbose_name_plural = _(u"task meta")
- def to_dict(self):
- return {"task_id": self.task_id,
- "status": self.status,
- "result": self.result,
- "date_done": self.date_done,
- "traceback": self.traceback}
- def __unicode__(self):
- return u"<Task: %s state->%s>" % (self.task_id, self.status)
- class TaskSetMeta(models.Model):
- """TaskSet result"""
- taskset_id = models.CharField(_(u"task id"), max_length=255, unique=True)
- result = PickledObjectField()
- date_done = models.DateTimeField(_(u"done at"), auto_now=True)
- objects = TaskSetManager()
- class Meta:
- """Model meta-data."""
- verbose_name = _(u"taskset meta")
- verbose_name_plural = _(u"taskset meta")
- def to_dict(self):
- return {"taskset_id": self.taskset_id,
- "result": self.result,
- "date_done": self.date_done}
- def __unicode__(self):
- return u"<TaskSet: %s>" % (self.taskset_id)
- if (django.VERSION[0], django.VERSION[1]) >= (1, 1):
- # keep models away from syncdb/reset if database backend is not
- # being used.
- if conf.RESULT_BACKEND != 'database':
- TaskMeta._meta.managed = False
- TaskSetMeta._meta.managed = False
|