Beispiel #1
0
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
Beispiel #2
0
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
Beispiel #3
0
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
Beispiel #4
0
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
Beispiel #5
0
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
Beispiel #6
0
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
Beispiel #7
0
 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)
Beispiel #8
0
 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)