Ported createCountryNames() to python and added tests

This commit is contained in:
Darkshredder
2021-03-12 10:28:41 +05:30
parent 9086a794a1
commit 7a874d5b97
6 changed files with 69 additions and 30 deletions

View File

@@ -130,8 +130,8 @@ class SetupAll:
database_import.create_search_indices(conn, args.config,
args.sqllib_dir,
drop=args.no_updates)
run_legacy_script('setup.php', '--create-country-names',
nominatim_env=args, throw_on_fail=not args.ignore_errors)
LOG.warning('Create search index for default country names.')
database_import.create_country_names(conn, args.config)
webdir = args.project_dir / 'website'
LOG.warning('Setup website at %s', webdir)

View File

@@ -43,6 +43,8 @@ class AdminTransition:
help='Index the data')
group.add_argument('--create-search-indices', action='store_true',
help='Create additional indices required for search and update')
group.add_argument('--create-country-names', action='store_true',
help='Create search index for default country names.')
group = parser.add_argument_group('Options')
group.add_argument('--no-partitions', action='store_true',
help='Do not partition search indices')
@@ -62,7 +64,7 @@ class AdminTransition:
help='File to import')
@staticmethod
def run(args):
def run(args): # pylint: disable=too-many-statements
from ..tools import database_import, tiger_data
from ..tools import refresh
@@ -137,3 +139,8 @@ class AdminTransition:
args.threads or 1,
args.config,
args.sqllib_dir)
if args.create_country_names:
LOG.warning('Create search index for default country names.')
with connect(args.config.get_libpq_dsn()) as conn:
database_import.create_country_names(conn, args.config)

View File

@@ -306,3 +306,38 @@ def create_search_indices(conn, config, sqllib_dir, drop=False):
sql = SQLPreprocessor(conn, config, sqllib_dir)
sql.run_sql_file(conn, 'indices.sql', drop=drop)
def create_country_names(conn, config):
""" Create search index for default country names.
"""
with conn.cursor() as cur:
cur.execute("""select
getorcreate_country(make_standard_name('uk')
, 'gb')""")
cur.execute("""select getorcreate_country(make_standard_name('united states'), 'us')""")
cur.execute("""select count(*) from
(select getorcreate_country(make_standard_name(country_code),
country_code) from country_name where country_code is not null) as x""")
cur.execute("""select count(*) from
(select getorcreate_country(make_standard_name(name->'name'),
country_code) from country_name where name ? 'name') as x""")
sql_statement = """select count(*) from (select getorcreate_country(make_standard_name(v)
, country_code) from (select country_code, skeys(name)
as k, svals(name) as v from country_name) x where k """
languages = config.LANGUAGES
if languages:
sql_statement += 'in '
delim = '('
for language in languages.split(','):
sql_statement += delim + "'name:" + language + "'"
delim = ','
sql_statement += ')'
else:
sql_statement += "like 'name:%'"
sql_statement += ') v'
cur.execute(sql_statement)
conn.commit()