Hi Jose, Sorry for the extreme delay reviewing this.
On Tuesday, 4 April 2017 7:31:29 AM NZST Jose Lamego wrote: > 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. > > [YOCTO #6618] > > Signed-off-by: Jose Lamego <jose.a.lam...@linux.intel.com> > --- > layerindex/views.py | 13 ++++++++++++- > 1 file changed, 12 insertions(+), 1 deletion(-) > > diff --git a/layerindex/views.py b/layerindex/views.py > index 65a536a..5b66892 100644 > --- a/layerindex/views.py > +++ b/layerindex/views.py > @@ -383,13 +383,16 @@ class RecipeSearchView(ListView): > query_string = self.request.GET.get('q', '') > init_qs = Recipe.objects.filter(layerbranch__branch__name=self.kwargs['branch']) > > - # Support slightly crude search on inherits field > + # Support slightly crude search on inherits/layer fields > query_items = query_string.split() > inherits = [] > + layers = [] > query_terms = [] > for item in query_items: > if item.startswith('inherits:'): > inherits.append(item.split(':')[1]) > + elif item.startswith('layer:'): > + layers.append(item.split(':')[1]) > else: > query_terms.append(item) > if inherits: > @@ -397,6 +400,14 @@ class RecipeSearchView(ListView): > 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) > + if layers: > + for layer in layers: > + init_qs = init_qs.filter( > + Q(layerbranch__layer__name=layer) | > + Q(layerbranch__layer__name__startswith=layer + ' ') | > + Q(layerbranch__layer__name__endswith=' ' + layer) | > + Q(layerbranch__layer__name__contains=' %s ' % layer)) > + query_string = ' '.join(query_terms) Could we instead determine which layers match the query (i.e. the IDs), and then do an layerbranch__layer__in (or layerbranch__layer__id__in, not sure which)? That way we can also return a specific message if no layers match the query. I'm not sure we really need the fuzzy matches either - just exact name match. Cheers, Paul -- Paul Eggleton Intel Open Source Technology Centre -- _______________________________________________ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto