メールの内容を Python で mantis に自動登録 その5



メールに添付されているファイルもmantisに登録するため、
mantisconnectを使用してファイルをアップロードします。

ソースはこんな感じです。


import MantisConnect_services
import MantisConnect_services_types

mc = MantisConnect_services.MantisConnectLocator().getMantisConnectPortType()

issue_data = MantisConnect_services_types.ns0.IssueData_Def(None)
project = MantisConnect_services_types.ns0.ObjectRef_Def(None)

#登録するプロジェクトを指定
project._id = 1
issue_data._project = project

#カテゴリ
issue_data._category = "カテゴリ1"
#タイトル
issue_data._summary = "アップデートテスト"
#本文
issue_data._description = "案件の本文です。"


req = MantisConnect_services.mc_issue_addRequest()
req._username = "administrator"
req._password = "root"

req._issue = issue_data

#案件登録実行
r = mc.mc_issue_add(req)

print "issue_id = " + str(r._return)

attach = MantisConnect_services.mc_issue_attachment_addRequest()

#アップロードするファイルをオープン
f = Open('attach.txt','rb').read()
attach._username = "administrator"
attach._password = "root"
attach._issue_id = r._return
attach._name = "attach.txt"
attach._file_type = "'text/plain'"
attach._content = f

r = mc.mc_issue_attachment_add(attach)


アップロードできた!と喜んでいたのですが、落とし穴が・・・

このままだと、ファイルの内容が文字化けして登録されているはずです。

これを解消するためには、
MantisConnect_services.py
mc_issue_attachment_addRequest.typecode
に、SOAP通信時のデータ型の記述があるかと思います。
ここの
typed=False
となっている箇所を
typed=True
と書き直してやれば、解決します。

なんで、生成時の初期値がFalseなんだろ?


メール受信のソースととこの登録用のソースを組み合わせて、
cronとかで自動実行するようにしておけば、メールから
mantisへの自動登録が実現できます。



もどる