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

Jose Lamego jose.a.lamego at linux.intel.com
Mon Apr 3 12:31:29 PDT 2017


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.lamego at 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)
 
         if query_string.strip():
             order_by = ('pn', 'layerbranch__layer')
-- 
2.7.4




More information about the yocto mailing list