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.py41
1 files changed, 41 insertions, 0 deletions
diff --git a/bitbake/lib/toaster/orm/models.py b/bitbake/lib/toaster/orm/models.py
index f0a8786640..75e6ea3996 100644
--- a/bitbake/lib/toaster/orm/models.py
+++ b/bitbake/lib/toaster/orm/models.py
@@ -490,6 +490,47 @@ class Build(models.Model):
490 tgts = Target.objects.filter(build_id = self.id).order_by( 'target' ); 490 tgts = Target.objects.filter(build_id = self.id).order_by( 'target' );
491 return( tgts ); 491 return( tgts );
492 492
493 def get_recipes(self):
494 """
495 Get the recipes related to this build;
496 note that the related layer versions and layers are also prefetched
497 by this query, as this queryset can be sorted by these objects in the
498 build recipes view; prefetching them here removes the need
499 for another query in that view
500 """
501 layer_versions = Layer_Version.objects.filter(build=self)
502 criteria = Q(layer_version__id__in=layer_versions)
503 return Recipe.objects.filter(criteria) \
504 .select_related('layer_version', 'layer_version__layer')
505
506 def get_custom_image_recipe_names(self):
507 """
508 Get the names of custom image recipes for this build's project
509 as a list; this is used to screen out custom image recipes from the
510 recipes for the build by name, and to distinguish image recipes from
511 custom image recipes
512 """
513 custom_image_recipes = \
514 CustomImageRecipe.objects.filter(project=self.project)
515 return custom_image_recipes.values_list('name', flat=True)
516
517 def get_image_recipes(self):
518 """
519 Returns a queryset of image recipes related to this build, sorted
520 by name
521 """
522 criteria = Q(is_image=True)
523 return self.get_recipes().filter(criteria).order_by('name')
524
525 def get_custom_image_recipes(self):
526 """
527 Returns a queryset of custom image recipes related to this build,
528 sorted by name
529 """
530 custom_image_recipe_names = self.get_custom_image_recipe_names()
531 criteria = Q(is_image=True) & Q(name__in=custom_image_recipe_names)
532 return self.get_recipes().filter(criteria).order_by('name')
533
493 def get_outcome_text(self): 534 def get_outcome_text(self):
494 return Build.BUILD_OUTCOME[int(self.outcome)][1] 535 return Build.BUILD_OUTCOME[int(self.outcome)][1]
495 536