This change supports querying recipes that belong to a specific layer by using the prefix "layer:" + the desired layer name, for example: "layer: openembedded-core" and this string can be used by itself or combined with other supported options.
A descriptive error message is displayed when the query string has an unexpected formatting or a non-valid layer name is searched. [YOCTO #6618] Signed-off-by: Jose Lamego <jose.a.lam...@linux.intel.com> --- layerindex/views.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/layerindex/views.py b/layerindex/views.py index 65a536a..3eac3ac 100644 --- a/layerindex/views.py +++ b/layerindex/views.py @@ -390,13 +390,28 @@ class RecipeSearchView(ListView): for item in query_items: if item.startswith('inherits:'): inherits.append(item.split(':')[1]) + # support searches by layer name + elif item.startswith('layer:'): + query_layername = item.split(':')[1].strip().lower() + if not query_layername: + messages.add_message(self.request, messages.ERROR, 'The \ +layer name is expected to follow the \"layer:\" prefix without any spaces.') + query_layer = LayerBranch.objects.filter( + layer__name=query_layername) + if query_layer: + init_qs = init_qs.filter( + layerbranch__layer__id=query_layer[0].id) + else: + messages.add_message(self.request, messages.ERROR, + 'No layer \"%s\" was found.' + % query_layername) else: query_terms.append(item) if inherits: # FIXME This is a bit ugly, perhaps we should consider having this as a one-many relationship instead for inherit in inherits: init_qs = init_qs.filter(Q(inherits=inherit) | Q(inherits__startswith=inherit + ' ') | Q(inherits__endswith=' ' + inherit) | Q(inherits__contains=' %s ' % inherit)) - query_string = ' '.join(query_terms) + query_string = ' '.join(query_terms) if query_string.strip(): order_by = ('pn', 'layerbranch__layer') -- 2.7.4 -- _______________________________________________ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto