diff --git a/scripts/__init__.py b/scripts/__init__.py new file mode 100644 index 0000000000..4effdfa4a2 --- /dev/null +++ b/scripts/__init__.py @@ -0,0 +1,2 @@ +# This file is part of Tryton. The COPYRIGHT file at the top level of +# this repository contains the full copyright notices and license terms. diff --git a/scripts/trytond_import_countries b/scripts/import_countries.py similarity index 92% rename from scripts/trytond_import_countries rename to scripts/import_countries.py index 62727d6a9a..c5f822b69d 100755 --- a/scripts/trytond_import_countries +++ b/scripts/import_countries.py @@ -44,7 +44,7 @@ def get_countries(): def update_countries(countries): - print("Update countries") + print("Update countries", file=sys.stderr) Country = Model.get('country.country') records = [] @@ -73,7 +73,7 @@ def translate_countries(countries): 'iso3166', pycountry.LOCALES_DIR, languages=[code]) except IOError: continue - print("Update countries %s" % code) + print("Update countries %s" % code, file=sys.stderr) with current_config.set_context(language=code): records = [] for country in _progress(pycountry.countries): @@ -91,7 +91,7 @@ def get_subdivisions(): def update_subdivisions(countries, subdivisions): - print("Update subdivisions") + print("Update subdivisions", file=sys.stderr) Subdivision = Model.get('country.subdivision') records = [] @@ -111,7 +111,7 @@ def update_subdivisions(countries, subdivisions): def update_subdivisions_parent(subdivisions): - print("Update subdivisions parent") + print("Update subdivisions parent", file=sys.stderr) Subdivision = Model.get('country.subdivision') records = [] @@ -119,9 +119,9 @@ def update_subdivisions_parent(subdivisions): code = subdivision.code country_code = subdivision.country_code record = subdivisions[(country_code, code)] - if subdivision.parent_code: + if subdivision.parent: record.parent = subdivisions[ - (country_code, subdivision.parent_code)] + (country_code, subdivision.parent.code)] else: record.parent = None records.append(record) @@ -138,7 +138,7 @@ def translate_subdivisions(subdivisions): 'iso3166-2', pycountry.LOCALES_DIR, languages=[code]) except IOError: continue - print("Update subdivisions %s" % code) + print("Update subdivisions %s" % code, file=sys.stderr) with current_config.set_context(language=code): records = [] for subdivision in _progress(pycountry.subdivisions): @@ -151,7 +151,10 @@ def translate_subdivisions(subdivisions): def main(database, config_file=None): config.set_trytond(database, config_file=config_file) + do_import() + +def do_import(): countries = get_countries() countries = update_countries(countries) translate_countries(countries) @@ -161,7 +164,7 @@ def main(database, config_file=None): translate_subdivisions(subdivisions) -if __name__ == '__main__': +def run(): parser = ArgumentParser() parser.add_argument('-d', '--database', dest='database') parser.add_argument('-c', '--config', dest='config_file', @@ -171,3 +174,7 @@ if __name__ == '__main__': if not args.database: parser.error('Missing database') main(args.database, args.config_file) + + +if __name__ == '__main__': + run() diff --git a/scripts/trytond_import_zip b/scripts/import_zip.py similarity index 98% rename from scripts/trytond_import_zip rename to scripts/import_zip.py index ae2ea25bac..25bbfc7c88 100755 --- a/scripts/trytond_import_zip +++ b/scripts/import_zip.py @@ -94,7 +94,10 @@ _fieldnames = ['country', 'postal', 'place', 'name1', 'code1', def main(database, codes, config_file=None): config.set_trytond(database, config_file=config_file) + do_import(codes) + +def do_import(codes): for code in codes: print(code, file=sys.stderr) code = code.upper() @@ -102,7 +105,7 @@ def main(database, codes, config_file=None): import_(fetch(code)) -if __name__ == '__main__': +def run(): parser = ArgumentParser() parser.add_argument('-d', '--database', dest='database') parser.add_argument('-c', '--config', dest='config_file', @@ -113,3 +116,7 @@ if __name__ == '__main__': if not args.database: parser.error('Missing database') main(args.database, args.codes, args.config_file) + + +if __name__ == '__main__': + run() diff --git a/setup.py b/setup.py index 09613ca724..1047dd1836 100755 --- a/setup.py +++ b/setup.py @@ -51,6 +51,7 @@ for dep in info.get('depends', []): requires.append(get_require_version('trytond_%s' % dep)) requires.append(get_require_version('trytond')) +tests_require = [get_require_version('proteus'), 'pycountry'] dependency_links = [] if minor_version % 2: dependency_links.append('https://trydevpi.tryton.org/') @@ -79,10 +80,6 @@ setup(name=name, 'trytond.modules.country': (info.get('xml', []) + ['tryton.cfg', 'view/*.xml', 'locale/*.po', 'icons/*.svg']), }, - scripts=[ - 'scripts/trytond_import_countries', - 'scripts/trytond_import_zip', - ], classifiers=[ 'Development Status :: 5 - Production/Stable', 'Environment :: Plugins', @@ -131,7 +128,11 @@ setup(name=name, entry_points=""" [trytond.modules] country = trytond.modules.country + [console_scripts] + trytond_import_countries = trytond.modules.country.scripts.import_countries:run [data] + trytond_import_zip = trytond.modules.country.scripts.import_zip:run [GeoNames] """, test_suite='tests', test_loader='trytond.test_loader:Loader', + tests_require=tests_require, ) diff --git a/tests/scenario_country_import.rst b/tests/scenario_country_import.rst new file mode 100644 index 0000000000..c320e47a68 --- /dev/null +++ b/tests/scenario_country_import.rst @@ -0,0 +1,20 @@ +============== +Country Import +============== + +Imports:: + + >>> from trytond.tests.tools import activate_modules + >>> from trytond.modules.country.scripts import import_countries, import_zip + +Install currency:: + + >>> config = activate_modules('country') + +Import countries:: + + >>> import_countries.do_import() + +Import ZIP:: + + >>> import_zip.do_import(['us']) diff --git a/tests/test_country.py b/tests/test_country.py index e011498c92..23103cd443 100644 --- a/tests/test_country.py +++ b/tests/test_country.py @@ -1,8 +1,11 @@ # This file is part of Tryton. The COPYRIGHT file at the top level of # this repository contains the full copyright notices and license terms. +import doctest import unittest import trytond.tests.test_tryton from trytond.tests.test_tryton import ModuleTestCase +from trytond.tests.test_tryton import doctest_teardown +from trytond.tests.test_tryton import doctest_checker class CountryTestCase(ModuleTestCase): @@ -14,4 +17,9 @@ def suite(): suite = trytond.tests.test_tryton.suite() suite.addTests(unittest.TestLoader().loadTestsFromTestCase( CountryTestCase)) + suite.addTests(doctest.DocFileSuite( + 'scenario_country_import.rst', + tearDown=doctest_teardown, encoding='utf-8', + checker=doctest_checker, + optionflags=doctest.REPORT_ONLY_FIRST_FAILURE)) return suite