[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