From 229fe435ce6e00149709d9ec87152f6331b2310a Mon Sep 17 00:00:00 2001 From: thomaswoehlke <thomas.woehlke@gmail.com> Date: Fri, 22 Jan 2021 18:28:00 +0100 Subject: [PATCH] ### 0.0.11 Release * Fixed #43 /europe/date_reported * Issue #44 /europe/continent * Issue #45 /europe/country * Issue #46 /europe/data * Issue #39 SQLalchemy instead of SQL: AllModelClasses.remove_all() * Issue #40 SQLalchemy instead of SQL: EuropeDataImportTable.get_date_rep() * Issue #41 SQLalchemy instead of SQL: EuropeDataImportTable.get_countries_of_continent() * Issue #42 SQLalchemy instead of SQL: WhoGlobalDataImportTable.get_new_dates_as_array() * Issue #47 refactor Routes from app.py to org...who,europe,... * Issue #48 refactor Tasks from server_mq.py to org...who,europe,... --- app.py | 21 ++++-- org/woehlke/covid19/europe/europe_model.py | 9 ++- templates/europe/europe_country_all.html | 19 +++-- templates/europe/europe_country_one.html | 66 ++++++++++++++++++ templates/europe/europe_data_table.html | 37 ++++++++++ .../europe/europe_date_reported_one.html | 69 +++++++++++++++++++ 6 files changed, 208 insertions(+), 13 deletions(-) create mode 100644 templates/europe/europe_country_one.html create mode 100644 templates/europe/europe_data_table.html diff --git a/app.py b/app.py index 5c7e2deb..471f8ddb 100644 --- a/app.py +++ b/app.py @@ -288,7 +288,7 @@ def url_europe_date_reported(page=1): def url_europe_date_reported_one(europe_date_reported_id, page=1): page_info = ApplicationPage('Europe', "date_reported") europe_date_reported = EuropeDateReported.get_by_id(europe_date_reported_id) - page_data = EuropeData.find_by_date_reported(europe_date_reported) + page_data = EuropeData.find_by_date_reported(europe_date_reported, page) return render_template( 'europe/europe_date_reported_one.html', europe_date_reported=europe_date_reported, @@ -307,9 +307,9 @@ def url_europe_continent(page=1): page_info=page_info) -@app.route('/europe/country/page/<int:page>') -@app.route('/europe/country') -def url_europe_country(page=1): +@app.route('/europe/country/all/page/<int:page>') +@app.route('/europe/country/all') +def url_europe_country_all(page=1): page_info = ApplicationPage('Europe', "country") page_data = EuropeCountry.get_all_as_page(page) return render_template( @@ -318,6 +318,19 @@ def url_europe_country(page=1): page_info=page_info) +@app.route('/europe/country/<int:country_id>/page/<int:page>') +@app.route('/europe/country/<int:country_id>') +def url_europe_country_one(country_id, page=1): + page_info = ApplicationPage('Europe', "country") + europe_country = EuropeCountry.get_by_id(country_id) + page_data = EuropeData.find_by_country(europe_country, page) + return render_template( + 'europe/europe_country_one.html', + europe_country=europe_country, + page_data=page_data, + page_info=page_info) + + @app.route('/europe/data/page/<int:page>') @app.route('/europe/data') def url_europe_data(page=1): diff --git a/org/woehlke/covid19/europe/europe_model.py b/org/woehlke/covid19/europe/europe_model.py index fa815a1c..a77d8025 100644 --- a/org/woehlke/covid19/europe/europe_model.py +++ b/org/woehlke/covid19/europe/europe_model.py @@ -213,7 +213,12 @@ class EuropeData(db.Model): return db.session.query(cls).filter(cls.id == other_id).one() @classmethod - def find_by_date_reported(cls, europe_date_reported): + def find_by_date_reported(cls, europe_date_reported, page): + return db.session.query(cls).filter( + cls.europe_date_reported_id == europe_date_reported.id).paginate(page, per_page=ITEMS_PER_PAGE) + + @classmethod + def find_by_country(cls, europe_country, page): return db.session.query(cls).filter( - cls.europe_date_reported_id == europe_date_reported.id).all() + cls.europe_country_id == europe_country.id).paginate(page, per_page=ITEMS_PER_PAGE) diff --git a/templates/europe/europe_country_all.html b/templates/europe/europe_country_all.html index 88d4e8f5..7427d42a 100644 --- a/templates/europe/europe_country_all.html +++ b/templates/europe/europe_country_all.html @@ -21,7 +21,7 @@ {% if page_data.has_prev %} <li class="page-item"> <a class="page-link" - href="{{ url_for( 'url_europe_country', page=page_data.prev_num) }}"> + href="{{ url_for( 'url_europe_country_all', page=page_data.prev_num) }}"> Previous </a> </li> @@ -31,7 +31,7 @@ {% if page_num != page_data.page %} <li class="page-item"> <a class="page-link" - href="{{ url_for( 'url_europe_country', page=page_num) }}"> + href="{{ url_for( 'url_europe_country_all', page=page_num) }}"> {{ page_num }} </a> </li> @@ -49,7 +49,7 @@ {% if page_data.has_next %} <li class="page-item"> <a class="page-link" - href="{{ url_for( 'url_europe_country', page=page_data.next_num) }}"> + href="{{ url_for( 'url_europe_country_all', page=page_data.next_num) }}"> Next </a> </li> @@ -70,11 +70,16 @@ <tbody> {% for europe_country in page_data.items %} <tr> - <td>{{ europe_country.countries_and_territories }}</td> + <td> + <a href="/europe/country/{{ europe_country.id }}"> + {{ europe_country.countries_and_territories }}</a></td> <td>{{ europe_country.pop_data_2019 }}</td> - <td>{{ europe_country.geo_id }}</td> - <td>{{ europe_country.country_territory_code }}</td> - <td>{{ europe_country.continent.continent_exp }}</td> + <td><a href="/europe/country/{{ europe_country.id }}"> + {{ europe_country.geo_id }}</a></td> + <td><a href="/europe/country/{{ europe_country.id }}"> + {{ europe_country.country_territory_code }}</a></td> + <td><a href="/europe/continent/{{ europe_country.continent.id }}"> + {{ europe_country.continent.continent_exp }}</a></td> </tr> {% endfor %} </tbody> diff --git a/templates/europe/europe_country_one.html b/templates/europe/europe_country_one.html new file mode 100644 index 00000000..53aa7c4b --- /dev/null +++ b/templates/europe/europe_country_one.html @@ -0,0 +1,66 @@ +{% extends 'page_layout.html' %} + +{% block navigation_navtabs %} + {% include 'fragment_navtabs_europe.html' %} +{% endblock %} + +{% block main_container %} + + {% if page_data.pages > 1 %} + <ul class="pagination"> + {% if page_data.has_prev %} + <li class="page-item"> + <a class="page-link" + href="{{ url_for( 'url_europe_country_one', + country_id=europe_country.id, + page=page_data.prev_num) }}"> + Previous + </a> + </li> + {% endif %} + {% for page_num in page_data.iter_pages() %} + {% if page_num %} + {% if page_num != page_data.page %} + <li class="page-item"> + <a class="page-link" + href="{{ url_for( 'url_europe_country_one', + country_id=europe_country.id, + page=page_num) }}"> + {{ page_num }} + </a> + </li> + {% else %} + <li class="page-item active"> + <a class="page-link" href="#">{{ page_num }}</a> + </li> + {% endif %} + {% else %} + <li class="page-item"> + <span class="ellipsis page-link my-page-item-ellipsis-page-link">…</span> + </li> + {% endif %} + {% endfor %} + {% if page_data.has_next %} + <li class="page-item"> + <a class="page-link" + href="{{ url_for( 'url_europe_country_one', + country_id=europe_country.id, page=page_data.next_num) }}"> + Next + </a> + </li> + {% endif %} + </ul> + {% endif %} + + {% include 'europe/europe_data_table.html' %} + +{% endblock %} + + +{% block footer_container %} + <div> + {% for error in errors %} + <h4>{{ error }}</h4> + {% endfor %} + </div> +{% endblock %} diff --git a/templates/europe/europe_data_table.html b/templates/europe/europe_data_table.html new file mode 100644 index 00000000..1f85f333 --- /dev/null +++ b/templates/europe/europe_data_table.html @@ -0,0 +1,37 @@ + <table class="table table-hover table-striped"> + <thead> + <tr> + <th scope="col">date rep</th> + <th scope="col">year_week</th> + <th scope="col">deaths weekly</th> + <th scope="col">cases weekly</th> + <th scope="col">notification rate per 100000 population 14days</th> + <th scope="col">countries and territories</th> + <th scope="col">pop data 2019</th> + <th scope="col">geo id</th> + <th scope="col">country territory code</th> + <th scope="col">continent</th> + </tr> + </thead> + <tbody> + {% for europe_data in page_data.items %} + <tr> + <th>{{ europe_data.europe_date_reported.date_rep }}</th> + <td><a href="/europe/date_reported/{{ europe_data.europe_date_reported.id }}"> + {{ europe_data.europe_date_reported.year_week }}</a></td> + <td>{{ europe_data.deaths_weekly }}</td> + <td>{{ europe_data.cases_weekly }}</td> + <td>{{ europe_data.notification_rate_per_100000_population_14days }}</td> + <td><a href="/europe/country/{{ europe_data.europe_country.id }}"> + {{ europe_data.europe_country.countries_and_territories }}</a></td> + <td>{{ europe_data.europe_country.pop_data_2019 }}</td> + <td><a href="/europe/country/{{ europe_data.europe_country.id }}"> + {{ europe_data.europe_country.geo_id }}</a></td> + <td><a href="/europe/country/{{ europe_data.europe_country.id }}"> + {{ europe_data.europe_country.country_territory_code }}</a></td> + <td><a href="/europe/continent/{{ europe_data.europe_country.continent.id }}"> + {{ europe_data.europe_country.continent.continent_exp }}</a></td> + </tr> + {% endfor %} + </tbody> + </table> \ No newline at end of file diff --git a/templates/europe/europe_date_reported_one.html b/templates/europe/europe_date_reported_one.html index e69de29b..f34943d5 100644 --- a/templates/europe/europe_date_reported_one.html +++ b/templates/europe/europe_date_reported_one.html @@ -0,0 +1,69 @@ +{% extends 'page_layout.html' %} + +{% block navigation_breadcrumb %} +{% endblock %} + +{% block navigation_navtabs %} + {% include 'fragment_navtabs_europe.html' %} +{% endblock %} + +{% block main_container %} + + {% if page_data.pages > 1 %} + <ul class="pagination"> + {% if page_data.has_prev %} + <li class="page-item"> + <a class="page-link" + href="{{ url_for( 'url_europe_date_reported_one', + europe_date_reported_id=europe_date_reported.id, + page=page_data.prev_num) }}"> + Previous + </a> + </li> + {% endif %} + {% for page_num in page_data.iter_pages() %} + {% if page_num %} + {% if page_num != page_data.page %} + <li class="page-item"> + <a class="page-link" + href="{{ url_for( 'url_europe_date_reported_one', + europe_date_reported_id=europe_date_reported.id, + page=page_num) }}"> + {{ page_num }} + </a> + </li> + {% else %} + <li class="page-item active"> + <a class="page-link" href="#">{{ page_num }}</a> + </li> + {% endif %} + {% else %} + <li class="page-item"> + <span class="ellipsis page-link my-page-item-ellipsis-page-link">…</span> + </li> + {% endif %} + {% endfor %} + {% if page_data.has_next %} + <li class="page-item"> + <a class="page-link" + href="{{ url_for( 'url_europe_date_reported_one', + europe_date_reported_id=europe_date_reported.id, page=page_data.next_num) }}"> + Next + </a> + </li> + {% endif %} + </ul> + {% endif %} + + {% include 'europe/europe_data_table.html' %} + +{% endblock %} + + +{% block footer_container %} + <div> + {% for error in errors %} + <h4>{{ error }}</h4> + {% endfor %} + </div> +{% endblock %} \ No newline at end of file -- GitLab