Bug 20270 - Verteilen von Dateien mit Umlauten funktioniert nicht
Verteilen von Dateien mit Umlauten funktioniert nicht
Status: CLOSED FIXED
Product: UCS@school
Classification: Unclassified
Component: UMC - Distribution
UCS@school for UCS 2.3
Other Linux
: P2 normal (vote)
: UCS@school UCS 2.X
Assigned To: Sönke Schwardt-Krummrich
Felix Botner
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2010-10-05 17:04 CEST by Janis Meybohm
Modified: 2023-03-25 06:42 CET (History)
5 users (show)

See Also:
What kind of report is it?: ---
What type of bug is this?: ---
Who will be affected by this bug?: ---
How will those affected feel about the bug?: ---
User Pain:
Enterprise Customer affected?:
School Customer affected?:
ISV affected?:
Waiting Support:
Flags outvoted (downgraded) after PO Review:
Ticket number:
Bug group (optional):
Max CVSS v3 score:


Attachments
Workaround für Bug 20270 (UCS@school 2.4 & 2.3) (2.43 KB, patch)
2010-10-13 14:58 CEST, Sönke Schwardt-Krummrich
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Janis Meybohm univentionstaff 2010-10-05 17:04:12 CEST
Ticket#: 2010100410002489

Dateien mit Umlauten im Namen werden nicht an die Schüler ausgeteilt, es gibt aber keine für den Anwender sichtbaren Fehlermeldungen. Beim Einsammeln gibt es dann allerdings Fehlermeldungen in der UMC:
---
Ein Fehler ist beim Einsammeln der Dateien aufgetreten (exitcode: 1)
Ein Fehler ist beim Entfernen der Deadline aufgetreten (exitcode: 1)
---

Sowie einen Traceback in der "/var/log/univention/management-console-module.log":
---
04.10.10 09:23:32  ADMIN       ( ERROR   ) : .../distribution/__init__.py:446:
 distribution_project_collect_return: cmd umc-distribution-collect returned (std
 err):
 Traceback (most recent call last):
   File "/usr/lib/ucs-school-umc-distribution/umc-distribution", line 427, in ?
     main()
   File "/usr/lib/ucs-school-umc-distribution/umc-distribution", line 407, in main
     collectData( project )
   File "/usr/lib/ucs-school-umc-distribution/umc-distribution", line 328, in collectData
     if os.path.isfile( src ):
   File "/usr/lib/python2.4/posixpath.py", line 208, in isfile
     st = os.stat(path)
 UnicodeEncodeError: 'ascii' codec can't encode character u'\xe4' in position 59: ordinal not in range(128)
---

Das betroffene System läuft mit UTF-8 locale:
# ucr search locale
 locale/default: de_DE.UTF-8:UTF-8
 locale/keymap: de-latin1
 locale: de_DE.UTF-8:UTF-8


Das Problem ist auch mit UCS 2.4 noch reproduzierbar, Logs kommen gleich von Andreas.
Comment 1 Andreas Büsching univentionstaff 2010-10-05 17:10:30 CEST
(In reply to comment #0)
> Das Problem ist auch mit UCS 2.4 noch reproduzierbar, Logs kommen gleich von
> Andreas.

Das wiederholt sich für jeden Schüler an den die Datei verteilt werden soll.

29.09.10 18:22:46  ADMIN       ( ERROR   ) : ...ribution/umc-distribution:261: failed to copy "/var/lib/ucs-school-umc-distribution/test.data/äbla.txt" to "/home/anton11/Unterrichtsmaterial/test/äbla.txt": 'ascii' codec can't encode character u'\xe4' in position 47: ordinal not in range(128)
UNIVENTION_DEBUG_BEGIN  : admin.handlers.base.__getitem__ key = uidNumber
UNIVENTION_DEBUG_END    : admin.handlers.base.__getitem__ key = uidNumber
UNIVENTION_DEBUG_BEGIN  : admin.handlers.base.__getitem__ key = gidNumber
UNIVENTION_DEBUG_END    : admin.handlers.base.__getitem__ key = gidNumber
29.09.10 18:22:46  ADMIN       ( ERROR   ) : ...ribution/umc-distribution:265: failed to chown "/home/anton11/Unterrichtsmaterial/test/äbla.txt": 'ascii' codec can't encode character u'\xe4' in position 39: ordinal not in range(128)
Comment 2 Stefan Gohmann univentionstaff 2010-10-13 08:52:56 CEST
Mein Status ist, dass das Problem auch unter 2.2 bereits auftritt. Bitte einen Patch für UCS 2.3 und UCS 2.4 bereitstellen.

Der Bug sollte für das nächste Update vorgesehen werden.
Comment 3 Sönke Schwardt-Krummrich univentionstaff 2010-10-13 14:58:08 CEST
Created attachment 2751 [details]
Workaround für Bug 20270 (UCS@school 2.4 & 2.3)

Ja, der Fehler tritt in UCS@school 2.2 auch schon auf.

Problem ist, dass das UMC-Modul und deren Unterprozesse ohne Environment und damit mit nicht gesetzter LANG bzw. LC_ALL Variable gestartet werden. Python fällt dann auf ASCII als Defaultlocale zurück. Wenn die Unicode-Dateinamen (mit Umlauten) vom Frontend dann in die Defaultlocale umgewandelt werden sollen (ASCII) gibt es den oben gelisteten Decoding-Error.

Der angehängte Patch gibt den übergebenen Dateinamen an die shutil-Methoden weiter, nachdem er über str() von Unicode in eine Bytefolge umgewandelt wurde.

Getestet wurde mit einem UTF-8-UCS@school-SingleMaster. Als Browser sind Firefox und Konqueror zum Einsatz gekommen. Es wurde LANG entsprechend vor dem Aufruf des Browsers bzw. des Anlegens der Datei gesetzt.

Browser            Dateiname auf Client    ==>    Ergebnis auf Server
de_DE.UTF-8        UTF-8                   ==>    UTF-8 (ok)

de_DE.ISO-8859-15  UTF-8 (Dateiname hier   ==>    UTF-8 (Dateiname kaputt, 
                   schon kaputt angezeigt)        Übertragung erfolgreich)
de_DE.ISO-8859-15  de_DE.ISO-8859-15 (ok)  ==>    UTF-8 (ok)

Sofern Browser-Locale und Locale des Dateisystems übereinstimmen, sollte die Anzeige des Dateinamens jetzt korrekt sein. Die Übertragung der Datei funktioniert jetzt mit dem Distribution-Modul.
Comment 4 Sönke Schwardt-Krummrich univentionstaff 2010-10-13 15:08:12 CEST
Einspielen des Patches in das laufende System sollte über folgende Befehlssequenz funktionieren:
$ cd /usr/lib/ucs-school-umc-distribution/
$ patch -p4 < bug20270.patch
Comment 5 Philipp Hahn univentionstaff 2010-10-13 16:21:04 CEST
(In reply to comment #4)
> Einspielen des Patches in das laufende System sollte über folgende
> Befehlssequenz funktionieren:
> $ cd /usr/lib/ucs-school-umc-distribution/
> $ patch -p4 < bug20270.patch

Bevor es zum Problem wird, daß der Patch nach dem "cd" nicht mehr im aktuellen Verzeichnis liegt, hier ein Hinweis zu den "-i" und "-d" Optionen von patch:

patch -d /usr/lib/ucs-school-umc-distribution -p4 -i bug20270.patch
Comment 6 Janis Meybohm univentionstaff 2010-10-14 13:54:56 CEST
(In reply to comment #3)
> Created an attachment (id=2751) [details]
> Workaround für Bug 20270 (UCS@school 2.4 & 2.3)

Ein Kunde hat den Patch erfolgreich getestet. Ticket#: 2010100410002489
Comment 7 Sönke Schwardt-Krummrich univentionstaff 2011-03-10 16:06:35 CET
Der am Bug hängende Patch wurde mit Ausnahme einer kleinen Anpassung 1zu1 übernommen. ucs-school-umc-distribution wurde neu gebaut. Fixed.
Comment 8 Felix Botner univentionstaff 2011-03-14 10:59:19 CET
OK, Verteilen und Einsammeln von Dateien mit Umlauten im Namen funktioniert (getestet mit ucsschool hotfix für 2.4).