Use entrypoint console scripts

and tests scripts with scenario.

issue8662
review258231002
This commit is contained in:
Cédric Krier
2019-10-14 00:13:00 +02:00
parent f223420354
commit 6b049c74ef
6 changed files with 58 additions and 13 deletions
+2
View File
@@ -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.
@@ -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()
@@ -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()
+5 -4
View File
@@ -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,
)
+20
View File
@@ -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'])
+8
View File
@@ -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