[yocto] [layerindex-web][PATCH v2] layerindex/views: support querying by layer name
Paul Eggleton
paul.eggleton at linux.intel.com
Thu Jun 15 07:06:06 PDT 2017
Hi Jose,
Sorry for the delay. The patch looks good except it displays two errors if
there's no layer after the layer: prefix. I've fixed that myself and merged to
layerindex-web master.
Thanks,
Paul
On Thursday, 15 June 2017 3:19:48 PM CEST Jose Lamego wrote:
> ping
>
> On 05/31/2017 03:47 PM, 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.
> >
> > 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 at 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')
> >
>
>
--
Paul Eggleton
Intel Open Source Technology Centre
More information about the yocto
mailing list