mirror of
https://git.yoctoproject.org/poky
synced 2026-02-12 11:43:04 +01:00
bitbake: toaster: orm Add util functions to return common querysets
We use these querysets when creating tables of results and also when we want to have a typeahead search. These can also form the basis of future API endpoints. (Bitbake rev: 2a10fecd985343802f0e99c6fff25c28980eee20) Signed-off-by: Michael Wood <michael.g.wood@intel.com> Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
d3b9927a3c
commit
c4e7113dd0
@@ -20,7 +20,7 @@
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
from django.db import models
|
||||
from django.db.models import F, Q, Avg
|
||||
from django.db.models import F, Q, Avg, Max
|
||||
from django.utils import timezone
|
||||
|
||||
from django.core.urlresolvers import reverse
|
||||
@@ -195,6 +195,45 @@ class Project(models.Model):
|
||||
def projectlayer_equivalent_set(self):
|
||||
return self.compatible_layerversions().filter(layer__name__in = [x.layercommit.layer.name for x in self.projectlayer_set.all()]).select_related("up_branch")
|
||||
|
||||
def get_available_machines(self):
|
||||
""" Returns QuerySet of all Machines which are provided by the
|
||||
Layers currently added to the Project """
|
||||
queryset = Machine.objects.filter(layer_version__in=self.projectlayer_equivalent_set)
|
||||
return queryset
|
||||
|
||||
def get_all_compatible_machines(self):
|
||||
""" Returns QuerySet of all the compatible machines available to the
|
||||
project including ones from Layers not currently added """
|
||||
compatible_layers = self.compatible_layerversions()
|
||||
|
||||
queryset = Machine.objects.filter(layer_version__in=compatible_layers)
|
||||
return queryset
|
||||
|
||||
def get_available_recipes(self):
|
||||
""" Returns QuerySet of all Recipes which are provided by the Layers
|
||||
currently added to the Project """
|
||||
project_layers = self.projectlayer_equivalent_set()
|
||||
queryset = Recipe.objects.filter(layer_version__in = project_layers)
|
||||
|
||||
# Copied from get_all_compatible_recipes
|
||||
search_maxids = map(lambda i: i[0], list(queryset.values('name').distinct().annotate(max_id=Max('id')).values_list('max_id')))
|
||||
queryset = queryset.filter(id__in=search_maxids).select_related('layer_version', 'layer_version__layer', 'layer_version__up_branch', 'layer_source')
|
||||
# End copy
|
||||
|
||||
return queryset
|
||||
|
||||
def get_all_compatible_recipes(self):
|
||||
""" Returns QuerySet of all the compatible Recipes available to the
|
||||
project including ones from Layers not currently added """
|
||||
compatible_layerversions = self.compatible_layerversions()
|
||||
queryset = Recipe.objects.filter(layer_version__in = compatible_layerversions)
|
||||
|
||||
search_maxids = map(lambda i: i[0], list(queryset.values('name').distinct().annotate(max_id=Max('id')).values_list('max_id')))
|
||||
|
||||
queryset = queryset.filter(id__in=search_maxids).select_related('layer_version', 'layer_version__layer', 'layer_version__up_branch', 'layer_source')
|
||||
return queryset
|
||||
|
||||
|
||||
def schedule_build(self):
|
||||
from bldcontrol.models import BuildRequest, BRTarget, BRLayer, BRVariable, BRBitbake
|
||||
br = BuildRequest.objects.create(project = self)
|
||||
|
||||
Reference in New Issue
Block a user