From 13141af70813d84b27e41d7a6e5792c748b3ae90 Mon Sep 17 00:00:00 2001 From: Alexandru DAMIAN Date: Wed, 3 Dec 2014 13:55:19 +0000 Subject: bitbake: toasterui: refactor project layer finding logic This is a basic refactoring of the code computing the layer equivalence classes for a project, in order to bring common bits of logic in a single place. (Bitbake rev: 9bdd0a687ba74577f2c0f0b6c696433ea662d38f) Signed-off-by: Alexandru DAMIAN Signed-off-by: Richard Purdie --- bitbake/lib/toaster/orm/models.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'bitbake/lib/toaster/orm') diff --git a/bitbake/lib/toaster/orm/models.py b/bitbake/lib/toaster/orm/models.py index f5c600ba9f..46b704c130 100644 --- a/bitbake/lib/toaster/orm/models.py +++ b/bitbake/lib/toaster/orm/models.py @@ -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 +from django.db.models import F, Q from django.utils import timezone @@ -98,6 +98,25 @@ class Project(models.Model): def __unicode__(self): return "%s (%s, %s)" % (self.name, self.release, self.bitbake_version) + # returns a queryset of compatible layers for a project + def compatible_layerversions(self, release = None, layer_name = None): + if release == None: + release = self.release + # layers on the same branch or layers specifically set for this project + queryset = Layer_Version.objects.filter((Q(up_branch__name = release.branch_name) & Q(project = None)) | Q(project = self)) + if layer_name is not None: + # we select only a layer name + queryset = queryset.filter(layer__name = layer_name) + + # order by layer version priority + queryset = queryset.filter(layer_source__releaselayersourcepriority__release = release).order_by("-layer_source__releaselayersourcepriority__priority") + + return queryset + + # returns a set of layer-equivalent set of layers already in project + def projectlayer_equivalent_set(self): + return [j for i in [x.layercommit.get_equivalents_wpriority(self) for x in self.projectlayer_set.all()] for j in i] + def schedule_build(self): from bldcontrol.models import BuildRequest, BRTarget, BRLayer, BRVariable, BRBitbake br = BuildRequest.objects.create(project = self) -- cgit v1.2.3-54-g00ecf