diff options
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) |