models.py 1.0 KB

12345678910111213141516171819202122232425262728293031
  1. from django.db import models
  2. from crunchy.registry import tasks
  3. from crunchy.managers import PeriodicTaskManager
  4. from django.utils.translation import ugettext_lazy as _
  5. class PeriodicTaskMeta(models.Model):
  6. name = models.CharField(_(u"name"), max_length=255, unique=True)
  7. last_run_at = models.DateTimeField(_(u"last time run"),
  8. auto_now=True, blank=True)
  9. total_run_count = models.PositiveIntegerField(_(u"total run count"),
  10. default=0)
  11. objects = PeriodicTaskManager()
  12. class Meta:
  13. verbose_name = _(u"periodic task")
  14. verbose_name_plural = _(u"periodic tasks")
  15. def __unicode__(self):
  16. return u"<PeriodicTask: %s [last-run:%s, total-run:%d]>" % (
  17. self.name, self.last_run_at, self.total_run_count)
  18. def delay(self, **kwargs):
  19. self.task.delay()
  20. self.total_run_count = self.total_run_count + 1
  21. self.save()
  22. @property
  23. def task(self):
  24. return tasks[self.name]