現在位置: ホーム ブログ Ploneのissue tracker
ブログ

Ploneのissue tracker

Ploneは、イントラネットで使用する、プロダクトも豊富に存在する。
ドキュメント管理であれば、標準のアイテム(コンテンツタイプ)を使用するだけでも、十分に便利である。それに、Wiki(プロダクト名:ZWIKI)も簡単に導入できる。
それらを、効率よく「検索」できる仕組みも標準で入っており便利である。

イントラネットでプロジェクト管理などを行うためには、issue trackerが欲しくなる。
issue trackerの世界では、Pythonで書かれた、Tracというアプリケーションがよく使われている、Ploneなどのプラットフォームに依存せずに使用でき、Python界だけでなく使われている。ちなみに、Plone.orgのissue trackerはTracを使用しています。

Ploneのissue trackerプロダクトとして、Poiというプロダクトがあります。Tracの用になでもできます的な物ではなく、機能を絞り込んでいて使いやすい用に仕上がっています。

しかし、そのPoiで日本語の問題がありました。
ある文字列のイシューを作ろうとすると、エラーで作れないことがあります。同じような問題に、フランス語圏などの人も問題として抱えている感じがありました。

そこで、昨日、エラーの根本を探ることをしてみました。
問題は、メール送信する手前で、Descriptionを自動生成している部分があり、そこで'str'型のまま指定文字数まで切り出していました。そうすると日本語の途中で切り出されることがあり、エラーが発生するケースが存在したようです。結果としては、"str"から'unicode'に変換し文字を切り出すようにコード変更しました。(下記参照)

他にもエラーとなってメールを送信している部分があるようなので、それについては、また時間のあるときに追ってみたいと思います。


Pio/content/PoiIssue.py 412行目から

    def Description(self):
        """If a description is set manually, return that. Else returns the first
        200 characters (defined in config.py) of the 'details' field.
        """
        explicit = self.getField('description').get(self)
        if explicit:
            return explicit
        else:
            ##ここから既存コード
            ##details = self.getRawDetails()
            ##if len(details) > DESCRIPTION_LENGTH:
            ##    return self.getDetails()[:DESCRIPTION_LENGTH] + "..."
            ##else:
            ##    return details
            #下記に変更
            details = self.getDetails()
            if type(details) is not unicode:
                details = unicode(details)
            if len(details) > DESCRIPTION_LENGTH:
                return details[:DESCRIPTION_LENGTH] + "..."
            else:
                return details
            #ここまで

comments powered by Disqus