[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