Update ghnav-flask example & README

This commit is contained in:
Roman Mogylatov 2020-07-20 15:38:45 -04:00
parent d41442df1c
commit b979de623b
6 changed files with 37 additions and 20 deletions

View File

@ -103,8 +103,8 @@ the application structure. It is **easy to understand and change** it.
index_view = flask.View( index_view = flask.View(
views.index, views.index,
search_service=search_service, search_service=search_service,
default_search_term=config.search.default_term, default_query=config.search.default_query,
default_search_limit=config.search.default_limit, default_limit=config.search.default_limit,
) )
Running such container looks like this: Running such container looks like this:

View File

@ -1,5 +1,5 @@
github: github:
request_timeout: 10 request_timeout: 10
search: search:
default_term: "Dependency Injector" default_query: "Dependency Injector"
default_limit: 10 default_limit: 10

View File

@ -32,6 +32,6 @@ class ApplicationContainer(containers.DeclarativeContainer):
index_view = flask.View( index_view = flask.View(
views.index, views.index,
search_service=search_service, search_service=search_service,
default_search_term=config.search.default_term, default_query=config.search.default_query,
default_search_limit=config.search.default_limit, default_limit=config.search.default_limit,
) )

View File

@ -11,10 +11,10 @@ class SearchService:
def __init__(self, github_client: Github): def __init__(self, github_client: Github):
self._github_client = github_client self._github_client = github_client
def search_repositories(self, term, limit): def search_repositories(self, query, limit):
"""Search for repositories and return formatted data.""" """Search for repositories and return formatted data."""
repositories = self._github_client.search_repositories( repositories = self._github_client.search_repositories(
query=term, query=query,
**{'in': 'name'}, **{'in': 'name'},
) )
return [ return [

View File

@ -7,15 +7,25 @@
<h1 class="mb-4">Github Navigator</h1> <h1 class="mb-4">Github Navigator</h1>
<form> <form>
<div class="form-group form-row"> <div class="form-group form-row">
<label for="search_term" class="col-form-label">Search for:</label> <div class="col-10">
<div class="col-10"> <label for="search_query" class="col-form-label">Search for:</label>
<input class="form-control" type="text" id="search_term" <input class="form-control" type="text" id="search_query"
placeholder="Type something to search on the GitHub" placeholder="Type something to search on the GitHub"
name="search_term" name="query"
value="{{ search_term if search_term }}"> value="{{ query if query }}">
</div> </div>
</div> <div class="col">
<label for="search_limit" class="col-form-label">Limit:</label>
<select class="form-control" id="search_limit" name="limit">
{% for value in [5, 10, 20] %}
<option {% if value == limit %}selected{% endif %}>
{{ value }}
</option>
{% endfor %}
</select>
</div>
</div>
</form> </form>
<p><small>Results found: {{ repositories|length }}</small></p> <p><small>Results found: {{ repositories|length }}</small></p>

View File

@ -5,12 +5,19 @@ from flask import request, render_template
from .services import SearchService from .services import SearchService
def index(search_service: SearchService, default_search_term: str, default_search_limit: int): def index(
search_term = request.args.get('search_term', default_search_term) search_service: SearchService,
repositories = search_service.search_repositories(search_term, default_search_limit) default_query: str,
default_limit: int,
):
query = request.args.get('query', default_query)
limit = request.args.get('limit', default_limit, int)
repositories = search_service.search_repositories(query, limit)
return render_template( return render_template(
'index.html', 'index.html',
search_term=search_term, query=query,
limit=limit,
repositories=repositories, repositories=repositories,
) )