Adds failed tasks filtering to groups

This commit is contained in:
Ilan
2015-07-19 15:15:57 +02:00
parent 72f913ab97
commit 52e72fde1c
3 changed files with 69 additions and 19 deletions
+9 -4
View File
@@ -32,9 +32,12 @@ class Task(models.Model):
return Task.objects.get(name=task_id).result
@staticmethod
def get_result_group(group_id):
def get_result_group(group_id, failures=False):
# values + decode is 10 times faster than just list comprehension
values = Task.objects.filter(group=group_id).values_list('result', flat=True)
if failures:
values = Task.objects.filter(group=group_id).values_list('result', flat=True)
else:
values = Task.objects.filter(group=group_id).exclude(success=False).values_list('result', flat=True)
return [dbsafe_decode(t) for t in values]
@staticmethod
@@ -58,8 +61,10 @@ class Task(models.Model):
return Task.objects.get(name=task_id)
@staticmethod
def get_task_group(group_id):
return Task.objects.filter(group=group_id)
def get_task_group(group_id, failures=True):
if failures:
return Task.objects.filter(group=group_id)
return Task.objects.filter(group_id=group_id).exclude(success=False)
def time_taken(self):
return (self.stopped - self.started).total_seconds()
+6 -4
View File
@@ -93,13 +93,14 @@ def result(task_id):
return Task.get_result(task_id)
def result_group(group_id):
def result_group(group_id, failures=False):
"""
returns a list of results for a task group
:param str group_id: the group id
:param bool failures: set to True to include failures
:return: list or results
"""
return Task.get_result_group(group_id)
return Task.get_result_group(group_id, failures)
def fetch(task_id):
@@ -113,14 +114,15 @@ def fetch(task_id):
return Task.get_task(task_id)
def fetch_group(group_id):
def fetch_group(group_id, failures=True):
"""
Returns a list of Tasks for a task group
:param str group_id: the group id
:param bool failures: set to False to exclude failures
:return: list of Tasks
"""
return Task.get_task_group(group_id)
return Task.get_task_group(group_id, failures)
def count_group(group_id, failures=False):