[yocto] [layerindex-web][patch v3 1/1] recipes.html: Require keyword for recipe search

Mark Hatle mark.hatle at windriver.com
Tue Nov 7 14:47:49 PST 2017


On 11/7/17 4:31 PM, Amanda Brindle wrote:
> Use JavaScript to check if the search box for recipe search is
> empty before querying the database. This will prevent the "502
> Bad Gateway" error that occurs when the query takes too long due
> to the large list of recipes. Since there are so many recipes
> spread across the layers in the OE index, there's no point in
> allowing a user to search without a keyword in order to browse
> the list; it simply isn't digestible as a whole.
> 
> Add a browse button for the Machines, Classes, and Distros pages.

There are reasons to view all of the recipes, machines, classes, distros, etc.
(Not necessarily good reasons, but I know people do it.)

If the query is too long, it would be better to figure out a way to get a
partial response and formulate the first page based on partial responses...
having a multipage response that the user can look at.

--Mark

> Fixes [YOCTO #11930]
> 
> Signed-off-by: Amanda Brindle <amanda.r.brindle at intel.com>
> ---
>  layerindex/views.py                | 15 ++++++++++++---
>  templates/layerindex/classes.html  |  3 ++-
>  templates/layerindex/distros.html  |  3 ++-
>  templates/layerindex/machines.html |  3 ++-
>  templates/layerindex/recipes.html  | 27 +++++++++++++++++++++------
>  5 files changed, 39 insertions(+), 12 deletions(-)
> 
> diff --git a/layerindex/views.py b/layerindex/views.py
> index 03d47f2..414c770 100644
> --- a/layerindex/views.py
> +++ b/layerindex/views.py
> @@ -656,7 +656,10 @@ class MachineSearchView(ListView):
>  
>      def get_queryset(self):
>          _check_url_branch(self.kwargs)
> -        query_string = self.request.GET.get('q', '')
> +        if self.request.GET.get('search', ''):
> +            query_string = self.request.GET.get('q', '')
> +        else:
> +            query_string = ""
>          init_qs = Machine.objects.filter(layerbranch__branch__name=self.kwargs['branch'])
>          if query_string.strip():
>              entry_query = simplesearch.get_query(query_string, ['name', 'description'])
> @@ -705,7 +708,10 @@ class DistroSearchView(ListView):
>  
>      def get_queryset(self):
>          _check_url_branch(self.kwargs)
> -        query_string = self.request.GET.get('q', '')
> +        if self.request.GET.get('search', ''):
> +            query_string = self.request.GET.get('q', '')
> +        else:
> +            query_string = ""
>          init_qs = Distro.objects.filter(layerbranch__branch__name=self.kwargs['branch'])
>          if query_string.strip():
>              entry_query = simplesearch.get_query(query_string, ['name', 'description'])
> @@ -730,7 +736,10 @@ class ClassSearchView(ListView):
>  
>      def get_queryset(self):
>          _check_url_branch(self.kwargs)
> -        query_string = self.request.GET.get('q', '')
> +        if self.request.GET.get('search', ''):
> +            query_string = self.request.GET.get('q', '')
> +        else:
> +            query_string = ""
>          init_qs = BBClass.objects.filter(layerbranch__branch__name=self.kwargs['branch'])
>          if query_string.strip():
>              entry_query = simplesearch.get_query(query_string, ['name'])
> diff --git a/templates/layerindex/classes.html b/templates/layerindex/classes.html
> index 34ac5aa..574cdb8 100644
> --- a/templates/layerindex/classes.html
> +++ b/templates/layerindex/classes.html
> @@ -35,7 +35,8 @@
>                      <div class="input-append">
>                          <form id="filter-form" action="{% url 'class_search' url_branch %}" method="get">
>                              <input type="text" class="input-xxlarge" id="appendedInputButtons" placeholder="Search classes" name="q" value="{{ search_keyword }}" />
> -                            <button class="btn" type="submit">search</button>
> +                            <button class="btn" type="submit" name="search" value="1">search</button>
> +                            <button class="btn" type="submit" name="browse" value="1">browse</button>
>                          </form>
>                      </div>
>                  </div>
> diff --git a/templates/layerindex/distros.html b/templates/layerindex/distros.html
> index 5b6995a..3266bf6 100644
> --- a/templates/layerindex/distros.html
> +++ b/templates/layerindex/distros.html
> @@ -35,7 +35,8 @@
>                      <div class="input-append">
>                          <form id="filter-form" action="{% url 'distro_search' url_branch %}" method="get">
>                              <input type="text" class="input-xxlarge" id="appendedInputButtons" placeholder="Search distros" name="q" value="{{ search_keyword }}" />
> -                            <button class="btn" type="submit">search</button>
> +                            <button class="btn" type="submit" name="search" value="1">search</button>
> +                            <button class="btn" type="submit" name="browse" value="1">browse</button>
>                          </form>
>                      </div>
>                  </div>
> diff --git a/templates/layerindex/machines.html b/templates/layerindex/machines.html
> index c0c6f33..e963376 100644
> --- a/templates/layerindex/machines.html
> +++ b/templates/layerindex/machines.html
> @@ -34,7 +34,8 @@
>                      <div class="input-append">
>                          <form id="filter-form" action="{% url 'machine_search' url_branch %}" method="get">
>                              <input type="text" class="input-xxlarge" id="appendedInputButtons" placeholder="Search machines" name="q" value="{{ search_keyword }}" />
> -                            <button class="btn" type="submit">search</button>
> +                            <button class="btn" type="submit" name="search" value="1">search</button>
> +                            <button class="btn" type="submit" name="browse" value="1">browse</button>
>                          </form>
>                      </div>
>                  </div>
> diff --git a/templates/layerindex/recipes.html b/templates/layerindex/recipes.html
> index 1322750..5ff92ab 100644
> --- a/templates/layerindex/recipes.html
> +++ b/templates/layerindex/recipes.html
> @@ -32,14 +32,20 @@
>  
>  
>                  <div class="row-fluid">
> -                    <div class="input-append">
> -                        <form id="filter-form" action="{% url 'recipe_search' url_branch %}" method="get">
> -                            <input type="text" class="input-xxlarge" id="appendedInputButtons" placeholder="Search recipes" name="q" value="{{ search_keyword }}" />
> -                            <button class="btn" type="submit">search</button>
> -                        </form>
> -                    </div>
> +                    <form id="filter-form" action="{% url 'recipe_search' url_branch %}" method="get" onsubmit="return validate()">
> +                        <div class="control-group"  id="searchfield">
> +                            <div class="controls">
> +                                <div class="input-append">
> +                                    <input type="text" class="input-xxlarge" id="appendedInputButtons" placeholder="Search recipes" name="q" value="{{ search_keyword }}" />
> +                                    <button class="btn" type="submit">search</button>
> +                                </div>
> +                                <span class="help-inline" id="errortext"></span>
> +                            </div>
> +                        </div>
> +                    </form>
>                  </div>
>  
> +                <div id="error"> </div>
>  {% if recipe_list %}
>                  <table class="table table-striped table-bordered recipestable">
>                      <thead>
> @@ -88,5 +94,14 @@
>          $('.icon-hdd').tooltip({title:"Inherits image"});
>          $('.label-inverse').tooltip();
>      });
> +
> +    function validate(){
> +        if (!$("#appendedInputButtons").val()){
> +            $("#errortext").html("<p>Please specify search text</p>");
> +            $("#searchfield").addClass("error");
> +            return false;
> +        }
> +    }
> +
>  </script>
>  {% endblock %}
> 




More information about the yocto mailing list