ASCII 以外の文字 (ドイツ語のウムラウトなど) を含むファイルを FTP 経由で Zope に (ZODB に) アップロードしようとすると、次のエラー メッセージが表示されます。
ERROR Zope.SiteErrorLog 1351502922.570.290289062967 http://0.0.0.0:8021/Zope2/websites/O%CC%88su%CC%88ra%CC%88ich.png/PUT
Traceback (innermost last):
Module ZPublisher.Publish, line 126, in publish
Module ZPublisher.mapply, line 77, in mapply
Module ZPublisher.Publish, line 46, in call_object
Module webdav.NullResource, line 173, in PUT
Module OFS.ObjectManager, line 325, in _setObject
Module OFS.ObjectManager, line 97, in checkValidId
BadRequest: The id "Ösüräich.png" contains characters illegal in URLs.
意味あり。ただし、PUT_factory を使用して、アップロードされたファイルがカスタム オブジェクト タイプの 1 つとして ZODB に追加されるようにしています。このクラスの__init__
で、ファイル名を Zope で有効な ID である文字列に変更します。self.__name__
この文字列に self.id を設定しましたが、エラーは残ります。
デバッグのために、私の最後の行で例外を発生させます__init__
raise Exception, self.id
これにより、正しい有効なIDが得られます。しかし、この最後の行を削除すると、上記のエラーが再び発生します。明らかに、新しいオブジェクトは作成されません (manage_afterAdd メソッドは呼び出されません)。
これを回避する方法はありますか、それとも私が対処しなければならない Zope の制限ですか?