"新規フローチャートのサマリー情報が編集できない.PNG"というファイル名のファイルを添付するとos.open()で落ちる
添付ファイルを格納する際にファイル名を encode して格納します。その際にできあがる名前が長すぎるためです。
また、その場合に Windows があげてくる例外が実情を反映しない No such file or directory となります。 Linux であれば OSError: 36 File name too long などとなります。
そのファイル名だと encode 後のファイル名の部分だけで211文字あります。Windows ではファイル名の最大長は260文字です。
>>> s = u'新規フローチャートのサマリー情報が編集できない.PNG' >>> import urllib >>> urllib.quote(s.encode('utf-8')) '%E6%96%B0%E8%A6%8F%E3%83%95%E3%83%AD%E3%83%BC%E3%83%81%E3%83%A3%E3%83%BC%E3%83%88%E3%81%AE%E3%82%B5%E3%83%9E%E3%83%AA%E3%83%BC%E6%83%85%E5%A0%B1%E3%81%8C%E7%B7%A8%E9%9B%86%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84.PNG' >>> len(urllib.quote(s.encode('utf-8'))) 211
ところでどういう挙動を期待されていますか?
Trac 0.13 では添付ファイルパスが長くなり過ぎないようにファイル名の SHA-1 ハッシュを元にしたファイルパスで保存するようになります。 http://trac.edgewall.org/ticket/10313
ということで Trac の仕様なので直しようがありません。 Windows のパス長が短すぎるんです :(
別のファイル名にリネームしたら問題なく添付できる。
trac.logは下記のとおり。