python2.7にてredmineの日付書き込み時にバリデーションエラー
以下のような動作を予定としてプログラムを組みました。
1.redmineの機能を利用してcsvを取得する。
2.csvの内容をxlsmファイルへコピペする。
3.xlsmから情報をpythonの配列へ格納する。
4.RestAPIを利用し、pythonからredmineへデータを書き込んで保存する。
(2番までは手動で行う)
しかし、4番のpythonからredmineへデータを書き込んで
保存を行おうとした際にエラーとなってしまいます。
項目をそれぞれ切り分けていったところ、日付データの書き込みを
保存しようとした際にエラーとなっていることが分かりました。
書き込む日付情報のフォーマットを変更してみましたが上手くいかず…
redmineへ日付データの書き込みを可能とさせる型変換の方法を教えて頂けると有難いです。
以下、作成したプログラムと出力結果となります。
見辛いかもしれないですがよろしくお願いいたします。
■実行したスクリプト===============================
#coding:shift_jis
#■■■■■■■■■■■■■■■■■■データの格納処理
def ImportXLSM(id,RedmineDays):
redmine = Redmine('http://192.168.11.35',username='addmin',password='XXXX')
issue=redmine.issue.get(id)
issue.status_id=3
issue.due_date=RedmineDays
issue.save()
#■■■■■■■■■■■■■■■■■■
#初期素材準備
import xlrd
import datetime,re
from redmine import Redmine
FileName = 'ImportXLSM.xlsm'
BookName = xlrd.open_workbook(FileName)
SheetName = BookName.sheet_by_name('Sheet1')
#データ格納配列A、一時格納配列B
ListA=[]
ListB=[]
#カウント値、初期化
con00=0
con01=0
#エクセルファイルのヘッダーを除いた行の数だけ処理を実行
for row in range((SheetName.nrows)-1):
#エクセルファイルの列の数だけ配列へ格納(1つのチケットの情報分)
while con01 != 70:
ListB.append(SheetName.cell_value(con00+1,con01))
con01 = con01 + 1
#チケット情報を持つ配列Bを配列Aの要素として格納
ListA.append(ListB)
ListB=[]
con00 = con00 + 1
con01 = 0
#シリアル値から日付に変換(例として配列から期限日付を取得しています。)
RedmineDays = ListA[0][50]
RedmineDays = datetime.date(1900,1,1)-datetime.timedelta(1) + datetime.timedelta(RedmineDays-1)
print RedmineDays
print type(RedmineDays)
#配列の情報をredmineへ書き込む
ImportXLSM(826,RedmineDays)
■出力されるエラー===============================
C:\Users\PC_USER01\Desktop>python test.py
2016-06-08
<type 'datetime.date'>
Traceback (most recent call last):
File "test.py", line 48, in <module>
ImportXLSM(826,RedmineDays)
File "test.py", line 10, in ImportXLSM
issue.save()
File "C:\Python27\lib\site-packages\redmine\resources.py", line 252, in save
self.manager.update(self.internal_id, **self._changes)
File "C:\Python27\lib\site-packages\redmine\managers.py", line 239, in update
return self.redmine.request('put', url, data=data)
File "C:\Python27\lib\site-packages\redmine\__init__.py", line 145, in request
raise ValidationError(to_string(', '.join(e if is_string(e) else ': '.join(e
) for e in errors)))
redmine.exceptions.ValidationError: 譛滓律 繧帝幕蟋区律繧医j蠕後↓縺励※縺上□縺輔>縲