Adds group commands to task instances

* adds task.group_result()
* adds task.group_count()
* adds task.group_delete()
This commit is contained in:
Ilan Steemers
2015-09-16 15:47:39 +02:00
parent c0aa2dd12e
commit 061775b3bb
2 changed files with 35 additions and 18 deletions
+29 -18
View File
@@ -1,6 +1,6 @@
import logging
from django import get_version
from django import get_version
import importlib
from django.core.urlresolvers import reverse
from django.utils.translation import ugettext_lazy as _
@@ -10,6 +10,7 @@ from django.dispatch import receiver
from django.utils import timezone
from picklefield import PickledObjectField
from picklefield.fields import dbsafe_decode
from django_q.signing import SignedPackage
@@ -41,12 +42,20 @@ class Task(models.Model):
values = Task.objects.filter(group=group_id).exclude(success=False).values_list('result', flat=True)
return decode_results(values)
def group_result(self, failures=False):
if self.group:
return self.get_result_group(self.group, failures)
@staticmethod
def get_group_count(group_id, failures=False):
if failures:
return Failure.objects.filter(group=group_id).count()
return Task.objects.filter(group=group_id).count()
def group_count(self, failures=False):
if self.group:
return self.get_group_count(self.group, failures)
@staticmethod
def delete_group(group_id, objects=False):
group = Task.objects.filter(group=group_id)
@@ -54,6 +63,10 @@ class Task(models.Model):
return group.delete()
return group.update(group=None)
def group_delete(self, tasks=False):
if self.group:
return self.delete_group(self.group, tasks)
@staticmethod
def get_task(task_id):
if len(task_id) == 32 and Task.objects.filter(id=task_id).exists():
@@ -190,26 +203,26 @@ class Schedule(models.Model):
class OrmQ(models.Model):
key = models.CharField(max_length=100)
payload = models.TextField()
lock = models.DateTimeField(null=True)
key = models.CharField(max_length=100)
payload = models.TextField()
lock = models.DateTimeField(null=True)
def task(self):
return SignedPackage.loads(self.payload)
def task(self):
return SignedPackage.loads(self.payload)
def func(self):
return self.task()['func']
def func(self):
return self.task()['func']
def task_id(self):
return self.task()['id']
def task_id(self):
return self.task()['id']
def name(self):
return self.task()['name']
def name(self):
return self.task()['name']
class Meta:
app_label = 'django_q'
verbose_name = _('Queued task')
verbose_name_plural = _('Queued tasks')
class Meta:
app_label = 'django_q'
verbose_name = _('Queued task')
verbose_name_plural = _('Queued tasks')
# Backwards compatibility for Django 1.7
@@ -218,5 +231,3 @@ def decode_results(values):
# decode values in 1.7
return [dbsafe_decode(v) for v in values]
return values