source file: /opt/devel/celery/testproj/../celery/models.py
file stats: 33 lines, 33 executed: 100.0% covered
1. from django.db import models 2. from celery.registry import tasks 3. from celery.managers import TaskManager, PeriodicTaskManager 4. from django.utils.translation import ugettext_lazy as _ 5. 6. 7. class TaskMeta(models.Model): 8. task_id = models.CharField(_(u"task id"), max_length=255, unique=True) 9. is_done = models.BooleanField(_(u"is done"), default=False) 10. date_done = models.DateTimeField(_(u"done at"), auto_now=True) 11. 12. objects = TaskManager() 13. 14. class Meta: 15. verbose_name = _(u"task meta") 16. verbose_name_plural = _(u"task meta") 17. 18. def __unicode__(self): 19. return u"<Task: %s done:%s>" % (self.task_id, self.is_done) 20. 21. 22. class PeriodicTaskMeta(models.Model): 23. name = models.CharField(_(u"name"), max_length=255, unique=True) 24. last_run_at = models.DateTimeField(_(u"last time run"), 25. auto_now=True, blank=True) 26. total_run_count = models.PositiveIntegerField(_(u"total run count"), 27. default=0) 28. 29. objects = PeriodicTaskManager() 30. 31. class Meta: 32. verbose_name = _(u"periodic task") 33. verbose_name_plural = _(u"periodic tasks") 34. 35. def __unicode__(self): 36. return u"<PeriodicTask: %s [last-run:%s, total-run:%d]>" % ( 37. self.name, self.last_run_at, self.total_run_count) 38. 39. def delay(self, **kwargs): 40. self.task.delay() 41. self.total_run_count = self.total_run_count + 1 42. self.save() 43. 44. @property 45. def task(self): 46. return tasks[self.name]