diff options
author | Alexandru DAMIAN <alexandru.damian@intel.com> | 2014-12-03 13:55:19 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2014-12-18 10:24:07 +0000 |
commit | 13141af70813d84b27e41d7a6e5792c748b3ae90 (patch) | |
tree | c877f075d80f586b60bb862b84bab3fd06085a14 /bitbake/lib/toaster/orm | |
parent | 7d5cd68a7d043b9db475099c86b8b4eb6bc1c1b2 (diff) | |
download | poky-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.py | 21 |
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 | ||
22 | from django.db import models | 22 | from django.db import models |
23 | from django.db.models import F | 23 | from django.db.models import F, Q |
24 | from django.utils import timezone | 24 | from 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) |