def missing_housenumbers_view_res(relations: areas.Relations, request_uri: str) -> yattag.doc.Doc: """Expected request_uri: e.g. /osm/missing-housenumbers/ormezo/view-result.""" tokens = request_uri.split("/") relation_name = tokens[-2] doc = yattag.doc.Doc() relation = relations.get_relation(relation_name) prefix = config.Config.get_uri_prefix() if not os.path.exists(relation.get_files().get_osm_streets_path()): with doc.tag("div", id="no-osm-streets"): doc.text(_("No existing streets: ")) link = prefix + "/streets/" + relation_name + "/update-result" doc.asis( util.gen_link(link, _("Call Overpass to create")).getvalue()) elif not os.path.exists(relation.get_files().get_osm_housenumbers_path()): with doc.tag("div", id="no-osm-housenumbers"): doc.text(_("No existing house numbers: ")) link = prefix + "/street-housenumbers/" + relation_name + "/update-result" doc.asis( util.gen_link(link, _("Call Overpass to create")).getvalue()) elif not os.path.exists(relation.get_files().get_ref_housenumbers_path()): with doc.tag("div", id="no-ref-housenumbers"): doc.text(_("No missing house numbers: ")) link = prefix + "/missing-housenumbers/" + relation_name + "/update-result" doc.asis( util.gen_link(link, _("Create from reference")).getvalue()) else: ret = relation.write_missing_housenumbers() todo_street_count, todo_count, done_count, percent, table = ret with doc.tag("p"): doc.text( _("OpenStreetMap is possibly missing the below {0} house numbers for {1} streets." ).format(str(todo_count), str(todo_street_count))) doc.text( _(" (existing: {0}, ready: {1}%).").format( str(done_count), str(percent))) doc.stag("br") with doc.tag( "a", href= "https://github.com/vmiklos/osm-gimmisn/tree/master/doc"): doc.text(_("Filter incorrect information")) doc.text(".") doc.stag("br") with doc.tag( "a", href=prefix + "/missing-housenumbers/{}/view-turbo".format(relation_name) ): doc.text(_("Overpass turbo query for the below streets")) doc.text(".") doc.asis(util.html_table_from_list(table).getvalue()) return doc
def handle_street_housenumbers(relations: helpers.Relations, request_uri: str) -> yattag.Doc: """Expected request_uri: e.g. /osm/street-housenumbers/ormezo/view-query.""" tokens = request_uri.split("/") relation_name = tokens[-2] action = tokens[-1] relation = relations.get_relation(relation_name) osmrelation = relation.get_config().get_osmrelation() doc = yattag.Doc() doc.asis(get_toolbar(relations, "street-housenumbers", relation_name, osmrelation).getvalue()) if action == "view-query": with doc.tag("pre"): doc.text(relation.get_osm_housenumbers_query()) elif action == "view-result": with relation.get_files().get_osm_housenumbers_stream(mode="r") as sock: table = util.tsv_to_list(sock) doc.asis(util.html_table_from_list(table).getvalue()) elif action == "update-result": query = relation.get_osm_housenumbers_query() try: relation.get_files().write_osm_housenumbers(overpass_query.overpass_query(query)) doc.text(_("Update successful: ")) link = "/osm/missing-housenumbers/" + relation_name + "/view-result" doc.asis(util.gen_link(link, _("View missing house numbers")).getvalue()) except urllib.error.HTTPError as http_error: doc.asis(util.handle_overpass_error(http_error).getvalue()) date = get_housenumbers_last_modified(relation) doc.asis(get_footer(date).getvalue()) return doc
def missing_housenumbers_update(relations: helpers.Relations, relation_name: str) -> yattag.Doc: """Expected request_uri: e.g. /osm/missing-housenumbers/ormezo/update-result.""" reference = get_config().get('wsgi', 'reference_housenumbers').strip().split(' ') reference = [util.get_abspath(i) for i in reference] relation = relations.get_relation(relation_name) relation.write_ref_housenumbers(reference) doc = yattag.Doc() doc.text(_("Update successful: ")) link = "/osm/missing-housenumbers/" + relation_name + "/view-result" doc.asis(util.gen_link(link, _("View missing house numbers")).getvalue()) return doc
def missing_housenumbers_update(relations: areas.Relations, relation_name: str) -> yattag.doc.Doc: """Expected request_uri: e.g. /osm/missing-housenumbers/ormezo/update-result.""" references = config.Config.get_reference_housenumber_paths() relation = relations.get_relation(relation_name) relation.write_ref_housenumbers(references) doc = yattag.doc.Doc() doc.text(_("Update successful: ")) prefix = config.Config.get_uri_prefix() link = prefix + "/missing-housenumbers/" + relation_name + "/view-result" doc.asis(util.gen_link(link, _("View missing house numbers")).getvalue()) return doc
def handle_street_housenumbers(ctx: context.Context, relations: areas.Relations, request_uri: str) -> yattag.doc.Doc: """Expected request_uri: e.g. /osm/street-housenumbers/ormezo/view-query.""" tokens = request_uri.split("/") relation_name = tokens[-2] action = tokens[-1] relation = relations.get_relation(relation_name) osmrelation = relation.get_config().get_osmrelation() doc = yattag.doc.Doc() doc.asis( webframe.get_toolbar(ctx, relations, "street-housenumbers", relation_name, osmrelation).getvalue()) prefix = ctx.get_ini().get_uri_prefix() if action == "view-query": with doc.tag("pre"): doc.text(relation.get_osm_housenumbers_query()) elif action == "update-result": query = relation.get_osm_housenumbers_query() buf, err = overpass_query.overpass_query(ctx, query) if err: doc.asis(util.handle_overpass_error(ctx, err).getvalue()) else: relation.get_files().write_osm_housenumbers(ctx, buf) doc.text(tr("Update successful: ")) link = prefix + "/missing-housenumbers/" + relation_name + "/view-result" doc.asis( util.gen_link(link, tr("View missing house numbers")).getvalue()) else: # assume view-result if not ctx.get_file_system().path_exists( relation.get_files().get_osm_housenumbers_path()): with doc.tag("div", id="no-osm-housenumbers"): doc.text(tr("No existing house numbers")) else: with relation.get_files().get_osm_housenumbers_csv_stream( ctx) as sock: doc.asis( util.html_table_from_list( util.tsv_to_list(sock)).getvalue()) date = get_housenumbers_last_modified(relation) doc.asis(webframe.get_footer(date).getvalue()) return doc
def handle_streets(relations: areas.Relations, request_uri: str) -> yattag.doc.Doc: """Expected request_uri: e.g. /osm/streets/ormezo/view-query.""" tokens = request_uri.split("/") relation_name = tokens[-2] action = tokens[-1] relation = relations.get_relation(relation_name) osmrelation = relation.get_config().get_osmrelation() doc = yattag.doc.Doc() doc.asis( webframe.get_toolbar(relations, "streets", relation_name, osmrelation).getvalue()) prefix = config.Config.get_uri_prefix() if action == "view-query": with doc.tag("pre"): doc.text(relation.get_osm_streets_query()) elif action == "update-result": query = relation.get_osm_streets_query() try: relation.get_files().write_osm_streets( overpass_query.overpass_query(query)) streets = relation.get_config().should_check_missing_streets() if streets != "only": doc.text(_("Update successful: ")) link = prefix + "/missing-housenumbers/" + relation_name + "/view-result" doc.asis( util.gen_link(link, _("View missing house numbers")).getvalue()) else: doc.text(_("Update successful.")) except urllib.error.HTTPError as http_error: doc.asis(util.handle_overpass_error(http_error).getvalue()) else: # assume view-result with relation.get_files().get_osm_streets_stream("r") as sock: table = util.tsv_to_list(sock) doc.asis(util.html_table_from_list(table).getvalue()) doc.asis( webframe.get_footer(get_streets_last_modified(relation)).getvalue()) return doc
def test_happy(self) -> None: """Tests the happy path.""" doc = util.gen_link("http://www.example.com", "label") expected = '<a href="http://www.example.com">label...</a>' expected += '<script type="text/javascript">window.location.href = "http://www.example.com";</script>' self.assertEqual(doc.getvalue(), expected)
def test_happy(self) -> None: """Tests the happy path.""" doc = util.gen_link("http://www.example.com", "label") expected = '<a href="http://www.example.com">label...</a>' self.assertEqual(doc.getvalue(), expected)