mirror of
https://github.com/ets-labs/python-dependency-injector.git
synced 2025-02-16 03:20:50 +03:00
Add bootstrap and remove created at from ghnav-flask app
This commit is contained in:
parent
8a2a88ccc9
commit
62ebe8d6b9
|
@ -12,6 +12,9 @@ def create_app():
|
||||||
app = container.app()
|
app = container.app()
|
||||||
app.container = container
|
app.container = container
|
||||||
|
|
||||||
|
bootstrap = container.bootstrap()
|
||||||
|
bootstrap.init_app(app)
|
||||||
|
|
||||||
app.add_url_rule('/', view_func=container.index_view.as_view())
|
app.add_url_rule('/', view_func=container.index_view.as_view())
|
||||||
|
|
||||||
return app
|
return app
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
from dependency_injector import containers, providers
|
from dependency_injector import containers, providers
|
||||||
from dependency_injector.ext import flask
|
from dependency_injector.ext import flask
|
||||||
from flask import Flask
|
from flask import Flask
|
||||||
|
from flask_bootstrap import Bootstrap
|
||||||
from github import Github
|
from github import Github
|
||||||
|
|
||||||
from . import views, services
|
from . import views, services
|
||||||
|
@ -13,6 +14,8 @@ class ApplicationContainer(containers.DeclarativeContainer):
|
||||||
|
|
||||||
app = flask.Application(Flask, __name__)
|
app = flask.Application(Flask, __name__)
|
||||||
|
|
||||||
|
bootstrap = flask.Extension(Bootstrap)
|
||||||
|
|
||||||
config = providers.Configuration()
|
config = providers.Configuration()
|
||||||
|
|
||||||
github_client = providers.Factory(
|
github_client = providers.Factory(
|
||||||
|
|
|
@ -29,7 +29,6 @@ class SearchService:
|
||||||
'url': repository.owner.html_url,
|
'url': repository.owner.html_url,
|
||||||
'avatar_url': repository.owner.avatar_url,
|
'avatar_url': repository.owner.avatar_url,
|
||||||
},
|
},
|
||||||
'created_at': repository.created_at,
|
|
||||||
'latest_commit': self._format_commit(commits[0]) if commits else {},
|
'latest_commit': self._format_commit(commits[0]) if commits else {},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
{% block head %}
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
|
||||||
|
{% block styles %}
|
||||||
|
<!-- Bootstrap CSS -->
|
||||||
|
{{ bootstrap.load_css() }}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
<title>{% block title %}{% endblock %}</title>
|
||||||
|
{% endblock %}
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<!-- Your page content -->
|
||||||
|
{% block content %}{% endblock %}
|
||||||
|
|
||||||
|
{% block scripts %}
|
||||||
|
<!-- Optional JavaScript -->
|
||||||
|
{{ bootstrap.load_js() }}
|
||||||
|
{% endblock %}
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -1,40 +1,55 @@
|
||||||
<!DOCTYPE html>
|
{% extends "base.html" %}
|
||||||
<html>
|
|
||||||
<head>
|
{% block title %}Github Navigator{% endblock %}
|
||||||
<title>Github Navigator</title>
|
|
||||||
</head>
|
{% block content %}
|
||||||
<body>
|
<div class="container">
|
||||||
<h1>Github Navigator</h1>
|
<h1 class="mb-4">Github Navigator</h1>
|
||||||
<form method="get">
|
|
||||||
<p>
|
<form>
|
||||||
Search term: <input type="text" name="search_term" value="{{ search_term if search_term }}">
|
<div class="form-group form-row">
|
||||||
Limit: <input type="text" name="limit" value="{{ limit }}">
|
<label for="mySearch" class="col-form-label">Search for:</label>
|
||||||
<input type="submit">
|
<div class="col-10">
|
||||||
</p>
|
<input class="form-control" type="text" id="mySearch"
|
||||||
|
placeholder="Type something to search on GitHub"
|
||||||
|
name="search_term"
|
||||||
|
value="{{ search_term if search_term }}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</form>
|
</form>
|
||||||
<h2>Search results</h2>
|
|
||||||
{% if repositories|length == 0 %}
|
{% if repositories|length == 0 %}
|
||||||
<small>No search results</small>
|
<small>No search results</small>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<small>Results found: {{ repositories|length }}</small>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<table class="table table-striped">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>#</th>
|
||||||
|
<th>Repository</th>
|
||||||
|
<th class="text-nowrap">Repository owner</th>
|
||||||
|
<!-- <th class="text-nowrap">Created at</th>-->
|
||||||
|
<th class="text-nowrap">Last commit</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
{% for repository in repositories %} {{n}}
|
{% for repository in repositories %} {{n}}
|
||||||
<p>
|
<tr>
|
||||||
<small>Search result # {{ loop.index }} from {{ repositories|length }}</small>
|
<th>{{ loop.index }}</th>
|
||||||
</p>
|
<td><a href="{{ repository.url }}">{{ repository.name }}</a></td>
|
||||||
<p>
|
<td><a href="{{ repository.owner.url }}"><img src="{{ repository.owner.avatar_url }}" alt="avatar" height="24" width="24"/></a>
|
||||||
Repository: <a href="{{ repository.url }}">{{ repository.name }}</a>
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Repository owner:
|
|
||||||
<a href="{{ repository.owner.url }}"><img src="{{ repository.owner.avatar_url }}" alt="avatar" height="24" width="24"/></a>
|
|
||||||
<a href="{{ repository.owner.url }}">{{ repository.owner.login }}</a>
|
<a href="{{ repository.owner.url }}">{{ repository.owner.login }}</a>
|
||||||
</p>
|
</td>
|
||||||
<p>
|
<td><a href="{{ repository.latest_commit.url }}">{{ repository.latest_commit.sha }}</a> {{ repository.latest_commit['message'] }} {{ repository.latest_commit.author_name }}</td>
|
||||||
Created at: {{ repository.created_at }}
|
</tr>
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
LastCommit: <a href="{{ repository.latest_commit.url }}">{{ repository.latest_commit.sha }}</a> {{ repository.latest_commit['message'] }} {{ repository.latest_commit.author_name }}
|
|
||||||
</p>
|
|
||||||
<hr/>
|
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</body>
|
|
||||||
</html>
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% endblock %}
|
||||||
|
|
|
@ -25,7 +25,6 @@ def test_index(client, app):
|
||||||
html_url='owner1-url',
|
html_url='owner1-url',
|
||||||
avatar_url='owner1-avatar-url',
|
avatar_url='owner1-avatar-url',
|
||||||
),
|
),
|
||||||
created_at='repo1-created-at',
|
|
||||||
get_commits=mock.Mock(return_value=[mock.Mock()]),
|
get_commits=mock.Mock(return_value=[mock.Mock()]),
|
||||||
),
|
),
|
||||||
mock.Mock(
|
mock.Mock(
|
||||||
|
@ -36,7 +35,6 @@ def test_index(client, app):
|
||||||
html_url='owner2-url',
|
html_url='owner2-url',
|
||||||
avatar_url='owner2-avatar-url',
|
avatar_url='owner2-avatar-url',
|
||||||
),
|
),
|
||||||
created_at='repo2-created-at',
|
|
||||||
get_commits=mock.Mock(return_value=[mock.Mock()]),
|
get_commits=mock.Mock(return_value=[mock.Mock()]),
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
@ -51,14 +49,12 @@ def test_index(client, app):
|
||||||
assert b'owner1-login' in response.data
|
assert b'owner1-login' in response.data
|
||||||
assert b'owner1-url' in response.data
|
assert b'owner1-url' in response.data
|
||||||
assert b'owner1-avatar-url' in response.data
|
assert b'owner1-avatar-url' in response.data
|
||||||
assert b'repo1-created-at' in response.data
|
|
||||||
|
|
||||||
assert b'repo2-url' in response.data
|
assert b'repo2-url' in response.data
|
||||||
assert b'repo2-name' in response.data
|
assert b'repo2-name' in response.data
|
||||||
assert b'owner2-login' in response.data
|
assert b'owner2-login' in response.data
|
||||||
assert b'owner2-url' in response.data
|
assert b'owner2-url' in response.data
|
||||||
assert b'owner2-avatar-url' in response.data
|
assert b'owner2-avatar-url' in response.data
|
||||||
assert b'repo2-created-at' in response.data
|
|
||||||
|
|
||||||
|
|
||||||
def test_index_no_results(client, app):
|
def test_index_no_results(client, app):
|
||||||
|
|
Loading…
Reference in New Issue
Block a user