summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/toaster/orm
diff options
context:
space:
mode:
authorAlexandru DAMIAN <alexandru.damian@intel.com>2014-12-03 13:55:19 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2014-12-18 10:24:07 +0000
commit13141af70813d84b27e41d7a6e5792c748b3ae90 (patch)
treec877f075d80f586b60bb862b84bab3fd06085a14 /bitbake/lib/toaster/orm
parent7d5cd68a7d043b9db475099c86b8b4eb6bc1c1b2 (diff)
downloadpoky-13141af70813d84b27e41d7a6e5792c748b3ae90.tar.gz
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 <alexandru.damian@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/toaster/orm')
-rw-r--r--bitbake/lib/toaster/orm/models.py21
1 files changed, 20 insertions, 1 deletions
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 @@
20# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 20# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
21 21
22from django.db import models 22from django.db import models
23from django.db.models import F 23from django.db.models import F, Q
24from django.utils import timezone 24from django.utils import timezone
25 25
26 26
@@ -98,6 +98,25 @@ class Project(models.Model):
98 def __unicode__(self): 98 def __unicode__(self):
99 return "%s (%s, %s)" % (self.name, self.release, self.bitbake_version) 99 return "%s (%s, %s)" % (self.name, self.release, self.bitbake_version)
100 100
101 # returns a queryset of compatible layers for a project
102 def compatible_layerversions(self, release = None, layer_name = None):
103 if release == None:
104 release = self.release
105 # layers on the same branch or layers specifically set for this project
106 queryset = Layer_Version.objects.filter((Q(up_branch__name = release.branch_name) & Q(project = None)) | Q(project = self))
107 if layer_name is not None:
108 # we select only a layer name
109 queryset = queryset.filter(layer__name = layer_name)
110
111 # order by layer version priority
112 queryset = queryset.filter(layer_source__releaselayersourcepriority__release = release).order_by("-layer_source__releaselayersourcepriority__priority")
113
114 return queryset
115
116 # returns a set of layer-equivalent set of layers already in project
117 def projectlayer_equivalent_set(self):
118 return [j for i in [x.layercommit.get_equivalents_wpriority(self) for x in self.projectlayer_set.all()] for j in i]
119
101 def schedule_build(self): 120 def schedule_build(self):
102 from bldcontrol.models import BuildRequest, BRTarget, BRLayer, BRVariable, BRBitbake 121 from bldcontrol.models import BuildRequest, BRTarget, BRLayer, BRVariable, BRBitbake
103 br = BuildRequest.objects.create(project = self) 122 br = BuildRequest.objects.create(project = self)