Univention Bugzilla – Bug 55671
Prevent or encode colons in exam names to prevent invalid ucsschoolRole value
Last modified: 2023-05-11 08:52:44 CEST
07.02.23 10:14:15.578 MODULE ( PROCESS ) : _thread:646 start_exam() Requesting exam user 04/26 to be created: u'uid=schein.c,cn=schueler,cn=users,ou=sun,dc=schule,dc=schein' 07.02.23 10:14:15.578 MODULE ( PROCESS ) : info:75 Vorbereitung der Klassenarbeitskonten - (04/26) Charly, Schein (schein.c) 07.02.23 10:14:15.703 MODULE ( WARN ) : _thread:670 start_exam() Could not create exam user account for u'uid=kimberleyn.b,cn=schueler,cn=users,ou=bk191796,dc=schule,dc=koeln': 591 on master.schule.koeln (command/schoolexam-master/create-exam-user): {u'status': 591, u'message': u'Interner Server-Fehler in "schoolexam-master/create-exam-user".', u'location': u'https://master.schule.schein/univention/command'} Interner Server-Fehler in "schoolexam-master/create-exam-user". Request: schoolexam-master/create-exam-user Traceback (most recent call last): File "/usr/lib/python2.7/dist-packages/univention/management/console/base.py", line 359, in __error_handling six.reraise(etype, exc, etraceback) File "/usr/lib/python2.7/dist-packages/univention/management/console/base.py", line 262, in execute function.__func__(self, request, *args, **kwargs) File "/usr/lib/python2.7/dist-packages/univention/management/console/modules/decorators.py", line 181, in _response return function(self, request) File "/usr/lib/python2.7/dist-packages/ucsschool/lib/school_umc_ldap_connection.py", line 145, in wrapper_func return func(*args, **kwargs) File "/usr/lib/python2.7/dist-packages/univention/management/console/modules/schoolexam-master/__init__.py", line 265, in create_exam_user ldap_admin_write, filter_format("uid=%s", (exam_user_uid,)) File "/usr/lib/python2.7/dist-packages/ucsschool/lib/models/base.py", line 1186, in get_only_udm_obj validate(obj, cls.logger) File "/usr/lib/python2.7/dist-packages/ucsschool/lib/models/validator.py", line 498, in validate errors = validation_class.validate(dict_obj) File "/usr/lib/python2.7/dist-packages/ucsschool/lib/models/validator.py", line 319, in validate errors = super(ExamStudentValidator, cls).validate(obj) File "/usr/lib/python2.7/dist-packages/ucsschool/lib/models/validator.py", line 182, in validate errors.append(cls.validate_part_of_school(roles, schools)) File "/usr/lib/python2.7/dist-packages/ucsschool/lib/models/validator.py", line 228, in validate_part_of_school missing_schools = set([s for r, c, s in roles if c == "school" and s.lower() not in schools]) ValueError: too many values to unpack ------------------------ There are existing exam-users, which have these ucschoolRoles from a previous exam start, which was named 12:20 ucsschoolRole: exam_user:school:sun ucsschoolRole: exam_user:exam:12:20-sun ------------------------ This is a problem: exam_user:exam:12:20-sun. When split by : it'll create 4 strings instead of 3. Versions: Schoolslave :~ # univention-app info UCS: 4.4-9 errata1280 Master :~ # univention-app info UCS: 4.4-9 errata1355
We should either disallow colons in exam names or encode them with another character, so that the 3 parts of a ucsschoolRole never contain a colon.
This issue has been filed against UCS 4.4. UCS 4.4 is out of maintenance and UCS components may have vastly changed in later releases. Thus, this issue is now being closed. With https://forge.univention.org/bugzilla/show_bug.cgi?id=55768 a fix for UCS 5 was implemented, therefore this issue should not affect the current version anymore.