Univention Bugzilla – Bug 15556
Fehler in LocalizedDictionary.get()
Last modified: 2009-12-21 08:46:04 CET
Ist für einen Schlüssel eine Übersetzung vorhanden, aber nicht die gewünschte, so gibt bspw. LocalizedDictionary.get() immer None, anstatt dem gewünschten default-Wert zurück, wenn keine vorhandene Übersetzung gewünscht ist: /etc/univention/registry.info/variables/univention-samba.cfg: ... [samba/debug/level] Description[de]=Debug Level für Samba Prozesse Type=str Categories=service-samba ... import univention.config_registry_info as cri cri.set_language ('en') c = cri.ConfigRegistryInfo () v = c.get_variable ('samba/debug/devel') print v.get('description', 'no description available')
Korrektur: Der Rückgabewert ist nicht immer None, aber im Allgemeinen auch nicht der gewünschte Defaultwert
Im UMC-UCR-Modul von 2.3 wird die Kategorie "service-samba" nicht angezeigt, obwohl sie definiert ist. Ist dieser Bug die Ursache dafür?
Das sollten wir prüfen. In UMC fehlt im Moment die Kategorie Samba.
(In reply to comment #2) > Im UMC-UCR-Modul von 2.3 wird die Kategorie "service-samba" nicht angezeigt, > obwohl sie definiert ist. Ist dieser Bug die Ursache dafür? Das lag daran, dass die Kategorie Definition nicht im Paket enthalten war. Das ist jetzt gefixt.
__getitem__ wirft jetzt eine KeyError Exception, wenn der Key nicht existiert. In diesem Fall gibt get dann den default Wert zurück. Soll hierzu ein ChangeLog Eintrag erstellt werden?
Changelog Eintrag ist jetzt auch vorhanden.
Wenn ich die Info einer UCR Variable in einer Sprache haben will, für die es keine Übersetzung gibt, bekomme ich nichts zurück (also nicht den default): import univention.config_registry_info as cri cri.set_language ('fr') c = cri.ConfigRegistryInfo () v = c.get_variable ('samba/serverstring') print v.get('description', 'no description available') Sollte hier nicht der default angezeigt werden? Wenn ich per UMC nach allen Variablen (in allen Kategorien Suche), knallt es ebenfalls: Die Ausführung des Kommandos 'baseconfig/search' ist fehlgeschlagen: Traceback (most recent call last): File "/usr/lib/python2.4/site-packages/univention/management/console/handlers/__init__.py", line 118, in _exec_if func( *args ) File "/usr/lib/python2.4/site-packages/univention/management/console/handlers/baseconfig/_revamp.py", line 95, in _web_baseconfig_search if var[ 'description' ]: File "/usr/lib/python2.4/site-packages/univention/info_tools.py", line 98, in __getitem__ raise KeyError( key ) KeyError: 'description'
(In reply to comment #7) > Wenn ich die Info einer UCR Variable in einer Sprache haben will, für die es > keine Übersetzung gibt, bekomme ich nichts zurück (also nicht den default): > > import univention.config_registry_info as cri > cri.set_language ('fr') > c = cri.ConfigRegistryInfo () > v = c.get_variable ('samba/serverstring') > print v.get('description', 'no description available') > > Sollte hier nicht der default angezeigt werden? Ja, ist jetzt korrigiert. > Wenn ich per UMC nach allen Variablen (in allen Kategorien Suche), knallt es > ebenfalls: Ist auch angepasst.
get) OK -> import univention.config_registry_info as cri -> cri.set_language ('fr') -> c = cri.ConfigRegistryInfo () -> v = c.get_variable ('version/version') -> print v.get('description', 'no description available') <- no description available UMC) OK Suche nach allen Variablen klappt service-samba) OK Im UMC wird die Kategorie Services for Windows angezeigt. Changelog Eintrg) OK
UCS 2.3 wurde veröffentlicht. Sollte der hier beschriebene Bug mit einer neueren Version von UCS erneut auftreten, so sollte der Bug dupliziert werden: "Clone This Bug".