Univention Bugzilla – Bug 46857
[4.2] Traceback in ucs-school-testuser-import: out of family names?
Last modified: 2018-06-04 15:34:08 CEST
root@master110:/usr/share/ucs-school-import/scripts# ./ucs-school-testuser-import --staff 10 --teachers 150 --students 2000 --classes 50 gsmitte ------ Creating user information... ------ Created 50 class names for 1 schools. ------ Writing user information to CSV file 'test_users_2018-03-24_04:41:46.csv'... ------ Created 10 staffs. Traceback (most recent call last): File "./ucs-school-testuser-import", line 121, in <module> sys.exit(main()) File "./ucs-school-testuser-import", line 105, in main test_user_exporter.dump(test_user_creator.make_users(), args.csvfile) File "/usr/lib/pymodules/python2.7/ucsschool/importer/writer/result_exporter.py", line 65, in dump for obj in self.get_iter(import_handler): File "/usr/lib/pymodules/python2.7/ucsschool/importer/utils/test_user_creator.py", line 145, in make_users family_name = next(self._get_new_family_name()) File "/usr/lib/pymodules/python2.7/ucsschool/importer/utils/test_user_creator.py", line 104, in _get_new_family_name yield u"{}{}".format(self.test_data["family"][family_cursor], family_modifier) IndexError: list index out of range
Off by one error.... --- a/ucs-school-import/modules/ucsschool/importer/utils/test_user_creator.py +++ b/ucs-school-import/modules/ucsschool/importer/utils/test_user_creator.py @@ -84,7 +84,7 @@ class TestUserCreator(object): def _get_new_given_name(self): give_modifier = "" given_len = len(self.test_data["given"]) - given_cursor = random.randint(0, given_len) + given_cursor = random.randint(0, given_len - 1) while True: yield u"{}{}".format(self.test_data["given"][given_cursor], give_modifier) given_cursor += 1 @@ -99,7 +99,7 @@ class TestUserCreator(object): def _get_new_family_name(self): family_modifier = "" family_len = len(self.test_data["family"]) - family_cursor = random.randint(0, family_len) + family_cursor = random.randint(0, family_len - 1) while True: yield u"{}{}".format(self.test_data["family"][family_cursor], family_modifier) family_cursor += 1
ucs-school-import (15.0.3-37) 8b99e6d0fdc3 | Bug #46857: fix off by one error 21b88b4d4f1a | Bug #46857: add changelog entry ucs-school-import.yaml fcb765f4b68c | Bug #46857: update advisory
OK: code change OK: advisory OK: manual test: root@m120:~# dpkg -l ucs-school-import ii ucs-school-import 15.0.3-22A~4.2.0. all root@m120:~# python from ucsschool.importer.utils.test_user_creator import TestUserCreator test_user_creator = TestUserCreator('SchuleEins', staff=1, students=5, teachers=3, staffteachers=1, classes=1, inclasses=1, schools=1, email=False) test_user_creator.test_data['given'] = test_user_creator.test_data['given'][:10] test_user_creator.test_data['family'] = test_user_creator.test_data['family'][:10] test_user_creator.make_classes() list(test_user_creator.make_users()) → IndexError: list index out of range root@m120:~# univention-upgrade --ignoressh --ignoreterm root@m120:~# dpkg -l ucs-school-import ii ucs-school-import 15.0.3-37A~4.2.0. all root@m120:~# python from ucsschool.importer.utils.test_user_creator import TestUserCreator test_user_creator = TestUserCreator('SchuleEins', staff=1, students=5, teachers=3, staffteachers=1, classes=1, inclasses=1, schools=1, email=False) test_user_creator.test_data['given'] = test_user_creator.test_data['given'][:10] test_user_creator.test_data['family'] = test_user_creator.test_data['family'][:10] test_user_creator.make_classes() list(test_user_creator.make_users()) → dict
UCS@school 4.2 v9 has been released. https://docs.software-univention.de/changelog-ucsschool-4.2v9-de.html If this error occurs again, please clone this bug.