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/models.py | |
| 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/models.py')
| -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) |
