mirror of
https://github.com/django-q2/django-q2.git
synced 2026-10-09 05:28:13 +08:00
Adds task groups
* task now takes an optional keyword `group` * added result_group() and fetch_group() * added group column to Success admin * group column in searchable * added `name` field to Schedules * Scheduled tasks take schedule name as group
This commit is contained in:
+12
-1
@@ -1,6 +1,6 @@
|
||||
import importlib
|
||||
import logging
|
||||
|
||||
import importlib
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.db import models
|
||||
@@ -18,6 +18,7 @@ class Task(models.Model):
|
||||
args = PickledObjectField(null=True)
|
||||
kwargs = PickledObjectField(null=True)
|
||||
result = PickledObjectField(null=True)
|
||||
group = models.CharField(max_length=100, editable=False, null=True)
|
||||
started = models.DateTimeField(editable=False)
|
||||
stopped = models.DateTimeField(editable=False)
|
||||
success = models.BooleanField(default=True, editable=False)
|
||||
@@ -29,6 +30,11 @@ class Task(models.Model):
|
||||
elif Task.objects.filter(name=task_id).exists():
|
||||
return Task.objects.get(name=task_id).result
|
||||
|
||||
@staticmethod
|
||||
def get_group_result(group_id):
|
||||
# values_list() doesn't work here cause it returns encoded fields
|
||||
return [t.result for t in Task.get_task_group(group_id)]
|
||||
|
||||
@staticmethod
|
||||
def get_task(task_id):
|
||||
if len(task_id) == 32 and Task.objects.filter(id=task_id).exists():
|
||||
@@ -36,6 +42,10 @@ class Task(models.Model):
|
||||
elif Task.objects.filter(name=task_id).exists():
|
||||
return Task.objects.get(name=task_id)
|
||||
|
||||
@staticmethod
|
||||
def get_task_group(group_id):
|
||||
return Task.objects.filter(group=group_id)
|
||||
|
||||
def time_taken(self):
|
||||
return (self.stopped - self.started).total_seconds()
|
||||
|
||||
@@ -101,6 +111,7 @@ class Failure(Task):
|
||||
|
||||
|
||||
class Schedule(models.Model):
|
||||
name = models.CharField(max_length=256, null=True)
|
||||
func = models.CharField(max_length=256, help_text='e.g. module.tasks.function')
|
||||
hook = models.CharField(max_length=256, null=True, blank=True, help_text='e.g. module.tasks.result_function')
|
||||
args = models.TextField(null=True, blank=True, help_text=_("e.g. 1, 2, 'John'"))
|
||||
|
||||
Reference in New Issue
Block a user