summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/toaster/orm/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/toaster/orm/models.py')
-rw-r--r--bitbake/lib/toaster/orm/models.py23
1 files changed, 19 insertions, 4 deletions
diff --git a/bitbake/lib/toaster/orm/models.py b/bitbake/lib/toaster/orm/models.py
index 5eff955453..454f3692be 100644
--- a/bitbake/lib/toaster/orm/models.py
+++ b/bitbake/lib/toaster/orm/models.py
@@ -103,7 +103,7 @@ class Project(models.Model):
103 if release == None: 103 if release == None:
104 release = self.release 104 release = self.release
105 # layers on the same branch or layers specifically set for this project 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)) 106 queryset = Layer_Version.objects.filter((Q(up_branch__name = release.branch_name) & Q(project = None)) | Q(project = self) | Q(build__project = self))
107 if layer_name is not None: 107 if layer_name is not None:
108 # we select only a layer name 108 # we select only a layer name
109 queryset = queryset.filter(layer__name = layer_name) 109 queryset = queryset.filter(layer__name = layer_name)
@@ -952,11 +952,24 @@ class Layer_Version(models.Model):
952 """ Returns an ordered layerversion list that satisfies a LayerVersionDependency using the layer name and the current Project Releases' LayerSource priority """ 952 """ Returns an ordered layerversion list that satisfies a LayerVersionDependency using the layer name and the current Project Releases' LayerSource priority """
953 def _get_ls_priority(ls): 953 def _get_ls_priority(ls):
954 try: 954 try:
955 # if there is no layer source, we have minus infinite priority, as we don't want this layer selected
956 if ls == None:
957 return -10000
955 return ls.releaselayersourcepriority_set.get(release=project.release).priority 958 return ls.releaselayersourcepriority_set.get(release=project.release).priority
956 except ReleaseLayerSourcePriority.DoesNotExist: 959 except ReleaseLayerSourcePriority.DoesNotExist:
957 raise 960 raise
961
962 # layers created for this project, or coming from a build inthe project
963 query = Q(project = project) | Q(build__project = project)
964 if self.up_branch is not None:
965 # the same up_branch name
966 query |= Q(up_branch__name=self.up_branch.name)
967 else:
968 # or we have a layer in the project that's similar to mine (See the layer.name constraint below)
969 query |= Q(projectlayer__project=project)
970
958 return sorted( 971 return sorted(
959 Layer_Version.objects.filter( layer__name = self.layer.name, up_branch__name = self.up_branch.name ), 972 Layer_Version.objects.filter(layer__name = self.layer.name).filter(query).select_related('layer_source', 'layer'),
960 key = lambda x: _get_ls_priority(x.layer_source), 973 key = lambda x: _get_ls_priority(x.layer_source),
961 reverse = True) 974 reverse = True)
962 975
@@ -965,10 +978,12 @@ class Layer_Version(models.Model):
965 return self.commit 978 return self.commit
966 if self.branch is not None and len(self.branch) > 0: 979 if self.branch is not None and len(self.branch) > 0:
967 return self.branch 980 return self.branch
968 return self.up_branch.name 981 if self.up_branch is not None:
982 return self.up_branch.name
983 raise Exception("Cannot determine the vcs_reference for layer version %s" % vars(self))
969 984
970 def __unicode__(self): 985 def __unicode__(self):
971 return str(self.layer) + " (" + self.commit +")" 986 return str(self.layer) + "(%s,%s)" % (self.get_vcs_reference(), self.build.project if self.build is not None else "None")
972 987
973 class Meta: 988 class Meta:
974 unique_together = ("layer_source", "up_id") 989 unique_together = ("layer_source", "up_id")