layerindex/views: support querying by layer name

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.lamego@linux.intel.com>
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
This commit is contained in:
Jose Lamego 2017-05-31 15:47:24 -05:00 committed by Paul Eggleton
parent 8dfe44ed5e
commit b958a991ca

View File

@ -390,6 +390,22 @@ class RecipeSearchView(ListView):
for item in query_items: for item in query_items:
if item.startswith('inherits:'): if item.startswith('inherits:'):
inherits.append(item.split(':')[1]) 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.')
else:
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: else:
query_terms.append(item) query_terms.append(item)
if inherits: if inherits: