[yocto] [layerindex-web][PATCH v2] layerindex/views: support querying by layer name

Jose Lamego jose.a.lamego at linux.intel.com
Thu Jun 15 06:19:48 PDT 2017


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')
> 

-- 
Jose Lamego | OTC Embedded Platforms & Tools | GDC

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: OpenPGP digital signature
URL: <http://lists.yoctoproject.org/pipermail/yocto/attachments/20170615/188e5e67/attachment.pgp>


More information about the yocto mailing list