Bug 54098 - computerroom/exam/finish: AttributeError: invalid key 'Administrator'
computerroom/exam/finish: AttributeError: invalid key 'Administrator'
Status: NEW
Product: UCS@school
Classification: Unclassified
Component: UMC - Computer room
UCS@school 4.4
Other Linux
: P5 normal (vote)
: ---
Assigned To: UCS@school maintainers
:
: 52567 (view as bug list)
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2021-11-19 11:07 CET by Maximilian Janßen
Modified: 2023-07-06 13:45 CEST (History)
3 users (show)

See Also:
What kind of report is it?: Bug Report
What type of bug is this?: 4: Minor Usability: Impairs usability in secondary scenarios
Who will be affected by this bug?: 2: Will only affect a few installed domains
How will those affected feel about the bug?: 2: A Pain – users won’t like this once they notice it
User Pain: 0.091
Enterprise Customer affected?:
School Customer affected?: Yes
ISV affected?:
Waiting Support:
Flags outvoted (downgraded) after PO Review:
Ticket number: 2022062321000348, 2022062321000339, 2021111821000475, 2021112921000311, 2022032921000628, 2022092121000328, 2022092021000357, 2022091921000494, 2022091521000385, 2022091521000367, 2022091521000376, 2022091521000349
Bug group (optional): External feedback
Max CVSS v3 score:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Maximilian Janßen univentionstaff 2021-11-19 11:07:25 CET
Version: 4.4-8 errata1091 (Blumenthal) - UCS@school 4.4 v9

Error: 
Interner Server-Fehler in "computerroom/exam/finish".
Request: computerroom/exam/finish

Traceback (most recent call last):
  File "%PY2.7%/univention/management/console/base.py", line 359, in __error_handling
    six.reraise(etype, exc, etraceback)
  File "%PY2.7%/univention/management/console/base.py", line 262, in execute
    function.__func__(self, request, *args, **kwargs)
  File "%PY2.7%/univention/management/console/modules/computerroom/__init__.py", line 209, in _decorated
    return func(self, *args, **kwargs)
  File "%PY2.7%/univention/management/console/modules/decorators.py", line 321, in _response
    result = _multi_response(self, request)
  File "%PY2.7%/univention/management/console/modules/decorators.py", line 181, in _response
    return function(self, request)
  File "%PY2.7%/univention/management/console/modules/decorators.py", line 443, in _response
    return list(function(self, iterator, *nones))
  File "%PY2.7%/univention/management/console/modules/decorators.py", line 289, in _fake_func
    yield function(self, *args)
  File "%PY2.7%/univention/management/console/modules/computerroom/__init__.py", line 748, in finish_exam
    self._settings_set(printMode="default", internetRule="none", shareMode="all", customRule="")
  File "%PY2.7%/univention/management/console/modules/computerroom/__init__.py", line 209, in _decorated
    return func(self, *args, **kwargs)
  File "%PY2.7%/univention/management/console/modules/computerroom/__init__.py", line 817, in _settings_set
    self.reset_smb_connections()
  File "%PY2.7%/univention/management/console/modules/computerroom/__init__.py", line 951, in reset_smb_connections
    italc_users = [x.lower() for x in self._italc.users if x]
  File "%PY2.7%/univention/management/console/modules/computerroom/room_management.py", line 784, in users
    if x.user.current and x.connected()
  File "%PY2.7%/univention/management/console/modules/computerroom/room_management.py", line 118, in __getitem__
    self._read_user(user)
  File "%PY2.7%/ucsschool/lib/school_umc_ldap_connection.py", line 145, in wrapper_func
    return func(*args, **kwargs)
  File "%PY2.7%/univention/management/console/modules/computerroom/room_management.py", line 132, in _read_user
    username = self.validate_userstr(userstr)
  File "%PY2.7%/univention/management/console/modules/computerroom/room_management.py", line 124, in validate_userstr
    raise AttributeError("invalid key {!r}".format(userstr))
AttributeError: invalid key 'Administrator'
Comment 1 Christina Scheinig univentionstaff 2021-11-30 15:25:17 CET
This also occurs in a customer environment, when a teacher sets the internet rules. The rukes get applied but also the traceback pops up:

29.11.21 10:01:00.345  MAIN        ( ERROR   ) : Interner Server-Fehler in "computerroom/settings/set".
Request: computerroom/settings/set

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/univention/management/console/modules/decorators.py", line 321, in _response
    result = _multi_response(self, request)
  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/univention/management/console/modules/decorators.py", line 443, in _response
    return list(function(self, iterator, *nones))
  File "/usr/lib/python2.7/dist-packages/univention/management/console/modules/decorators.py", line 289, in _fake_func
    yield function(self, *args)
  File "/usr/lib/python2.7/dist-packages/univention/management/console/modules/computerroom/__init__.py", line 784, in settings_set
    return self._settings_set(printMode, internetRule, shareMode, period, customRule)
  File "/usr/lib/python2.7/dist-packages/univention/management/console/modules/computerroom/__init__.py", line 209, in _decorated
    return func(self, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/univention/management/console/modules/computerroom/__init__.py", line 940, in _settings_set
    self.reset_smb_connections()
  File "/usr/lib/python2.7/dist-packages/univention/management/console/modules/computerroom/__init__.py", line 951, in reset_smb_connections
    italc_users = [x.lower() for x in self._italc.users if x]
  File "/usr/lib/python2.7/dist-packages/univention/management/console/modules/computerroom/room_management.py", line 784, in users
    if x.user.current and x.connected()
  File "/usr/lib/python2.7/dist-packages/univention/management/console/modules/computerroom/room_management.py", line 118, in __getitem__
    self._read_user(user)
  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/computerroom/room_management.py", line 132, in _read_user
    username = self.validate_userstr(userstr)
  File "/usr/lib/python2.7/dist-packages/univention/management/console/modules/computerroom/room_management.py", line 124, in validate_userstr
    raise AttributeError("invalid key {!r}".format(userstr))
AttributeError: invalid key 'chrneuma'
Comment 2 Christina Scheinig univentionstaff 2021-12-03 09:39:19 CET
Same environment, but this traceback. The customerr wants to know, where this come from.

Interner Server-Fehler in "computerroom/exam/finish".
Request: computerroom/exam/finish

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/computerroom/__init__.py", line 209, in _decorated
    return func(self, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/univention/management/console/modules/decorators.py", line 321, in _response
    result = _multi_response(self, request)
  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/univention/management/console/modules/decorators.py", line 443, in _response
    return list(function(self, iterator, *nones))
  File "/usr/lib/python2.7/dist-packages/univention/management/console/modules/decorators.py", line 289, in _fake_func
    yield function(self, *args)
  File "/usr/lib/python2.7/dist-packages/univention/management/console/modules/computerroom/__init__.py", line 748, in finish_exam
    self._settings_set(printMode="default", internetRule="none", shareMode="all", customRule="")
  File "/usr/lib/python2.7/dist-packages/univention/management/console/modules/computerroom/__init__.py", line 209, in _decorated
    return func(self, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/univention/management/console/modules/computerroom/__init__.py", line 817, in _settings_set
    self.reset_smb_connections()
  File "/usr/lib/python2.7/dist-packages/univention/management/console/modules/computerroom/__init__.py", line 951, in reset_smb_connections
    italc_users = [x.lower() for x in self._italc.users if x]
  File "/usr/lib/python2.7/dist-packages/univention/management/console/modules/computerroom/room_management.py", line 784, in users
    if x.user.current and x.connected()
  File "/usr/lib/python2.7/dist-packages/univention/management/console/modules/computerroom/room_management.py", line 118, in __getitem__
    self._read_user(user)
  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/computerroom/room_management.py", line 132, in _read_user
    username = self.validate_userstr(userstr)
  File "/usr/lib/python2.7/dist-packages/univention/management/console/modules/computerroom/room_management.py", line 124, in validate_userstr
    raise AttributeError("invalid key {!r}".format(userstr))
AttributeError: invalid key 'exam-nadhepp'
Comment 3 Tobias Wenzel univentionstaff 2021-12-14 07:59:56 CET
AttributeError: invalid key 'Administrator'
AttributeError: invalid key 'chrneuma'

-> This looks like this is a local user, who is logged in on a computer which is
part of the computer room.

AttributeError: invalid key 'exam-nadhepp'

-> This looks like an exam-user, which is still logged from an exam before. 
When starting an exam, there is an option to reboot the clients.


=> try to logout all remaining users in the computer room before running UMC computer room operations 


I think we need to have more comprehensive responses from the UMC computer room,
e.g. a popup which says: there is a non-ldap-user logged in on a client in the computer room you are using. please log this person out while running UMC computer room operations.
Comment 4 Jürn Brodersen univentionstaff 2022-01-20 00:01:05 CET
*** Bug 52567 has been marked as a duplicate of this bug. ***
Comment 5 Jürn Brodersen univentionstaff 2022-01-20 00:15:39 CET
This can happen if the computer running italc could not connect to the domain controller. italc asks the dc for the first and last name to create the formatted username string. If the dc does not answer only the username without the brackets is returned and the "ITALC_USER_REGEX" regex in room_management.py doesn't work anymore.

How to reproduce:
- Login in to the italc pc
- Stop samba
- Stop any running computerroom umc modules
- Restart italk through the management console (to clean any caches)
- Open the computerroom module
- Only the username and not the first/last name should be shown as the pc user
- Editing the room setting (e.g. disable internet access) should now throw this error

Notes:
I suspect similar problems with veyon, but I have not tested it.

Relevant italc code:

lib/src/LocalSystem.cpp: void User::lookupFullName()
lib/include/LocalSystem.h: const QString &fullName()
Comment 6 Maximilian Janßen univentionstaff 2022-03-30 10:48:23 CEST
Version: 4.4-8 errata1204 (Blumenthal) - UCS@school 4.4 v9

Remark: Nach einer paedml Neuinstallation. erfolgt die Fehlermeldung, wenn auf einen PC irgendeine Aktion angewandt werden soll (Drucker Verbieten, Freigabeeinschränkung, Internetbeschränkung).

Error: 
Interner Server-Fehler in "computerroom/settings/set".
Request: computerroom/settings/set

Traceback (most recent call last):
  File "%PY2.7%/univention/management/console/base.py", line 359, in __error_handling
    six.reraise(etype, exc, etraceback)
  File "%PY2.7%/univention/management/console/base.py", line 262, in execute
    function.__func__(self, request, *args, **kwargs)
  File "%PY2.7%/univention/management/console/modules/decorators.py", line 181, in _response
    return function(self, request)
  File "%PY2.7%/univention/management/console/modules/decorators.py", line 321, in _response
    result = _multi_response(self, request)
  File "%PY2.7%/univention/management/console/modules/decorators.py", line 181, in _response
    return function(self, request)
  File "%PY2.7%/univention/management/console/modules/decorators.py", line 443, in _response
    return list(function(self, iterator, *nones))
  File "%PY2.7%/univention/management/console/modules/decorators.py", line 289, in _fake_func
    yield function(self, *args)
  File "%PY2.7%/univention/management/console/modules/computerroom/__init__.py", line 784, in settings_set
    return self._settings_set(printMode, internetRule, shareMode, period, customRule)
  File "%PY2.7%/univention/management/console/modules/computerroom/__init__.py", line 209, in _decorated
    return func(self, *args, **kwargs)
  File "%PY2.7%/univention/management/console/modules/computerroom/__init__.py", line 940, in _settings_set
    self.reset_smb_connections()
  File "%PY2.7%/univention/management/console/modules/computerroom/__init__.py", line 951, in reset_smb_connections
    italc_users = [x.lower() for x in self._italc.users if x]
  File "%PY2.7%/univention/management/console/modules/computerroom/room_management.py", line 784, in users
    if x.user.current and x.connected()
  File "%PY2.7%/univention/management/console/modules/computerroom/room_management.py", line 118, in __getitem__
    self._read_user(user)
  File "%PY2.7%/ucsschool/lib/school_umc_ldap_connection.py", line 145, in wrapper_func
    return func(*args, **kwargs)
  File "%PY2.7%/univention/management/console/modules/computerroom/room_management.py", line 132, in _read_user
    username = self.validate_userstr(userstr)
  File "%PY2.7%/univention/management/console/modules/computerroom/room_management.py", line 124, in validate_userstr
    raise AttributeError("invalid key {!r}".format(userstr))
AttributeError: invalid key 'Administrator'

Role: domaincontroller_master
Comment 7 Maximilian Janßen univentionstaff 2023-07-06 13:45:11 CEST
Remark: Ich kann die aktivierte Klassenaebeit nicht löschen. Hier kommt immer, dass wegen eines Fehlers nicht beendetwerden kann.